Android学习笔记-事件处理机制

 

Android的事件处理机制有两种:监听和回调。

A.基于监听的事件处理

主要涉及三类对象:EventSource(事件源),Event(事件),EventListener(事件监听器)

监听机制处理事件的流程图如下(委派式:Delegation):

Android学习笔记-事件处理机制_第1张图片

简单的代码实现:

  1.main.xml中定义了一个Button如下,它将作为事件源组件:

  <Button android:id="@+id/botton1".../>

  2.为该按钮绑定一个事件监听器,监听器的实现方法有几种形式:

    2.1 内部类形式      

    2.2 外部类形式

    2.3 Activity本身作为事件监听器类

    2.4 匿名内部类

  注意:无论采取哪种实现方式都要实现的事件监听器接口有:

    View.OnclickedListener:单击事件的事件监听器必须实现的接口

    View.OnCreateContextMenuListener:创建上下文菜单事件……

    View.OnFocusChangeListener:焦点改变事件……

    View.OnKeyListener:按键事件……

  如,采用2.4方式绑定该button1的单击事件的监听器的代码如下在(*Activity.java文件中):   

    final Button bn= (Button)this.findViewById(R.id.button1);

    bn.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        // TODO Auto-generated method stub

          ……//处理事件的代码
      }
    });

  此外,还有一种直接绑定到标签的更为简单的绑定事件监听器的方法

  在main.xml文件中的button1定义标签里添加如下代码

  <Button android:id="@+id/botton1"

    android:onClick="clickHandler".../>

  在对应该界面的Activity中定义clickHandler(View v)方法,该方法就会负责处理该按钮上的单击事件

B.基于回调的事件处理

  回调机制实质就是将事件的处理绑定在组件上,由GUI组件自己处理事件,回调机制需要自定义View来实现,自定义View重写该View的事件处理方法即可。

  如MyButton.java继承了Button组件,要实现对按键的事件处理,则重写父类的boolean onKeyDown(int keyCode, KeyEvent event)方法即可,当然在main.xml中的定义也要相应的改变,如下:

  <nwpu.daisy.test.myButton ……/>

未完待续

 

你可能感兴趣的:(Android学习笔记-事件处理机制)