zoukankan      html  css  js  c++  java
  • Android事件分发

    View 、ViewGroup事件分发:

    1. Touch事件分发中只有两个主角:ViewGroup与view

    ViewGroup包含onTnterceptTouchEven,dispathTouchEven,onTouchEven三个相关事件

    View包含dispathTouchEven,onTouchEven两个相关事件

    2. ViewGroup和View组成了一个树状结构,根节点为Activity内部包含的一个ViewGroup

    3. 触摸事件由Action_Down,Action_Move,Action_Up组成,其中一次完整的触摸事件,Down和Up都只有一个,Move有若干个,可以为0个

    4. 当Activity接收到Touch事件时,将遍历子view进行Down事件的分发,ViewGroup的遍历可以看成是递归的,分发的目的是为了找到真正要处理本次完成触摸事件的view,这个view会在onTouchEvent返回true

    5. 将某个View 返回true时,会终止Down的分发,同时在ViewGroup中记录了改子View,接下来的Move和Up事件将由该子View直接进行处理,由于子View是保存在ViewGroup中的,存在多层ViewGroup的节点结构时,上级ViewGroup保存的会是真实处理的View所在的ViewGroup对象:

    如ViewGroup0 ---VIewGroup1 -- TextView 的结构中,TextView返回了true,它将保存在ViewGroup1中,而ViewGroup1也会返回true,保存在ViewGroup0中,当Move和Up事件来时,会先从ViewGrou0传递到ViewGroup1,在由ViewGroup1传递到TextView。

    6. 当ViewGroup中所有子View都不捕获Down事件时,将触发ViewGroup自身的onTouch事件,触发时调用super.dispatchTouchEven函数,即父类View的dispatchTouchEvent方法,在所有子View都不处理的情况下,触发Activity的onTouchEven方法

    7. onInterceptTouchEvent有两个作用

    1)拦截Down事件的分发

    2)终止Up和Move事件向目标view传递,使得目标View所在的ViewGroup捕获up和move事件。

  • 相关阅读:
    StackExchange.Redis 文档翻译
    性能分析
    脚本
    KEYS,SCAN,FLUSHDB 等等,这些命令在哪里?
    事件
    发布/订阅 消息顺序
    Redis中的事务
    键、值以及通道
    管道和多路复用器
    配置
  • 原文地址:https://www.cnblogs.com/Ayinger/p/11966845.html
Copyright © 2011-2022 走看看