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

  • 相关阅读:
    论财务的意义
    项目忙乱的原因
    回家的路
    但问耕耘
    做自己的主角
    坚持的意义
    觉醒的意义
    梦想的力量
    把自己当作一件艺术品
    九宫格年度计划
  • 原文地址:https://www.cnblogs.com/092e/p/14916612.html
Copyright © 2011-2022 走看看