美文网首页
说说Android中的那些机制1-触摸事件分发机制

说说Android中的那些机制1-触摸事件分发机制

作者: 春霖初盛 | 来源:发表于2017-12-18 14:51 被阅读0次

    Android中我们会用到很多机制,eg:触摸事件的分发机制,handler消息的机制,加载视图机制等等,以前也曾了解过,现在系统的整理下来,方便自己和大家查阅。自己会在后面一篇篇的整理,会花些时间,这也是自己第一次写这种文章,多多支持。。。

    今天先看下事件的触摸分发机制:要了解分发机制,就要先熟悉下面几个概念

    一、触摸事件过程中最重要的3个方法:

    dispatchTouchEvent:dispatch是调度发送的意思,这个方法主要是用来分发事件的,如果为true(可以按照字面意思,发送事件),则继续往下分发,false的话(不发送事件),由当前的onTouchEvent处理,事件不往下传递

    onTouchEvent:处理执行事件

    onInterceptTouchEvent:默认为false,不拦截事件

    二、这3个方法的触发顺序


    图0 

    三、View和ViewGroup中的方法

    Activity:dispatchTouchEvent和onTouchEvent和

    ViewGroup中有: dispatchTouchEvent和onInterceptTouchEvent和onTouchEvent。

    View:dispatchTouchEvent和onTouchEvent

    一、下面我们来讨论几种布局嵌套点击的情况

    1、最基本的嵌套情况

    图1

    这个是点击Linearlayout的打印结果如下:

    图2(图1点击linearlayout的打印情况)

    这个是点击button之后的打印结果如下:

    图3(图1点击button之后的打印情况)

    2个问题:1为什么会出现重复3次打印的现象,2如果一直按着不松手的话,为什么会一直打印(调用这个方法)

    因为“触摸事件由Action_Down、Action_Move、Aciton_UP组成,其中一次完整的触摸事件中,Down和Up都只有一个,Move有若干个,可以为0个。”,这里补充下其实UP事件是可能为0个的。

    所以每次触摸都有3次打印

    1、viewgroup和view并列的情况


    补:除了上面这3个方法,其实还有很多其他的方法,eg:带key的都是电视的遥控器的:dispatchKeyEvent和dispatchKeyEventPreIme  带hover的都是鼠标的处理事件:dispatchHoverEvent和onHoverEvent。这里不做陈述

    相关文章

      网友评论

          本文标题:说说Android中的那些机制1-触摸事件分发机制

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