首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ViewGroup 事件分发

//设置split标记作用是将事件分发给多个子view         final boolean split = (mGroupFlags & FLAG_SPLIT_MOTION_EVENTS...,down事件未被消费,后面up,move事件也就无法进入处理 //没有找到子组件或者touch被拦截,也就交给viewgroup处理,子view没有处理,就会交给子view上层viewgroup处理。...false事件才会回溯,交给viewgroup处理事件         if (mFirstTouchTarget == null) {             // No touch targets...transformedEvent.recycle();     return handled; } ViewGroup dispatchTouchEvent 分析总结 Android事件分发先从ViewGroup...,那么父View就无法收到任何事件 当子view的onTouchEvent或者dispatchTouchEvent方法返回false,那么事件就会向上传递,将交给viewgroup进行处理

83610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    android viewgroup事件分发机制

    今天给大家代码ViewGroup事件分发的源码解析~~凡是自定义ViewGroup实现各种滑动效果的,不可避免的会出现很多事件的冲突,对ViewGroup事件分发机制的了解,也有益于大家了解冲突产生的原因...,最先捕获到事件的为View所在的ViewGroup,然后才会到View自身~ 下面我们按照日志的输出,进入源码~ 2、源码分析 ViewGroup - dispatchTouchEvent 1、ViewGroup...View身上,如果在,47行,执行child.dispatchTouchEvent(ev),就进入了View的dispatchTouchEvent代码中了,如果不了解请参考:Android View的事件分发机制...总结一下: ViewGroup实现捕获到DOWN事件,如果代码中不做TOUCH事件拦截,则开始查找当前x,y是否在某个子View的区域内,如果在,则把事件分发下去。...中,ViewGroup捕获到事件,然后判断是否拦截,如果没有拦截,则直接调用mMotionTarget.dispatchTouchEvent(ev) 3、ACTION_UP中,ViewGroup捕获到事件

    97560

    【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 二 )

    事件分发】事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup ) 【Android 事件分发...】事件分发源码分析 ( ViewGroup 事件传递机制 一 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 二 ) ---- 文章目录 Android 事件分发...系列文章目录 前言 一、获取触摸索引值 二、按照 Z 轴深度排序组件 三、ViewGroup 事件分发相关源码 前言 接上一篇博客 【Android 事件分发】事件分发源码分析 ( ViewGroup...事件传递机制 一 ) , 继续分析 ViewGroup 的事件分发机制后续代码 ; 一、获取触摸索引值 ---- 首先在 动作事件不是取消操作 , 且不拦截事件 , 的前提下 , 才能执行后续操作 ,...三、ViewGroup 事件分发相关源码 ---- ViewGroup 事件分发相关源码 : 下面的代码中 , 逐行注释分析了 ViewGroup 的 dispatchTouchEvent 事件分发操作

    48840

    【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 七 )

    事件分发】事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup ) 【Android 事件分发...】事件分发源码分析 ( ViewGroup 事件传递机制 一 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 二 ) 【Android 事件分发】事件分发源码分析...( ViewGroup 事件传递机制 三 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 四 | View 事件传递机制 ) 【Android 事件分发】事件分发源码分析...( ViewGroup 事件传递机制 五 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 六 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup...完整流程分析 三、View | dispatchTouchEvent 完整流程分析 四、ViewGroup 事件分发相关源码 五、View 事件分发相关源码 总结 事件分发 主要是解决 事件冲突 问题

    1.2K20

    【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 六 )

    】事件分发源码分析 ( ViewGroup 事件传递机制 一 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 二 ) 【Android 事件分发】事件分发源码分析...( ViewGroup 事件传递机制 三 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 四 | View 事件传递机制 ) 【Android 事件分发】事件分发源码分析...( ViewGroup 事件传递机制 五 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 六 ) ---- 文章目录 Android 事件分发 系列文章目录...一、按下触摸事件记录 二、完整的触摸事件处理机制 三、ViewGroup | dispatchTouchEvent 方法返回 四、ViewGroup 事件分发相关源码 五、View 事件分发相关源码 一...、按下触摸事件记录 ---- 在上一篇博客 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 五 ) 中 , 着重分析了 ViewGroup 事件分发中 , 触摸事件没有被消费

    1.2K20

    【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 三 )

    事件分发】事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup ) 【Android 事件分发...】事件分发源码分析 ( ViewGroup 事件传递机制 一 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 二 ) 【Android 事件分发】事件分发源码分析...( ViewGroup 事件传递机制 三 ) ---- 文章目录 Android 事件分发 系列文章目录 前言 一、获取子组件 二、当前遍历的子组件的事件分发 三、ViewGroup 事件分发相关源码...前言 接上一篇博客 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 二 ) , 继续分析 ViewGroup 的事件分发机制后续代码 ; 一、获取子组件 ----...三、ViewGroup 事件分发相关源码 ---- ViewGroup 事件分发相关源码 : 下面的代码中 , 逐行注释分析了 ViewGroup 的 dispatchTouchEvent 事件分发操作

    1K20

    【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 五 )

    事件分发】事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup ) 【Android 事件分发...】事件分发源码分析 ( ViewGroup 事件传递机制 一 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 二 ) 【Android 事件分发】事件分发源码分析...( ViewGroup 事件传递机制 三 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 四 | View 事件传递机制 ) 【Android 事件分发】事件分发源码分析...方法返回值含义 二、记录被消费的触摸事件 三、触摸事件没有被消费的调用链分析 四、触摸事件被拦截的调用链分析 五、ViewGroup 事件分发相关源码 六、View 事件分发相关源码 总结 前言 接上一篇博客...【Android 事件分发】事件分发源码分析 ( View 事件传递机制 ) , 继续分析 ViewGroup 的事件分发机制后续代码 ; Activity 事件传递 , 最终调用到了 ViewGroup

    1.5K30

    【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 一 )

    Android 事件分发 系列文章目录 【Android 事件分发】事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) 【Android...事件分发】事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup ) 【Android 事件分发...】事件分发源码分析 ( ViewGroup 事件传递机制 一 ) ---- 文章目录 Android 事件分发 系列文章目录 前言 一、无障碍调用 二、判定是否首次按下 三、判定是否拦截 四、判定是否取消操作...五、ViewGroup 事件分发相关源码 前言 在上一篇博客 【Android 事件分发】事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow...五、ViewGroup 事件分发相关源码 ---- ViewGroup 事件分发相关源码 : 下面的代码中 , 逐行注释分析了 ViewGroup 的 dispatchTouchEvent 事件分发操作

    45720

    View,ViewGroup的Touch事件的分发机制

    ViewGroup的事件分发机制 我们用手指去触摸Android手机屏幕,就会产生一个触摸事件,但是这个触摸事件在底层是怎么分发的呢?...上面的ViewGroup的Touch事件分发就告一段落先,因为这里要调用TextView(也就是View)的dispatchTouchEvent()方法,所以我们先分析View的dispatchTouchEvent...所以我们点击屏幕上面的TextView的事件分发流程是上图那个样子的,表示Activity的View都不消费ACTION_DOWN事件,所以就不能在触发ACTION_MOVE, ACTION_UP等事件了...事件交给ViewGroup处理 7.Touch事件的分发过程中,如果消费了ACTION_DOWN,而在分发ACTION_MOVE的时候,某个ViewGroup拦截了Touch事件,就像上面那个自定义CustomLayout...,则会将ACTION_CANCEL分发给该ViewGroup下面的Touch到的View,然后将Touch事件交给ViewGroup处理,并返回true

    1.2K70

    【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 四 | View 事件传递机制 )

    事件分发】事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup ) 【Android 事件分发...】事件分发源码分析 ( ViewGroup 事件传递机制 一 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 二 ) 【Android 事件分发】事件分发源码分析...( ViewGroup 事件传递机制 三 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 四 | View 事件传递机制 ) ---- 文章目录 Android...事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 三 ) , 继续分析 ViewGroup 的事件分发机制后续代码 ; 一、View 的事件传递机制 ( dispatchTouchEvent...) ---- 在上一篇博客 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 三 ) 二、当前遍历的子组件的事件分发 章节 , 分析到 ViewGroup 的 dispatchTouchEvent

    2.1K10

    【Android 事件分发】MotionEvent.ACTION_DOWN 按下事件分发流程( Activity | ViewGroup | View )

    事件分发】事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup ) 【Android 事件分发...】事件分发源码分析 ( ViewGroup 事件传递机制 一 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 二 ) 【Android 事件分发】事件分发源码分析...( ViewGroup 事件传递机制 三 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 四 | View 事件传递机制 ) 【Android 事件分发】事件分发源码分析...( ViewGroup 事件传递机制 五 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 六 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup...ViewGroup | View ) ---- 文章目录 Android 事件分发 系列文章目录 一、事件分发相关类和方法 二、Activity 的事件传递 1、Activity.dispatchTouchEvent

    1.7K20

    【Android 事件分发】事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup )

    Android 事件分发 系列文章目录 【Android 事件分发】事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) 【Android...事件分发】事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup ) ---- 文章目录 Android...事件分发 系列文章目录 一、Activity 的事件传递 二、PhoneWindow 事件传递 三、DecorView 事件传递 四、ViewGroup 事件传递 一、Activity 的事件传递 -...界面中 , 会第一时间调用 dispatchTouchEvent 方法 , 然后会按照下图的层级 , 逐步向下分发触摸事件 ; Activity | dispatchTouchEvent 分析 :...事件传递 DecorView 中的 superDispatchTouchEvent 中 , 调用父类的 superDispatchTouchEvent 方法 , 这里涉及到事件分发 superDispatchTouchEvent

    91720

    Activity 事件分发

    public class FrameLayout extends ViewGroup 所以调用的就是viewgroup的dispatchTouchEvent方法 综上: Activity的getWindow...PhoneWindow:PhoneWindow对象帮我们创建了一个PhoneWindow内部类DecorView(父类为FrameLayout)窗口顶层视图 dispatchTouchevent 总结 所有的事件分发都是首先从...FragmentLayout,也就是ViewGroup将事件分发给子view,接着调用Activity的setContentView方法加载view 当Activity下的子view拦截事件,就不会调用...没有处理事件就交给viewgroup处理,如果还没有处理事件,一直向上传递,最后交给Activity来消费该事件 Activity onUserInteraction 分析 public void onUserInteraction...() {} 空实现方法,简单解释: 每当Key,Touch,Trackball事件分发到当前Activity就会被调用。

    85910

    View 事件分发

    无论是否设置setClickable为false 还是true都不可点击,无法响应事件....dispatchTouchEvent方法开始进行分发的 首先执行onTouchListener方法,后执行onTouchEvent方法,也就是onTouch方法优先于onClick方法执行,原因由于onClick...onTouchEvent会在ACTION_UP手势方法中调用performClick()方法,performClick()中调用了onClick方法,触发onClick监听 当dispatchEvent事件分发时...,只有前一个action返回为true时,后一个action才会触发 View事件分发面试问题 事件分发中的 onTouch 和 onTouchEvent 有什么区别,该如何使用 这两个方法都是在 View...onClick事件执行,onTouch在事件分发方法dispatchTouchEvent中调用,而onClick在事件处理方法onTouchEvent中被调用,onTouchEvent要后于dispatchTouchEvent

    64010

    dispatchTouchEvent事件分发浅析(二)分发

    Override的方法 boolean dispatchTouchEvent(MotionEvent ev); boolean onTouchEvent(MotionEvent ev); 他们分别是 分发事件...和 触摸事件 ---- 个人理解为: 现在要做一个面包, 让下面人做 如果下面人做了,就ok了 如果下面人没有做,需要告诉dispatch分发这个任务的人 依次传递 ?...EventButton 的 dispatchTouchEvent 和 onTouchEvent 对应View来说, 会从最高的地方,传递到View, 获取到OnTouchEvent 后结束 ---- 我们再来看看ViewGroup...的点击 某个ViewGroup的点击 (图中的 b , 是继承 LinearLayout) ?...来说, 会从最高的地方,传递到ViewGroup, 获取到OnTouchEvent 后 ,并不会消费带哦,而是会再次往回调用到最高地方的 OnTouchEvent 才结束 **

    1.4K30

    事件分发机制

    Motion Events  传感器事件:重力、加速度。     3.  Remote Control Events  远程遥控事件。...以前比较流行的中间凸起的标签栏,你有具体考虑过中间那个按钮的点击事件吗?超出标签栏那部分的点击事件你要不做处理,它能执行的到吗?    ...先说说Touch Events大致的执行过程;     点击手机屏幕 ----> UIKit 会生成一个 UIEvent事件,把UIEvent分发给当前活跃着的APP ----> 活跃着的APP被告知有事件发生后...,UIApplication 单例就从事件队列中取出最新的事件,依靠 hit-Testing 找出并且返回你点击的View,让View执行事件。...上面就是hitTest的一些概念和简单的使用,其实它能做的事还是挺多的,我把自己学习的笔记链接全都整理出来给; iOS事件分发机制(一) hit-Testing 技术哥 iOS事件分发机制(二)The

    1.1K80

    Compose 事件分发(下) 分发触摸点

    在上一篇 《Compose 事件分发(上) 寻找触摸点》中已经介绍,在触摸 compose 组件时,会从根节点开始遍历,获取命中的 PointerInputFilter,然后对其进行事件分发,今天,我们来重点讲解一下事件的分发过程...,并且在 AndroidView 上,嵌套原生 View 的时候,事件的分发过程 一、示例 AppTheme { // Box 组件 Box(modifier = Modifier...二、分析 1、Compose 组件事件分发分析 继续回到 pointerInputEventProcessor.process 方法: @OptIn(InternalCoreApi::class) //...事件 遍历子节点,本质就是遍历 pointInput,分发 final 事件 来看下 dispatchMainEventPass 的处理: override fun dispatchMainEventPass...2、AndroidView 组件事件分发分析 通过上面的分析知道,Compose 组件是通过 SuspendingPointerInputFilter 实现事件的处理,那 AndroidView 组件是怎么分发的呢

    2.1K30

    viewGroup与view对事件的处理

    、事件类型的更改等等,放在后面讲,接下来看看ViewGroup是如何分发事件的。...ViewGroup对于事件的分发 这一步可以说是事件分发中的重头戏了。不过在理解了上面的MotionEvent之后,对于ViewGroup的分发细节也就容易理解了。...整体来说,ViewGroup分发事件分为三个大部分,后面的内容也会围绕着三大部分展开: 拦截事件:在一定情况下,viewGroup有权利选择拦截事件或者交给子view处理 寻找接收事件序列的控件:每一个需要分发给子...除此之外的事件都是需要分发到子view,那么viewGroup就可以对他们进行判断是否进行拦截。简单来说,只有需要分发到子view的事件才需要拦截 。...viewGroup的任务就是把事件分发按照原则精准地分发给他子view。 事件分发中一个非常重要的原则就是:一个触控点的事件序列,只能给一个view消费,除了特殊情况,如被viewGroup拦截。

    93110
    领券