Android3系列 -4.事件机制及处理方式(附工程文件下载) .

来源:互联网 发布:天融信应届生工资 知乎 编辑:程序博客网 时间:2024/05/17 21:06

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) {//显示EventTest1Intent it=new Intent(this,EventTest1.class);startActivity(it);}//按钮2事件private void btn2_click(View v) {//显示EventTest2Intent 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

原创粉丝点击