事件分发机制
文章平均质量分 60
事件分发机制相关
zhangjin1120
这个作者很懒,什么都没留下…
展开
-
事件分发机制:demo复现自定义ViewGroup点击事件不起作用
后,布局中的RelativeLayout消费了点击事件,但是这个RelativeLayout又没有onClickListener,所以没有日志。外层的MyRelativeLayout虽然可以点击,也设置了点击事件,但是点击事件已经被RelativeLayout消费了。很容易想到,自定义一个Layout,左边一个图标,中间文字说明,右侧一个箭头,底部一条分割线。动手写的时候,就遇到bug了,点击事件不起作用。,也就是说MyRelativeLayout可以点击,可以点击,又有点击事件,为啥就不起作用了?原创 2024-07-05 13:16:11 · 405 阅读 · 0 评论 -
事件分发机制:从OnTouchListener开始,按钮变色的Demo
负责点击后执行的逻辑,无法响应按下、移动、抬起手指的具体变化,要想根据按下、移动、抬起、取消等信号,做出不同的效果,就要使用。可以看到,OnTouchListener就是View类中的一个public接口,接口里面只有一个。正常开发,我们一般用selector加载设计师给的图片。这里只是个简单的demo,就直接用。这个方法有什么用了?我们写一个有按压效果的Button,体验一下。方法复现子View点击不起作用的现象。要彻底弄清楚事件分发机制,先要明白。原创 2024-02-02 23:16:28 · 376 阅读 · 0 评论 -
事件分发机制:demo复现子View的点击事件不起作用
可以看到,只执行了onTouch方法,没有执行button的onClick方法。自定义一个MyLayout,继承自LinearLayout,重写。测试机系统是Android 7.1.2,api 25。相关疑问,我们后续博客再讲。demo使用的sdk是32。方法,返回true。原创 2024-02-02 20:09:12 · 355 阅读 · 0 评论 -
为什么执行ACTION_DOWN的时候返回了false,后面一系列其它的action就不会再得到执行了?
在郭霖大神的博客:Android事件分发机制完全解析,带你从源码的角度彻底理解(上)中有这样一句话: 如果你在执行ACTION_DOWN的时候返回了false,后面一系列其它的action就不会再得到执行了。简单的说,就是当dispatchTouchEvent在进行事件分发的时候,只有前一个action返回true,才会触发后一个action。准确的描述应该是这样:如果一个子view处理了down事件,也就是返回了true。那么单链表中,会记录这个子view,后续的move和up事件都会分发给原创 2022-03-10 02:27:51 · 3113 阅读 · 1 评论 -
事件分发机制:从dispatchTouchEvent方法到onClick方法被调用
中,调用了performClickInternal(),然后在performClickInternal()中调用了performClick(),最终调用了OnClickListener。performClick()被performClickInternal()调用了,那performClickInternal()又被谁调用了?事件处理中,调用了performClick()方法。如上图,onTouchEvent()方法是在dispatchTouchEvent()方法中调用的。onTouchEvent()的。原创 2021-09-25 15:49:06 · 280 阅读 · 0 评论 -
事件分发机制的疑问
事件分发机制到底是什么?down,move,up,cancel事件的传递和处理机制。事件分发机制要解决什么问题?用户点击操作到底由谁来负责处理?down事件是怎么传递的?先从Activty传递给ViewGroup:再从ViewGroup传递到View:move、up事件和down事件传递的区别是什么?如果一个子view处理了down事件,也就是返回了true。那么单链表中,会记录这个子view,后续的move和up事件都会分发给这个子view处理。如果这个子view返回false,原创 2022-04-08 19:16:08 · 2426 阅读 · 0 评论 -
事件分发机制面试准备
1. 什么叫事件分发机制Android上面的View是树形结构,View可能会重叠在一起,当我们点击的地方有多个View都可以响应的时候,这个点击事件应该给谁呢?为了解决这个问题,就有了事件分发机制。事件分发是:当发生了一个事件时,在屏幕上找到一个合适的控件来处理这个事件的过程。其实事件分发的本质将点击屏幕产生的MotionEvent对象传递到某个具体的View然后处理消耗这个事件的整个过程。2、常见事件当用户点击屏幕里View或者ViewGroup的时候,将会产生一个事件对象,这个事件对象就是M原创 2022-03-10 10:44:38 · 162 阅读 · 0 评论 -
事件分发机制:滑动冲突
由Activity传递给ViewGroup,ViewGroup传递给View,由于ViewGroup默认不拦截,所以经常出现子View滑动,而父View不能滑动的情况。原创 2021-07-23 00:21:08 · 74 阅读 · 0 评论 -
事件分发机制的常见误解
Android事件分发机制完全解析,带你从源码的角度彻底理解(上)Carson带你学Android:手把手带你深入分析事件分发机制!Android事件分发机制完全解析,带你从源码的角度彻底理解(下)Android ViewGroup事件分发机制三个函数的执行顺序是什么?onDispatchEvent返回true和false的区别是什么?down事件是Activity是如何传递给ViewGroup的?up事件怎么传递的?范德萨...原创 2022-03-10 10:26:12 · 2378 阅读 · 0 评论 -
事件分发机制梳理
事件分发机制:从dispatchTouchEvent方法到onClick方法被调用事件分发机制面试准备事件分发机制:长按事件onLongClickListener返回值的意义事件分发机制:滑动冲突为什么执行ACTION_DOWN的时候返回了false,后面一系列其它的action就不会再得到执行了?事件分发机制的常见误解原创 2022-03-05 15:44:15 · 96 阅读 · 0 评论 -
事件分发机制:长按事件onLongClickListener返回值的意义
ivTest.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { return false; } });设置为false。长按会执行onLongClick,手指抬起时会执行onClick。点击只执行onClick。测试一.原创 2021-05-19 20:21:06 · 1203 阅读 · 0 评论