安卓事件处理1之监听器盘点

来源:互联网 发布:java日期选择控件 编辑:程序博客网 时间:2024/05/16 08:19

在开发安卓程序时,用户处理程序界面的动作比较多,而与UI紧密相连的就是事件处理。

安卓提供了两种主要的方式的事件处理:

》基于监听的事件处理

》基于回调的事件处理

这篇主要说明安卓基于监听的事件处理

对于应用程序


来说,处理最多的就是用户的动作,而我们的程序要对来自用户的动作做出响应,这种对用户交互动作做出响应的机制就是事件处理。

而基于监听的事件处理相对来说更符合“面向对象”的设计,这种处理方式与Java的AWT,SWING的处理方式基本相同。也就是说,我们处理的是用户动作触发的对象,而在android类库里提供了一些类,一些接口来处理这些对象。

在事件监听的处理模型中,主要涉及三种对象:

》事件源(EVENT SOURCE):事件发生的场所,各种UI组件

》事件(EVENT):UI组件上发生的特定事情,如点击,按下,触摸

》事件监听器(EVENT LISTENER):监听类,负责 监听发生的事件

事实上,安卓对这种机制还进一步的简化了,就是对于一些简单地操作,并不要封装成EVENT。


那么究竟什么是监听器呢?

事实上,监听器是安卓类库(android.view)里面提供的一些接口(特殊的抽象类)

我们在使用这些类或实现这些接口是要导入该类库:
import  android.view.*


常用的监听器接口如下:

View.OnClickListener :监听点击事件,监听操作通过重写onClick()方法

View.OnKeyListener :监听键盘事件,通过重写onKey()方法

View.OnTouchListener :监听触摸屏事件,通过重写onTouch方法

View.OnLongClickListener :监听长按事件,通过重写onLongClick()方法

View.OnFoucusChangeListener :监听焦点改变事件,通过重写onFocusChange()方法

View.CreateContextMenuListener :监听创建上下文菜单事件

MenuItem.OnMenuItemClickListener :监听菜单项点击,重写onMenuItemClick()方法

GestureDetector.OnGestureListener :监听手势改变事件


那么究竟如何使用监听器类呢,通常有如下几种形式:
》内部类形式(包括匿名内部类)

》外部类形式

》Activity作为监听器接口的实现类

我们比较常用的是匿名内部类形式或者将Activity做为某一个监听器接口的实现类。

我们首先看一下如何使用匿名内部类:

MyView=new View();View MyView=LayoutInflater.from(this).inflate(R.id.myView,null);MyView.setOnKeyListener(new OnKeyListener(){@Overridepublic void boolean onKey(Veiw resouce,int KeyCode,KeyEvent event){switch(event.getKeyCode()){case KeyEvent.KeyEvent_DRAD_DOWN:break;case:KeyEvent.KeyEvent_ERAD_DOWN:break;}MyView.invalidate();return true;}});

下面使用将Activity变成监听器接口的实现类:

import android.view.View.OnClickListener;public class MyActivity extends Activity implements OnClickListener{EditText show;Button bu;@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreatea(savedInstanceState);setContentView(R.layout.main);bu=(Button)findViewById(R.id.bu);
bu.setOnClicklistener(this);}@Overridepublic void onClick(View v){Toast.makeText(this,"你点击了按钮",Toast.LENGTH.SHORT).show();}}
上面的程序演示了另外一种常见的方法,将Activity直接实现监听器接口,但是该方法有一些缺点,这种形式容易造成结构混乱,因为这样就要在Acivity中重写监听器的方法。

由于Activity之间实现了接口,所以只要在里面重写监听器的方法,就能实现监听的效果。

原创粉丝点击