Android 事件处理
1 事件处理概述
为用户动作提供响应的机制就是
事件处理
Android提供了两套强大的事件处理机制:
1.基于监听的事件处理
2.基于回调的事件处理
对于 Android 基于监听的事件处理而言,主要做法就是为 Android界面组件绑定特定的事件监听器。
对于 Android 基于回调的事件处理而言,主要做法就是重写 Android 组件特定的回调方法,或者重写 activity 的回调方法,Android 为绝大部分界面组件提供了时间响应的回调方法,开发者只要重写它们即可。
2 基于监听的事件处理
2.1监听的处理模型
在事件监听的处理模型中,主要涉及如下三类对象。
Event Source(事件源): 事件发生的场所,通常就是各个组件,例如按钮、窗口、菜单等。
Event(事件):事件封装了界面组件上发生的特定事情(通常就是一次用户操作)。如果程序需要获得界面组件上所发生的事件的相关信息,一般通过 Event 对象来取得。
- Event Listener(事件监听器):负责监听事件源所发生的事件,并对各种事件做出相应的响应。
在程序中实现事件监听器,通常有如下几种形式
内部类形式:将事件监听器类定义成当前类的内部类。
外部类形式:将事件监听器类定义成一个外部类。
Activity 本身作为事件监听器类:让 Activity 本身实现监听器接口,并实现事件处理方法。
匿名内部类形式:使用匿名内部类创建事件监听器对象。
- 2.1.1内部类形式
public class MainActivity extends Acivity{ @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); Button bn=(Button) findViewById(R.id.bn); //为按钮绑定事件监听器, 将继承 xxxListener 的类进行实例化,作为参数。 bn.setOnClickListener(new MyClickListener()); } //定义一个单机事件的监听器,要继承 xxxListener,重写onClick方法 class MyClickListener implements View.OnClickListener{ @Override public void onClick(View v){ `````````` ````````` } }}
- 2.1.2Activity 本身作为事件监听器类
public class MainActivity extends Acivity{ @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); Button bn=(Button) findViewById(R.id.bn); bn.setOnClickListener(this); } @Override public void onClick(View v){ ````` ````` }}
- 2.1.3匿名内部类作为事件监听器类
public class MainActivity extends Acivity{ @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); Button bn=(Button) findViewById(R.id.bn); bn.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v){ `````` `````` } }); }}
- 2.1.4 直接绑定到标签页
Android还有一种更简单的绑定事件监听器的方式,那就是直接在界面布局文件中为指定标签绑定事件处理方法
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="点击" android:onClick="clickHandler" />
上面程序为 Button 按钮绑定了一个事件处理方法:clickHanlder,这就意味着开发者需要在该界面布局对应的 Activity 中定义一个void clickHanlder(View source)方法,该方法将会负责处理该按钮上的单击事件。
public class MainActivity extends Acivity{ @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); } public void clickHandler(View source){ ``` ``` }}
关于 Android的事件的事件处理,我还有许多地方没有写到。本人只是提到些许而已!
更多相关文章
- android 事件分发机制详细解析
- Android之事件响应的两种模型分析
- android 屏幕监听滑动事件
- android inputmanager中事件的传递流程
- android ListView嵌套checkbox并取代checkbox点击事件
- EventBus 《三》 事件的具体用法及其讲解
- Android事件处理分析+Android事件处理 +Android输入事件流程
- (一)Android事件分发机制 - View篇
- Android事件分发/传递机制总结