首页 > 代码库 > Android从无知到有知——NO.2

Android从无知到有知——NO.2

           这几天虽说偶遇瓶颈,但也渐入佳境,由于之前没有接触过android,所以作为一个新手不会给自己过高的要求。相比于去年做的分布式资源检索,今年的移动开发着实要简单一些,虽然其本质没有太大的区别,但从用户体验方面来说更能激发每一位学习者的兴趣,这可能就是android的魅力所在吧...

         前天做的“电话拨号器”,最后加载到模拟器的时候不知道哪里出了错,系统总是自动关闭,恼羞成怒也就没再搭理它;昨天又做了“短信发送器”,也遇到了和前者相似的问题,不过最后经过调试算是研制成功了吧,因此调整了前者,相同的解决方案,外瑞古德~~~那接下来就以“短信发送器”为例谈谈自己的一些学习心得吧...

         首先上图一张:

         咱先来说说这个短信发送器的基本构造,大家从上图也可看出,其大体可分为五部分,其实也就是两条提示+两个输入框,还有一个发送按钮。那么这五部分是怎么出来的,先来看一小段代码:        

<EditText        android:id="@+id/et_word"        android:lines="5"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_below="@id/tv_ism"        android:layout_centerVertical="true"        android:inputType="textMultiLine" ></EditText>

         这块代码是定义短信输入框的,最上边的"@+id/et_word”是在R.java文件中添加一个名为et_word的id,也就是声明了我们这个输入框;lines=“5”规定了这个输入框为五行,这个长度一般可以满足我们的需求;而下边的四个layout属性定义了这个文本框的长宽和相对位置,其属性值大家可以好好了解一下,都很有意思,其中第三个的意思是文本框的位置在id为tv_ism的下方,而tv_ism便是我们所看到的“请输入短信内容”;最后定义了短信输入框的类型。其他几块内容都和其类似,当然还有很多的属性,大家可以查看其API了解一下。

         UI设计的相对简陋,还望大家多多包涵,接下来就是赋予其相应的功能了,再上代码一大块:

          

public class MainActivity extends Activity implements OnClickListener {    		private EditText et_word;	private EditText et_number;    @Override       protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);         et_number=(EditText)findViewById(R.id.et_number);         et_word=(EditText)findViewById(R.id.et_word);        Button bt_sent=(Button)findViewById(R.id.bt_sent);        bt_sent.setOnClickListener(this);    }	@Override	public void onClick(View v) {		switch (v.getId()) {		case R.id.bt_sent:			 String word=et_word.getText().toString().trim();			 String number=et_number.getText().toString().trim();			 if(TextUtils.isEmpty(word)||TextUtils.isEmpty(number)){				 Toast.makeText(this, "电话号码或者短信内容不能为空", Toast.LENGTH_SHORT).show();				 return;			 }else{				 SmsManager smsManager=SmsManager.getDefault();				 ArrayList<String> words=smsManager.divideMessage(word);				 for(String str:words){				 smsManager.sendTextMessage(number, null, str, null, null);			     }			 }			break;		}			}   }

         我们先从实际出发,要想使短信发送器能够发送短信,首先要找到发送按钮,但我们点击按钮时,系统会找到短信内容和想要发送的号码,然后实现其功能,大体上也就是分为这三步。

         于是乎我们先找到按钮:Button bt_sent=(Button)findViewById(R.id.bt_sent); bt_sent.setOnClickListener(this);这里边涉及了几个常用的方法,大家看其表面意思也能了解,先通过id找到按钮,然后调用其方法设定点击事件;下边的onClick(View  v)为接口OnClickListener的实现方法,当的得到的id为R.id.bt_sent时执行一系列的操作;上边的et_number、et_word和bt_sent是一样的,先通过id找到他们,然后利用他们自身的方法提取电话号码和短信内容;接下来就是判断电话号码或者短信内容是否为空,相信大家都有这样的常识,二者有一方为空则不能发送短信;关于Toast大家可以去查一查,翻译成中文为“吐丝面包”,它主要是给用户一个提示,它调用的方法有三个参数,这个一开始不大好理解,不过通过该例大家也能猜出它的大概意思,其中第三个参数为显示时长,最后不要忘了调用Toast的show()返回值。如果号码或内容不为空的话那就执行else里的语句,提取短信内容,如果发送内容过长,超过规定的70个汉字或者160个字符便对其进行分段,这时要用到ArrayList<String> words=smsManager.divideMessage(word);然后对其进行遍历,smsManager.sendTextMessage(number, null, str, null, null);这里边有五个参数,第一个为要发送的联系人电话号码;第二个为短信来自哪里,现在我国的运行商不支持这个功能;第三个为发送的短信内容;第四个参数负责报告短信是否发送成功;第五个为是否发送送达报告,这个现在先不用管,都可设为null。

         还需要注意的一点就是SmsManager smsManager=SmsManager.getDefault();这条语句,它之前默认导入的包已经过期,所以需要导入新的包,这个到时候会有提示。
         ok,这样一个简易的短信发送器便搭建完成了,启动两个模拟器便可进行实验,就如上图所示,发送短文本和长文本的区别也一目了然。今天将继续深入了解四种布局,UI时代到来,敬请期待……