zoukankan      html  css  js  c++  java
  • Android学习笔记(36):Android的两种事件处理方式

    Android提供了两种事件处理的方式:基于回调的事件处理 和 基于监听的事件处理。

    我们来说的easy理解一点:

    1)基于回调的事件处理就是继承GUI组件,并重写该组件的事件处理方法。除了一些特定的情况,大部分情况使用基于回调的事件处理方式并非最好的选择。

    2)基于监听的事件处理就是在监听器中定义事件的处理方式,再为组件绑定监听器。

    这样的方式无疑是更可以体现面向对象思想的。

    基于回调的事件处理:

    View类包括例如以下的方法能够用于重写:

    boolean onKeyDown(int keyCode,KeyEvent event):按下某个按键时触发

    boolean onKeyUp(int keyCode,KeyEvent event):松开某个按键时触发

    boolean onKeyLongPress(int keyCode,KeyEvent event):长按某个按键时触发

    boolean onKeyShortcut(int keyCode,KeyEvent event):按下某个快捷键时触发

    boolean onTouchEvent(MotionEvent event):触摸屏幕时触发

    我们注意到返回值都是一个boolean值。这用于标识该方法是否能全然处理该事件。返回true表示能全然处理,事件不会传播出去,返回false表示不能全然处理,事件会传播出去。交给以下的事件处理方法处理。


    基于监听的事件处理:

    这是一种委派式的事件处理方式:普通组件(事件源)将事件处理托付给(绑定)事件监听器,事件源发生指定的事件时。通知事件监听器来处理该事件。

    下图展示的是基于监听的事件处理流程图:


    了解下以下这几种概念:

    事件源:就是各种GUI组件。

    事件监听器:各种XxxListener类。须要实现事件处理方法的接口。

    注冊监听器:调用事件源的setXxxListener(XxxListener)方法。

    View包括例如以下几个内部接口:

    View.OnClickListener:处理单击事件

    View.OnCreateContextMenuListener:处理单击上下文菜单项的事件

    View.onFocusChangeListener:处理焦点改变事件

    View.OnKeyListener:处理按键事件

    View.OnLongClickListener:处理长按事件

    View.OnTouchListener:处理触摸事件

    一个事件监听器能够被多个GUI组件所共用。

    实现事件监听器能够有例如以下几种形式:

    内部类、外部类、Activity本身实现,匿名内部类、直接绑定到标签(这是特殊但非常方便的形式)。

    这各种实现假设熟悉Java的话,实现都是不难的。

  • 相关阅读:
    学习笔记1:性能问题在于你想不到的任何地方!
    React Native控件之PullToRefreshViewAndroid下拉刷新组件解说(20)
    CSDN-markdown编辑器之导入导出文档功能
    无名管道与有名管道通讯编程
    LeetCode Remove Nth Node From End of List
    libpcap出错信息调试函数pcap_geterr, pcap_perror
    工作流学习——Activiti流程实例、任务管理四步曲
    B
    oracle学习笔记 oracle软件安装和数据库的创建
    路由器逆向分析------MIPS系统网络的配置(QEMU)
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/7238007.html
Copyright © 2011-2022 走看看