我的Android应用学习笔记(三)回调事件处理和监听事件处理

原创
2015/02/04 23:12
阅读数 85

Android 事件处理分为回调事件处理和监听事件处理两类

 

(一)回调事件处理:

当用户操作激发某事件时由事件源自身的处理方法来处理该事件,往往通过重写View组件来实现

 

事件(Event):用户的某个操作所携带的信息

事件源(EventSource):产生事件的源头,通常是一些可视化的组件(如Button)

监听器(EventListener):监听事件发生与响应事件的机制

 

例如(重写一个Button类):

public class ExButton extends Button{

	public ExButton(Context context, AttributeSet attrs) {
		super(context, attrs);
		// TODO 自动生成的构造函数存根
	}
	
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		// TODO 自动生成的方法存根
		this.setText("it has been clicked");
		return true;
	}

}



直接在布局文件中应用该组件:

<com.example.test.ExButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="a Button"
        />



回调事件处理的传播问题:

回调事件处理需要返回一个boolean值,当返回时true时,表示处理方法已经完全处理该事件,事件不会传播;

当返回是false时,事件未处理完全,会传播

传播顺序为:监听器→组件提供的回调方法→组件所在的Activity

其中任何一个返回true,中断处理

 

(二)监听器事件处理

类似于Java中AWT和Swing编程的时间处理机制

三要素:事件源,事件,事件监听器

核心:实现事件监听器

 

需要事件(Event)对象的情况:当事件发生时有比较多的信息需要传给事件监听器时,则将信息封装成Event对象,

将Event对象传递给事件处理函数。

 

监听器(Listener)的几种形式:

1)匿名内部类:

使用最广泛,直接在将事件监听器注册给事件源时(view.setOnXxxListener(new OnXxxListener))创建匿名内部类形式

事件监听器

例子:

button.setOnClickListener(new OnClickListener(){
        	@Override
        	public void onClick(View _view){
        		Intent intent=new Intent(MainActivity.this,secondActivity.class);
        		startActivity(intent);
        	}
        });



2)内部类:

例如:

button.setOnClickListener(new ExClickListener());

class ExClickListener implements View.OnClickListener{}



3)外部类:

在外部实现一个监听器接口,由于与GUI界面不耦合,一般不使用

 

4)Activity本身实现Listener接口:

直接在Activity内写事件处理方法

 

5)在XML中写事件监听:

android:onClick="事件处理方法"


  

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部