Android中我们会用到很多机制,eg:触摸事件的分发机制,handler消息的机制,加载视图机制等等,以前也曾了解过,现在系统的整理下来,方便自己和大家查阅。自己会在后面一篇篇的整理,会花些时间,这也是自己第一次写这种文章,多多支持。。。
今天先看下事件的触摸分发机制:要了解分发机制,就要先熟悉下面几个概念
一、触摸事件过程中最重要的3个方法:
dispatchTouchEvent:dispatch是调度发送的意思,这个方法主要是用来分发事件的,如果为true(可以按照字面意思,发送事件),则继续往下分发,false的话(不发送事件),由当前的onTouchEvent处理,事件不往下传递
onTouchEvent:处理执行事件
onInterceptTouchEvent:默认为false,不拦截事件
二、这3个方法的触发顺序
三、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。这里不做陈述
网友评论