zoukankan      html  css  js  c++  java
  • Android学习笔记事件处理机制 希

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

    A.基于监听的事件处理

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

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

    简单的代码实现:

      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 ……/>

    未完待续

  • 相关阅读:
    Codeforces 765 E. Tree Folding
    Codeforces 617 E. XOR and Favorite Number
    2017.3.4[hihocoder#1403]后缀数组一·重复旋律
    2017.2.23[hdu1814]Peaceful Commission(2-SAT)
    2017.2.18Codeforces Round #398 (Div. 2)
    2017.2.18[codevs1170]NOIP2008提高组复赛T4双栈排序
    2017.2.18[codevs3319][bzoj3670]NOI2014D2T1动物园
    2017.2.18[codevs3311][bzoj3668]NOI2014D1T1起床困难综合症
    2017.2.10 Splay总结
    2017.2.10考试总结2017冬令营
  • 原文地址:https://www.cnblogs.com/deng303359/p/2368189.html
Copyright © 2011-2022 走看看