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

2017-12-18  本文已影响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。这里不做陈述

上一篇下一篇

猜你喜欢

热点阅读