zoukankan      html  css  js  c++  java
  • 安卓学习18

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

    事件分发

      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事件

  • 相关阅读:
    03 获取元素节点对象的方式
    02 window对象的常用方法
    01 BOM对象介绍
    10 for循环介绍和应用
    09 三元运算
    序列化pickle
    随机数random模块
    datetime模块时间运算
    time模块细讲
    时间处理模块
  • 原文地址:https://www.cnblogs.com/092e/p/14916612.html
Copyright © 2011-2022 走看看