AndroidUI
文章平均质量分 87
AndroidUI是UI相关源码和原理的笔记
szzyjsxyzwy
这个作者很懒,什么都没留下…
展开
-
Android view事件处理
*** @hide*/onLongClickListener事件监听有一个boolean的返回值,看看返回值对其他事件的影响由上代码得知,onLongClickListener的返回值最后会影响mHasPerformedLongPress的值,返回true的时候,mHasPerformedLongPress = true;再看看mHasPerformedLongPress对事件的影响,最后找到在ACTION_UP事件执行onClickListener事件之前有判断。原创 2023-06-26 19:02:01 · 140 阅读 · 0 评论 -
Android view 事件分发流程(四)--- 事件拦截
事件拦截就是拦截事件分发到子View中去。事件拦截的方式有两种:内部拦截和外部拦截。move事件 → 子View在dispatchTouchEvent方法中调用getParent().requestDisallowIntercepteTouchEvent(false) → mGroupFlags = 0 → disallowIntercept = false → intercepted = onInterceptTouchEvent(ev);原创 2023-06-21 19:09:08 · 814 阅读 · 0 评论 -
Android view事件分发流程(三)--- dispatchTransformedTouchEvent
dispatchTransformedTouchEvent(调度转换触摸事件)是在ViewGroup中的方法,主要是确定调用ViewGroup的父类view.dispatchTouchEvent方法还是确定是调用Child.dispatchTouchEvent方法。其实最后都会调用到view.dispatchTouchEvent方法的。View child, int desiredPointerIdBits)方法有四个参数,event参数就是事件。原创 2023-06-20 17:11:15 · 209 阅读 · 0 评论 -
Android view事件分发流程(二)--- dispatchTouchEvent
获取拦截标志intercepted的状态,true为拦截分发到子View,false为可以分发事件到子View。MOVE事件流程是:先获取拦截标志intercepted,然后再获取目标子View时,判断事件时,MOVE事件通不过if条件,所以就直接到了处理事件的代码了,在DOWN事件时会赋值mFirstTouchTarget,如果mFirstTouchTarget 为 null,则调用handled = dispatchTransformedTouchEvent(ev, canceled, null,原创 2023-06-19 19:35:34 · 235 阅读 · 0 评论 -
Android View事件分发流程
如果不是则继续循环ViewGroup的dispatchTouchEvent方法,一直到调用super.dispatchTouchEvent或者child.dispatchTouchEvent(child继承于View)activity中调用了getWindow().superDispatchEvent(ev),getWindow获取的对象是window,但是window是一个接口,它的实现类是PhoneWindow,所以这里调用的是PhoneWindow的superDispatchEvent(ev)方法。原创 2023-06-07 19:11:55 · 271 阅读 · 0 评论