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

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

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值