-
事件通过Acticity的DispatchTocuhEvent走到DecorView的superDispatchTouchEvent,再走到ViewGroup再到View
查看全部 -
传递顺序:activiyt window decorView viewGroup view
查看全部 -
Activity事件分发流程
查看全部 -
传递层级,最终传到View,按子类继承顺序分发
首先在Activity上,传递给其所持有的Window,然后给window所持有的DecorView,接着按父子继承关系,依次传递给ViewGroup和View
查看全部 -
ViewGroup时间分发
查看全部 -
ViewGroup:dispatchTouchEvent主要做了3件事
1、去判断是否需要拦截事件
2、在当前ViewGroup中找到用户真正点击的View
3、分发事件到View上
查看全部 -
onInterceptTouchEvent方法会在事件分发的过程中调用,如果返回true,说明当前的ViewGroup会拦截这个事件,事件不会再往子View传递;返回false,当前的ViewGroup不会拦截这个事件,事件继续向子View传递。
ViewGroup是没有onTouchEvent方法的实现的,它是在父类View中实现。如果想让事件终止,不让事件传递到子View中,并且用户的触摸事件,我们会自己进行处理,可以重写onInterceptTouchEvent,让它返回true,同时为了处理用户的触摸事件,我们可以重写onTouchEvent方法,在其中编写一些事件的处理逻辑。
查看全部 -
Activity的事件分发流程图
查看全部 -
传递层级
Activity->Window->DecorView->ViewGroup->View
这里的DecorView就是Window所持有的DecorView,而DecorView又继承自ViewGroup,事件从ViewGroup中进行一个分发,然后才会分发到我们创建的一个个子的ViewGroup和View上面
查看全部 -
事件序列:
从手指按下屏幕开始,到手指离开屏幕所产生的一系列事件。
查看全部 -
事件的类型
1.按下(ACTION_DOWN)
手指刚接触到屏幕的时候,也就是手指按下的动作
2.移动(ACTION_MOVE)
手指在屏幕上去进行移动的一个动作,发生在手指按下之后,不包含按下这个动作,按下这个事件属于移动的前驱事件
3.抬起(ACTION_UP)
手指抬起的动作
4.取消(ACTION_CANCEL)
表示事件的取消。例如,一个ScrollView上有一个Button,按下Button,这个时候Button是可以接收到按下这个事件的。而这个时候,手指不去直接抬起,而是上下滑动,Button的父容器ScrollView就会拦截这个事件,同时Button上就会接收到ACTION_CANCEL这个事件。
查看全部 -
事件分发的对象是谁?
系统把事件封装为MotionEvent对象,事件分发的过程就是MotionEvent分发的过程。
查看全部 -
android傳遞層級
查看全部 -
請輸入筆記內容...
查看全部 -
dispatchtouchEvent(MotionEvent ev) 和 onTouchEvent(MotionEvent ev) 流程圖
查看全部
举报