这个知识很基础也很简单,仅以此作为一个开始吧。
在窗口(activity)上面放3个控件,布局随意。在这个例子中,我们要实现的功能是给2个按钮分别加上点击事件,使之改变文本框的背景颜色。
下面是全部代码:
//1
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//2 获取控件
final TextView text = (TextView)this.findViewById(R.id.main_view1);
final Button btn1 = (Button)this.findViewById(R.id.main_btn1);
final Button btn2 = (Button)this.findViewById(R.id.main_btn2);
//添加事件
//3
btn1.setOnClickListener(new OnClickListener(){
//4
public void onClick(View v) {
//5
text.setBackgroundColor(Color.RED);
}
});
btn2.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
text.setBackgroundColor(Color.GREEN);
}
});
}
下面按照代码中标记的数字进行逐一讲解。
1:onCreate函数是activity创建后首先被调用的函数,选择在这个函数里给控件添加代码应该是一种比较通用的做法,这样当activity显示在手机屏幕上的时候,控件就可以响应事件了。
onCreate函数式SDK中Activity类中定义的方法,在自己的activity中对父类的这个方法进行了重写。
2:findViewById()通过控件id获取到控件实例。一个应用中任何控件的id都是唯一的。findViewById()也是父类Activity中定义的一个方法。
需要注意final关键字,下面定义的内部类调用了这些实例,因为语法的要求,所以需要在变量前加上final。
3:setOnClickListener()是按钮控件的一个方法,用这个给按钮添加点击事件。函数需要传入OnClickListener类的实例,此处使用java语言的一个基础性特性-匿名内部类(如不太了解,请查阅相关资料)。
使用匿名内部类是定义控件事件的一种方法,还有别的方法可以使用,如果可能,将会在后续的文章中说明。
4:OnClickListener是个接口,new OnClickListener从语法上看好像实例化一个接口,这也是匿名内部类的一个特性。有一个前提是,需要实现接口里的所有方法。
这里实现的方法onClick()就是书写事件处理代码的地方。
5: 通过文本框(text)的setBackgroundColor给它设置1个背景颜色。Color.RED是预定义的颜色,对于简单的颜色,可以直接调用。
按钮2的事件代码与按钮1形式完全相同,它完成的功能是给文本框设置另一种不同的背景颜色。
事件结构就是这样的,格式是固定的。在onClick()函数面可以编写自己希望实现的功能,任意发挥自己的创造力,如果你有的话。