Android的事件沿用了Java的事件机制,
设计者:控件类+事件接口
使用者:实现事件接口+注册事件
核心还是多态:下图简单演示java事件机制
在Android编程中事件处理方式可以使用以下几种方式:
1.使用Activity子类本身:
//实现android.view.View.OnClickListener接口
public class AndroidEvent extends Activity implements OnClickListener {
@Override
public void onCreate(Bundle savedInstanceState) {
//.....
findViewById(R.id.main_btn1).setOnClickListener(this);//注册事件
}
public void onClick(View v) {
//事件处理程序
}
}
⑴.AndroidEvent Activity 实现单击事件接口
⑵ 在AndroidEvent内部编写OnClick事件处理程序
⑶获取控件注册事件
完整个示例:
//实现android.view.View.OnClickListener接口
public class AndroidEvent extends Activity implements OnClickListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewById(R.id.main_btn1).setOnClickListener(this);//注册事件
findViewById(R.id.main_btn2).setOnClickListener(this);
}
public void onClick(View v) {
//事件处理程序
switch (v.getId()) {
case R.id.main_btn1:
btn1_click(v);
break;
case R.id.main_btn2:
btn2_click(v);
break;
default:
break;
}
}
//按钮1事件
private void btn1_click(View v) {
//显示EventTest1
Intent it=new Intent(this,EventTest1.class);
startActivity(it);
}
//按钮2事件
private void btn2_click(View v) {
//显示EventTest2
Intent it=new Intent(this,EventTest2.class);
startActivity(it);
}
}
2.使用匿名对象来处理
//声明匿名事件处理对象
private OnClickListener btnClickListener=new OnClickListener() {
//事件处理程序
public void onClick(View v) {
}
};
//......
findViewById(R.id.test1_btn1).setOnClickListener(btnClickListener);//注册事件
完整示例:
public class EventTest1 extends Activity {
//声明匿名事件处理对象
private OnClickListener btnClickListener=new OnClickListener() {
//事件处理程序
public void onClick(View v) {
switch (v.getId()) {
case R.id.test1_btn1:
btn1_click(v);
break;
case R.id.test1_btn2:
btn2_click(v);
break;
default:
break;
}
}
};
private TextView txt1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.eventtest1);
findViewById(R.id.test1_btn1).setOnClickListener(btnClickListener);//注册事件
findViewById(R.id.test1_btn2).setOnClickListener(btnClickListener);//注册事件
txt1=(TextView) findViewById(R.id.test1_txt1);
}
//按钮1事件
private void btn1_click(View v) {
txt1.setText("这是点击Test1的事件.");
}
//按钮2事件
private void btn2_click(View v) {
txt1.setText("这是点击Test2的事件.");
}
}
3.直接使用匿名对象事处理(和2差不多,一般用于少量代码处理)
//注册事件
findViewById(R.id.test2_btn1).setOnClickListener(new OnClickListener() {
//事件处理
public void onClick(View v) {
}
});
完整示例:
public class EventTest2 extends Activity {
private TextView txt1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.eventtest2);
txt1=(TextView) findViewById(R.id.test2_txt1);
//注册事件
findViewById(R.id.test2_btn1).setOnClickListener(new OnClickListener() {
//事件处理
public void onClick(View v) {
txt1.setText("这是点击Test1的事件.");
}
});
//注册事件
findViewById(R.id.test2_btn2).setOnClickListener(new OnClickListener() {
//事件处理
public void onClick(View v) {
txt1.setText("这是点击Test2的事件.");
}
});
}
}
工程已上传,下载路径:http://download.csdn.net/user/Lijun7788