标签:
作者:郭孝星
微博:郭孝星的新浪微博
邮箱:allenwells@163.com
博客:http://blog.csdn.net/allenwells
Github:https://github.com/AllenWells
事件处理:不管是桌面应用还是手机应用都需要去响应用户的动作,这种为用户动作提供响应的机制就是事件处理。
Android提供了两套事件处理机制,如下所示:
一般来说,基于回调的事件处理可用于处理一些通用性的事件,但对于某些特定的事件只能使用基于监听的事件处理。而且基于监听的事件处理会被优先触发。
下面我们来详细介绍一些这两种事件处理方式。
基于监听的事件处理是一种委派式的事件处理机制,普通组件(事件源)将整个事件处理委托给特定的对象(事件监听器),当该事件源发生指定的事件时,就通知所委托的事件监听器,由事件监听器来处理这个事件。
在基于监听的事件处理模型包含以下3类对象:
基于监听的事件处理模型如下图所示:
基于监听的事件处理编程步骤如下所示:
举例
定义一个Button作为事件源
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal"
>
<EditText
android:id="@+id/show"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:editable="false"
/>
<Button
android:id="@+id/bn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="单击我"
/>
</LinearLayout>
实现监听器监听事件源。
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
// 实现事件监听器接口
public class ActivityListener extends Activity
implements OnClickListener
{
EditText show;
Button bn;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
show = (EditText) findViewById(R.id.show);
bn = (Button) findViewById(R.id.bn);
// 直接使用Activity作为事件监听器
bn.setOnClickListener(this);
}
// 实现事件处理方法
@Override
public void onClick(View v)
{
show.setText("bn按钮被单击了!");
}
}
在在基于监听的事件处理模型包含以下3类对象中,事件源随处可见,事件由Android系统产生,所以我们需要关注的主要还是实现事件监听器,常见的事件监听器有4种,如下所示:
基于回调的事件处理没有事件监听器,当用户在界面组件激发某个事件时,组件自己特定的方法将会负责处理该事件。
几乎所有基于回调的时间处理方法都有一个boolean类型的返回值,该返回值用于标识该处理方法是否能完全处理该事件。
如果处理事件的回调方法返回false,表明该处理方法并未能完全处理该事件,该事件会传播出去。
版权声明:当我们认真的去做一件事的时候,就能发现其中的无穷乐趣,丰富多彩的技术宛如路上的风景,边走边欣赏。
【Android应用开发技术:应用组件】Android事件处理机制
标签:
原文地址:http://blog.csdn.net/allenwells/article/details/47781655