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

Carson带你学Android:手把手带你深入分析事件分发机制!

条件判断的内部调用了该View的dispatchTouchEvent() // 即 实现了点击事件从ViewGroup到子View的传递(具体请看下面章节介绍的View事件分发机制..." android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http...结果分析 点击Button时,因为ViewGroup默认不拦截,所以事件会传递到子View Button,于是执行Button.onClick()。...点击空白区域时,ViewGroup. dispatchTouchEvent()里遍历所有子View希望找到被点击子View时找不到,所以ViewGroup自身会处理该事件,于是执行onTouchEvent...黑线:ACTION_DOWN事件传递方向 红线:ACTION_MOVE、ACTION_UP事件传递方向 6.2 onTouch()和onTouchEvent()的区别 该2个方法都是在View.dispatchTouchEvent

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

    Android高级进阶之路【二】十分钟彻底弄明白 View 事件分发机制

    条件判断的内部调用了该View的dispatchTouchEvent() // 即 实现了点击事件从ViewGroup到子View的传递(具体请看下面章节介绍的View事件分发机制..." android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http...结果分析 点击Button时,因为ViewGroup默认不拦截,所以事件会传递到子View Button,于是执行Button.onClick()。...点击空白区域时,ViewGroup. dispatchTouchEvent()里遍历所有子View希望找到被点击子View时找不到,所以ViewGroup自身会处理该事件,于是执行onTouchEvent...黑线:ACTION_DOWN事件传递方向 红线:ACTION_MOVE、ACTION_UP事件传递方向 [image.png] 6.2 onTouch()和onTouchEvent()的区别 该2个方法都是在

    66130

    Android触摸事件_简述兴奋在突触的传递过程

    还有就是在自定义控件的时候,需要处理一些事件时候,也必须把逻辑处理好,父 view 和子view 都需要接收事件,然后处理。如果不明白事件传递机制,很难开发出需要的效果。...下面点击button以外的部分,输出如下图中的第二个矩形,和之前没有button一样。...当把CustomButton中的onTouchEvent返回改为true的情况下,其实是和默认情况下一样的,这也说明默认情况下button消费了点击事件。...= "match_parent" android:layout_height= "match_parent" android:paddingBottom= "@dimen/activity_vertical_margin...进行消费; 如果当前 View 获取的事件来自外层父控件,则会将事件返回给父 View 的 onTouchEvent 进行消费。

    71820

    Android事件分发机制完全解析,带你从源码的角度彻底理解(下)

    顾名思义,ViewGroup就是一组View的集合,它包含很多的子View和子VewGroup,是Android中所有布局的父类或间接父类,像LinearLayout、RelativeLayout等都是继承自..." android:layout_width="match_parent" android:layout_height="match_parent" android:orientation...android:id="@+id/button2" android:layout_width="match_parent" android:layout_height="...分别点击一下Button1、Button2和空白区域,打印结果如下所示: ? 你会发现,当点击按钮的时候,MyLayout注册的onTouch方法并不会执行,只有点击空白区域的时候才会执行该方法。...我们也因此证实了,按钮点击事件的处理确实就是在这里进行的。 然后需要注意一下,调用子View的dispatchTouchEvent后是有返回值的。

    1.3K100

    Android 酷炫自定义 View:高仿 QQ 窗帘菜单

    onDraw 和 onTouch,而自定义 ViewGroup 还要考虑子 View 的测量、子 View 的布局、子 View 的事件分发等等,涉及到的方法了 onMeasure、onLayout、...(2)获取子 View 通过上面的分析我们知道一共有三个子 View:左侧菜单、中间主体、右侧菜单,但是这三个子 View 不一定全有,如果用户只配置了左侧菜单,那右侧菜单子 View 就不存在。...b、当菜单打开(左右菜单都一样)的时候,点击中间主体区域时拦截事件,点击其它地方不拦截事件。也就是说当菜单打开时,主体区域的页面元素不可点击,列表也不可滑动,但是菜单区域的元素可以点击。...是否点击在中间主体区域稍微复杂一点,我们首先要获取手指点击相对于屏幕的坐标值。...="match_parent" android:layout_height="match_parent" android:orientation="horizontal"

    86010

    View的事件分发及滑动冲突的解决

    true 表示拦截这个事件,不继续分发给子视图,并调用自身的onTouchEvent进行消费 false或者super.onInterceptEvent表示不对事件进行拦截,需要继续传递给子视图 消费(...则事件不会传递给子view false货super.onInterceptTouchEvent,事件会继续传递给子view 3、在子view中对事件进行了消费,viewGroup将接受不到任何事件...ACTION_UP也需要返回false,如果返回true,并且滑动事件交给子View处理,那么子View将接收不到ACTION_UP事件,子View的onClick事件也无法触发。...标志位控制,一旦父容器拦截ACTION_DOWN那么所有的事件都不会传递给子View b、滑动策略的逻辑放在子View的dispatchTouchEvent方法的ACTION_MOVE中,如果父容器需要获取点击事件则调用...parent.requestDisallowInterceptTouchEvent(false)方法,让父容器去拦截事件。

    89040
    领券