zoukankan      html  css  js  c++  java
  • Android事件处理--读书笔记

    2013-12-28 17:57:17 

    1. Android提供了两种方式的事件处理:基于回调和基于监听的事件处理;
    1.1 对基于监听的事件处理而言,主要做法是为Android界面组件绑定特定的事件监听器;
    1.2 对基于回调的事件处理而言,主要是重写Android组件特定的回调方法,或者重写Actvity的回调方法;
    一般来说,基于回调的事件可用于处理一些具有通用性的事件,但对于某些特定的事件,只能采用基于监听的事件处理;

    2. 基于监听的事件处理
    2.1 处理模型:EventSource,Event 和Event Listener。
    2.2 事件处理机制是一种委派式事件处理方式:普通组件(事件源)将整个事件处理委托个特定的对象(事件监听器),当该事件源发生指定的事件时,就通知所委派的事件监听器来处理。
    2.3 使用规则:确定事件源,创建合适的事件监听器,注册。
    2.4 当外部动作在Android组件上进行操作时,系统会自动生成事件对象,同时作为参数被传递给注册到事件源上的事件监听器。

    3. 基于回调的事件处理
    3.1 对于基于回调的事件处理模型来说,事件源和事件监听器是统一的,当用户在GUI组件上激发某个事件时,组件自己特定的方法将会自动处理该事件。
    3.2 基于回调的事件传播:所有基于回调的事件处理方法都有一个boolean类型的返回值,用于标识该处理方法是否能完全处理该事件。
    3.3 如果返回ture,表示该处理方法已完全处理该事件,不会传播出去,false反之。
    3.4 比较典型的是继承View来重写他的回调方法以实现我们的目的。

    4. 关于触摸事件的分发及处理

    4.1 onInterceptTouchEvent(MotionEvent ev),只有继承自ViewGroup的类才会有这个方法,
    所以像TextView,ImageView等都是没有这个方法的,这个方法类似于小秘书的角色,负责拦截过滤事件,
    也就是说当前类是否要处理收到的Touch event取决于这个方法的过滤,return true表示当前View要处理,
    系统会启动onTouchEvent()方法,并且以后所有的事件都会直接来找这个View,当然,如果父View中途插手,那另当别论,
    return false 表示自己不处理,系统会继续向下(子View)分发事件;

    4.2 如果onTouchEvent()不处理,直接返回false,那么交给父View去处理,直到根View,如果还没人处理,那这个事件就消失了;

    4.3 如果onTouchEvent()处理,那么将收到的Touch Event分解为具体的ACTION_DOWN, ACTION_MOVE,ACTION_UP等事件予以处理;

    4.4 dispatchTouchEvent()负责分发TouchEvent,是三个方法中最先执行的,最好返回super.dispatchTouchEvent(ev);
    每一级View的该方法都会执行,然后执行onInterceptTouchEvent(),如果有的话,最后根据onInterceptTouchEvent的返回值,来决定是否要启动onTouchEvent。

    更多详细:http://www.cnblogs.com/xiaoQLu/archive/2012/04/28/2474443.html

  • 相关阅读:
    Client API Object Model
    Dynamics 365 CRM 配置field service mobile
    Dynamics 365 CRM 在 Connected Field Service 中部署 IoT Central (三)- 发送 work order 和 booking 信息给 IoT Central
    Dynamics 365 CRM 在 Connected Field Service 中部署 IoT Central (二)- 匹配设备
    Dynamics 365 CRM 在 Connected Field Service 中部署 IoT Central (一)- 配置 IoT Central和IoT alert
    创建dynamics CRM client-side (十四)
    创建dynamics CRM client-side (十三)
    创建dynamics CRM client-side (十二)
    创建dynamics CRM client-side (十一)
    创建dynamics CRM client-side (十)
  • 原文地址:https://www.cnblogs.com/wlrhnh/p/3495612.html
Copyright © 2011-2022 走看看