美文网首页
类似淘宝首页滑动分析

类似淘宝首页滑动分析

作者: 我要离开浪浪山 | 来源:发表于2023-05-10 10:24 被阅读0次

    1、单点触摸

    根据面向对象思想,事件被封装成 MotionEvent 对象

    事件 简介
    ACTION_DOWN 手指 初次接触到屏幕 时触发
    ACTION_MOVE 手指 在屏幕上滑动 时触发,会会多次触发
    ACTION_UP 手指 离开屏幕 时触发
    ACTION_CANCEL 事件 被上层拦截 时触发

    手指落下(ACTION_DOWN) -> 移动(ACTION_MOVE) ->离开(ACTION_UP)

    2、多点触摸

    多点触控( Multitouch,也称 Multi-touch ),即同时接受屏幕上多个点的人机交互操作,多点触控是从 Android 2.0 开始引入的功能

    事件 简介
    ACTION_DOWN 第一个 手指 初次接触到屏幕 时触发
    ACTION_MOVE 手指 在屏幕上滑动 时触发,会多次触发
    ACTION_UP 最后一个 手指 离开屏 时触发
    ACTION_POINTER DOWN 有非主要的手指按下(即按下之前已经有手指在屏幕上)
    ACTION _POINTER UP 有非主要的手指抬起(即抬起之后仍然有手指在屏幕上).
    以下事件类型不推荐使用 一以下事件在 2.2 版本以上被标记为废弃一-
    ACTION_POINTER 1 第 2 个手指按下,已废弃,不推荐使用
    DOWNACTION _POINTER 2 第 3个手指按下,已废弃,不推荐使用。
    DOWNACTION_POINTER 3 第 4 个手指按下,已废弃,不推荐使用。
    DOWNACTION POINTER 1 第 2 个手指抬起,已废弃,不推荐使用。
    UPACTION POINTER 2 第 3个手指抬起,已废弃,不推荐使用
    UPACTION POINTER 3 UP 第 4 个手指抬起,已废弃,不推荐使用

    3、手势

    6930002b33d03e0043c6996cbf86394.png

    4、 Android页面View的体系结构

    c115ec08f8debfa86cd46e60ec3f71a.png

    5、事件的处理函数

    类型 相关方法 Activit ViewGroup View
    事件分发 dispatchTouchEvent
    事件拦截 onlnterceptTouchEvent
    事件消费 onTouchEvent 是或否

    6、事件分发的大致流程

    91d678413c550a724cad72022fbada3.png

    7、事件消费的大致流程

    494534357311d5cdcf9012c9b6d13c2.png

    8、事件分发代码

     public boolean dispatchTouchEvent(MotionEvent ev) {
            boolean result = false; // 默认状态为没有消费过
            if (!onInterceptTouchEvent(ev)) {  // 如果没有拦截交给子View
                result = child.dispatchTouchEvent(ev);
            }
            if (!result) { // 如果事件没有被消费,询问自身onTouchEvent
                result = onTouchEvent(ev);
            }
            return result;
        }
    
    29dd2a0688714bcd84986ac0e0c7ba4.png

    9、View dispatchTouchEvent

    aa797155323c1b5534ec749e5c87438.png

    相关文章

      网友评论

          本文标题:类似淘宝首页滑动分析

          本文链接:https://www.haomeiwen.com/subject/mandsdtx.html