美文网首页
日更挑战-安卓开发之触摸事件传递机制(被坑版)

日更挑战-安卓开发之触摸事件传递机制(被坑版)

作者: 愿你我皆是黑马 | 来源:发表于2021-05-18 23:25 被阅读0次

    越不懂的越爱装
    大家都同等:IT世界没有难不难,只有是否了解过

    挑战目录

    。。。。

    简书个坑逼,我写了这么久的直接就给我保存的是几个小时前的历史版本,再也不敢用在线编辑器了

    什么是触摸事件?

    安卓中事件分类如下几种:

    1. ACTION_DOWN:手指初次接触到屏幕时触发。
    2. ACTION_MOVE:手指在屏幕上滑动时触发(会多次触发)
    3. ACTION_UP:手指离开屏幕时触发
    4. ACTION_CANCEL:事件被上层拦截时触发
    

    事件如何传递?

    事件传递分为 感应到事件,事件分发,事件拦截,事件处理等几个方面

    感应到事件?

    待了解。。。

    会调用Activity中的dispatchTouchEvent方法。


    事件分发?

    事件分发通过dispatchTouchEvent方法,Activity,View,ViewGroup都有这个方法。
    1.在Activity中的dispatchTouchEvent
    主要用来将事件给ViewGroup分发,最终如果没有被处理,则调用自己的处理。
    public boolean dispatchTouchEvent(MotionEvent ev) {
        //当ACTION_DOWN事件(还有Key,Trackball事件)时,调用Activity.onUserInteraction():
        //可以override该方法得知用户正在与设备交互。
        //对于有一个onUserLeaveHint方法,自动在onPause调用之前(具体不管,这事件无关)
        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
            onUserInteraction();
        }
    
        //调用Activity包含的根视图的dispatchTouchEvent()
        if (getWindow().superDispatchTouchEvent(ev)) {
            return true;
        }
        // 如果superDispatchTouchEvent()返回false
        //都没有拦截该事件的话,则调用Activity的onTouchEvent()
        return onTouchEvent(ev);
    }
    
    2.在ViewGroup中的dispatchTouchEvent
    ViewGroup有多个子View,这里的dispatchTouchEvent的作用是找到合适的View处理该事件
    
    
    
    3.在View中的dispatchTouchEvent (可以说成是View调用处理事件方法的判断)
    View没有子View所以他的dispatchTouchEvent的作用为:分发给某个方法处理当前事件。
    
    
    
    
    
    

    事件拦截?


    事件处理?

    事件处理通过onTouchEvent和setOnTouchListener方法里面传递的回调参数的onTouch方法。Activity,View,ViewGroup都有这两个方法。

    1.在Activity中的onTouchEvent和onTouch
    2.在View中的onTouchEvent和onTouch
    3.在ViewGroup中的onTouchEvent和onTouch
    PS:对于onClick事件

    流程

    1. Down事件流程
    2. Move事件流程
    3. Up事件流程

    为什么会有事件冲突

    事件冲突如何解决

    谷歌对特殊控件事件分发的处理

    源码解析

    1. superDispatchTouchEvent
    2. onUserInteraction
    3. dispatchTouchEvent
    4. onInterceptTouchEvent
    5. onTouchEvent
    6. onClick

    相关文章

      网友评论

          本文标题:日更挑战-安卓开发之触摸事件传递机制(被坑版)

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