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

    未完待续

  • 相关阅读:
    $Poj2228$/洛谷$SP283 Naptime$ 环形$DP$
    $Poj1952 $洛谷$1687 Buy Low,Buy Lower$ 线性$DP+$方案计数
    $Poj3585 Accumulation Degree$ 树形$DP/$二次扫描与换根法
    洛谷$1541$ 乌龟棋 线性$DP$
    $Loj10157$ 皇宫看守 树形$DP$
    $loj10156/$洛谷$2016$ 战略游戏 树形$DP$
    $Loj10155$ 数字转换(求树的最长链) 树形$DP$
    洛谷$2015$二叉苹果树
    $CH5302$ 金字塔 区间$DP$/计数类$DP$
    [hiho1035] 自驾旅行III
  • 原文地址:https://www.cnblogs.com/deng303359/p/2368189.html
Copyright © 2011-2022 走看看