Android开发事件分发解析
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); }
上一篇: 家里的洗衣机坏了
推荐阅读
-
Android View的事件分发机制
-
android开发基础知识点(有关android入门知识解析)
-
解析离线安装Eclipse的Android ADT开发插件的具体操作(图文)
-
一文读懂 Android TouchEvent 事件分发、拦截、处理过程
-
Android开发实现Fragment监听返回键事件功能的方法
-
iOS开发- runtime基本用法解析和用runtime给键盘添加工具栏和按钮响应事件
-
Android 开发艺术探索之Window和WindowManager解析
-
Android 开发线程和线程池解析
-
android开发基础教程之android生命周期解析
-
Android开发中常见面试题解析