【Android 事件分发】ItemTouchHelper 源码分析 ( OnItemTouchListener 事件监听器源码分析 二 )(二)

简介: 【Android 事件分发】ItemTouchHelper 源码分析 ( OnItemTouchListener 事件监听器源码分析 二 )(二)

2、Activity.onTouchEvent 方法事件传递机制


事件来源 :


① 布局容器 ViewGroup 的 dispatchTouchEvent 方法返回 false ;


② 布局容器 ViewGroup 的 onTouchEvent 方法返回 false / super.onTouchEvent(event) ;



事件分发 : 这是事件传递的终点, 返回值无所谓


① 返回 true 说明事件被消费了 ;


 

/**
     * 针对 ACTION_DOWN 事件分析 :
     *  事件来源 :
     *      布局容器 ViewGroup 的 dispatchTouchEvent 方法返回 false
     *      布局容器 ViewGroup 的 onTouchEvent 方法返回 false / super.onTouchEvent(event)
     *   事件分发 : 这是事件传递的终点, 返回值无所谓
     *      返回 true 说明事件被消费了
     *
     * @param event
     * @return
     */
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        return super.onTouchEvent(event);
    }





三、ViewGroup 的事件传递



1、ViewGroup.dispatchTouchEvent 方法事件传递机制


 

/**
     * 针对 ACTION_DOWN 事件分析 :
     *  事件来源 :
     *      从 Activity 的 dispatchTouchEvent 传递而来
     *      从父容器 ViewGroup 的 dispatchTouchEvent 传递而来
     *  事件分发 :
     *      如果返回 true, 表示事件被消费, 停止传递
     *      如果返回 false, 则传递给父控件的 onTouchEvent 方法
     *      如果返回 super.dispatchTouchEvent(ev) , 则继续向下传递到 onInterceptTouchEvent 方法
     *
     * @param ev
     * @return
     */
    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        return super.dispatchTouchEvent(ev);
    }



2、ViewGroup.onInterceptTouchEvent 方法事件传递机制


 

/**
     * 针对 ACTION_DOWN 事件分析 :
     *  事件来源 :
     *      从 本类 的 dispatchTouchEvent 方法传递而来
     *  事件分发 :
     *      返回 true, 则停止向后传递, 执行本类的 onTouchEvent 方法
     *          如果需要拦截, 返回true
     *      返回 false / super.onInterceptTouchEvent(ev),
     *          则继续向 子容器/子组件 的 dispatchTouchEvent 方法传递; ( 这里是子组件 )
     *          默认不拦截
     *
     * @param ev
     * @return
     */
    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        return super.onInterceptTouchEvent(ev);
    }



3、ViewGroup.onTouchEvent 方法事件传递机制


 

/**
     * 针对 ACTION_DOWN 事件分析 :
     *  事件来源 :
     *      本类的 onInterceptTouchEvent 方法返回 true
     *      子组件/子容器 的 dispatchTouchEvent 方法返回 false
     *      子组件/子容器 的 onTouchEvent 方法返回 false / super.onTouchEvent(event)
     *   事件分发 :
     *      返回 true 说明事件被消费了, 不再向下传递
     *      返回 false / super.onTouchEvent(event) , 则需要继续向下传递
     *          向父容器的 onTouchEvent 传递
     *
     *
     * @param event
     * @return
     */
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        return super.onTouchEvent(event);
    }






四、View 的事件传递



1、View .dispatchTouchEvent 方法事件传递机制


 

/**
     * 针对 ACTION_DOWN 事件分析 :
     *  事件来源 :
     *      父容器 ViewGroup 的 onInterceptTouchEvent 如果返回 false / super.onInterceptTouchEvent(ev)
     *          将事件传递到该方法
     *  事件分发 :
     *      如果返回 true, 表示事件被消费, 停止传递
     *      如果返回 false, 则传递给父控件的 onTouchEvent 方法
     *      如果返回 super.dispatchTouchEvent(ev) , 则向本类的 onTouchEvent 方法传递
     *
     * @param event
     * @return
     */
    @Override
    public boolean dispatchTouchEvent(MotionEvent event) {
        return super.dispatchTouchEvent(event);
    }


2、View .onTouchEvent 方法事件传递机制


 

/**
     * 针对 ACTION_DOWN 事件分析 :
     *  事件来源 :
     *      本类的 dispatchTouchEvent 方法返回 super.dispatchTouchEvent(event)
     *   事件分发 :
     *      返回 true 说明事件被消费了, 不再向下传递
     *      返回 false / super.onTouchEvent(event) , 则需要继续向下传递
     *          向父容器的 onTouchEvent 传递
     *
     *
     * @param event
     * @return
     */
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        return super.onTouchEvent(event);
    }




目录
相关文章
|
3月前
|
Android开发
Android面试高频知识点(1) 图解Android事件分发机制
Android面试高频知识点(1) 图解Android事件分发机制
|
3月前
|
Android开发
Android面试高频知识点(1) 图解 Android 事件分发机制
Android面试高频知识点(1) 图解 Android 事件分发机制
52 1
|
3月前
|
XML 前端开发 Android开发
Android面试高频知识点(1) 图解Android事件分发机制
Android面试高频知识点(1) 图解Android事件分发机制
Android面试高频知识点(1) 图解Android事件分发机制
|
3月前
|
Android开发
Android 事件分发机制详细解读
Android 事件分发机制详细解读
47 5
|
5月前
|
图形学 Android开发
小功能⭐️Unity调用Android常用事件
小功能⭐️Unity调用Android常用事件
|
5月前
|
Android开发
Android面试高频知识点(1) 图解 Android 事件分发机制
在Android开发中,事件分发机制是一块Android比较重要的知识体系,了解并熟悉整套的分发机制有助于更好的分析各种点击滑动失效问题,更好去扩展控件的事件功能和开发自定义控件,同时事件分发机制也是Android面试必问考点之一,如果你能把下面的一些事件分发图当场画出来肯定加分不少。废话不多说,总结一句:事件分发机制很重要。
208 9
|
5月前
|
开发工具 Android开发
Android项目架构设计问题之组件A通知组件B某个事件的发生如何解决
Android项目架构设计问题之组件A通知组件B某个事件的发生如何解决
47 0
|
7月前
|
Android开发
39. 【Android教程】触摸事件分发
39. 【Android教程】触摸事件分发
53 2
|
7月前
|
XML Android开发 数据格式
37. 【Android教程】基于监听的事件处理机制
37. 【Android教程】基于监听的事件处理机制
105 2
|
8月前
|
存储 Java Linux
Android系统获取event事件回调等几种实现和原理分析
Android系统获取event事件回调等几种实现和原理分析
512 0