• 安卓学习5


    今天学习了安卓的一些知识其中主要的是:

    事件分发

    dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent

    步骤 1:判断当前 ViewGroup 是否需要拦截此 touch 事件,如果拦截则此次 touch 事件不再会传递给子 View

    (或者以 CANCEL 的方式通知子 View)。

    步骤 2:如果没有拦截,则将事件分发给子 View 继续处理,如果子 View 将此次事件捕获,

    则将 mFirstTouchTarget 赋值给捕获 touch 事件的 View。

    如果没有子 View 捕获处理 touch 事件,ViewGroup 会通过自身的 onTouchEvent 方法进行处理。

    后续的 MOVE、UP 等事件的分发交给谁,取决于它们的起始事件 Down 是由谁捕获的。

    步骤 3:根据 mFirstTouchTarget 重新分发事件。

    判断是否需要拦截:主要是根据onInterceptTouchEvent方法的返回值决定是否拦截

    在Down事件中将touch事件分发给子View: 如果子view捕获消费了touch事件,会对mFirstTouchTarget进行赋值

    最后,Down, Move,Up事件会根据mFirstTouchTarget是否为null,决定自己处理touch事件,还是再次分发给子View

    特殊点:

    Down事件特殊之处: 事件的起点;决定后续事件由谁来消费处理

    mFirstTouchTarget作用:记录捕获消费touch事件的view,是一个链表结构

    CANCEL事件的触发场景:当父视图先不拦截,然后在MOVE事件中重新拦截,此时子View会接受到一个CANCEL事件

  • 相关阅读:
    福大软工1816 · 第五次作业
    福大软工1816
    福大软工1816 · 第三次作业
    福大软工1816 · 第二次作业
    福大软工1816 · 第一次作业
    1/10
    福大软工 · 第七次作业
    福大软工 · 第八次作业(课堂实战)- 项目UML设计(团队)
    2018软工第六次作业
    福大软工1816 · 第五次作业
  • 原文地址:https://www.cnblogs.com/092e/p/14916560.html
Copyright © 2020-2023  润新知