对于android应用程序,控件称为View,在处理UI中各种元素的时候,两个程序中的要点为:
(1)得到布局文件(xml)中的控件句柄
(2)设置控件的行为
句柄通常是用函数findViewById根据控件的id来获得对应控件的句柄的,设置响应是通过监听来实现的。
常见的响应方式有3种:
(1)第一种是在Activity组件中的onCreate()函数中直接定义,直接动作。
Button mButton = (Button) findViewById(R.id.button1);
mButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Doing something;
}
});
这里使用R.id.button1等和布局文件中各个元素的id是对应的。实际上,在布局文件中,各个控件即使不写android:id这一项也可以正常显示,但是需要在代码中控制则必须设置这一项。
(2)第二种是在Activity组件中实现OnClickListener()接口,也就是需要实现其中的 onClick()方法。然后通过 setOnClickListener()将其设置到按钮中的 参数就是 this,表示了当前的活动。
public class XmlAnimation001Activity extends Activity implements OnClickListener {
private ImageView iv;
private ImageView iv2;
private ImageView iv3;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
fButton mButton = (Button)findViewById(R.id.button1);
mButton.setOnClickListener(this);
}
public void onClick(View v) {
Doing something;
}
}
(3)第三种类似第二种,但能实现多个监听接口。
public class TestEvent3 extends Activity{
private TextView mText;
private Button1_OnClickListener mListener1 = new
Button1_OnClickListener();
private Button2_OnClickListener mListener2 = new
Button2_OnClickListener();
public TestEvent3() {
}
class Button1_OnClickListener implements
OnClickListener { // 接口的第一个实现
public void onClick(View v) {
mText.setBackgroundColor(Color.RED);
}
}
class Button2_OnClickListener implements
OnClickListener { // 接口的第一个实现
public void onClick(View v) {
mText.setBackgroundColor(Color.GREEN);
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.testevent);
final Button mButton1 = (Button)
findViewById(R.id.button1);
final Button mButton2 = (Button)
findViewById(R.id.button2);
mButton1.setOnClickListener(mListener1); // 设置监听者的类
mButton2.setOnClickListener(mListener2); // 设置监听者的类
}
}
通过定义实现活动类中的 2 个子类,来实现 View.OnClickListener 这个接口,这种方式是一种最为直接的方式,即为不同的控件单独实现它的相应类。