Android开发事件分发解析。
首先了解事件分发机制 ?要简单了解下Android触摸屏幕的机制,这里我只说三个也是最常用的事件,被封装MotionEvent类中,
? public static final int ACTION_DOWN ? ? ? ? ? ? = 0; //当手指按下屏幕任何地方就会触发,并且一套触摸事件中只会触发一次
? public static final int ACTION_UP ? ? ? ? ? ? ? = 1;//当手指离开屏幕任何地方就会触发,并且一套触摸事件中只会触发一次
? public static final int ACTION_MOVE ? ? ? ? ? ? = 2;//当手指按在屏幕上并且滑动,就会触发,一套触摸事件中可能会触发多次或者一次也没有
基本上这三种类型的事件就组成一套完整的触摸流程,一次down 一次up ?n个move?
接下来画一个最简单的草图,包含activity 和viewgroup ,view
第一条定律 Android 所有的 事件 都是有activity 接收,传递给viewGroup ,viewGroup传递给View,有最外层向内层分发,但是事件到底交给谁处理呢,这里就用到了事件分发的方法,也就是事件分发机制的核心
事件分发就像是一个公司,有一个功能要实现,(Activity)cto说给你们个机会,然后就把(dispatchTouchEvent)事件分发(ViewGroup)部门领导,部门领导说这个机会让给(View)你,就把(dispatchTouchEvent) 事件分发给了(View)你, 然后你发现 你(onTouchEvent)处理不了啊,你又返回给(ViewGroup)部门领导,(ViewGroup)部门领导一看我也(onTouchEvent)处理不了,又返回给(Activity)cto了,最后cto说我(onTouchEvent)处理不了,就放弃了这个功能
1我们从最外层开始了解,activity 其中它有两个方法
第一个,分发方法,activity 通过这个方法分配给ViewGroup或者View
public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { onUserInteraction(); } if (getWindow().superDispatchTouchEvent(ev)) { return true; } return onTouchEvent(ev); }
如对本文有疑问, 点击进行留言回复!!
IjkPlayer【1】 Demo Android的最简单实现
一起Talk Android吧(第二百六十回:Android中的BottomNavigationView概述)
网友评论