当前位置: 移动技术网 > 移动技术>移动开发>Android > Android开发事件分发解析

Android开发事件分发解析

2018年04月11日  | 移动技术网移动技术  | 我要评论

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);
    }

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网