ViewGroup和子View的Touch事件分析

来源:互联网 发布:手机知乎怎么发表文章 编辑:程序博客网 时间:2024/04/29 16:08

一.    名词解释

ViewGroup: A ViewGroup is a special viewthat can contain other views (called children.) 

The view group is the baseclass for layouts and views containers. 

View: This class represents the basic buildingblock for user interface components. 

ViewGroup包含多个View

 

二.    ViewGroup和View触摸事件返回值意义

ViewGroup中两个触摸方法

1.    OnInterceptTouchEvent(MotionEventev)

当ACTION_DWON触发函数return false时,后续的ACTION_MOVE,ACTION_UP等事件也会先传递给OnInterceptTouchEvent方法,

并将一系列事件传递给子View的Touch事件

当ACTION_DWON触发函数return true时,后续的ACTION_MOVE,ACTION_UP等事件不会先传递给OnInterceptTouchEvent方法,

也不会传递给子View的Touch事件,而是传递给ViewGroup的OnTouchEvent事件。

2.    OnTouchEvent(MotionEventev)

该方法的返回值机理与键盘响应事件的相同,同样是当已经完整地处理了该事件且不希望其他回调方法再次处理时返回true,否则返回false。

 

三.     ViewGroup和子View触摸事件流程


1.滑动流程:

OnIterceptOnTouchEvent 代号:void1

OnTouchEvent 代号:void2

当手指触摸屏幕时,这时将触发viewgroup的void1方法的ACTION_DOWN方法,返回值为false,

然后触发void1方法的ACTION_MOVE方法,这时会有一个计算判断,当手指的位置发生偏移时,

证明用户想滑动页面,这时return ture,将ACTION_MOVE这个动作传递给void2后续触摸事件将不会触发void1,

而void2根据左边来相应的进行绘图滑动。结束时触发void2的ACTION_UP动作,继而告诉系统触摸事件完成。

3.    点击流程:

当手指触摸屏幕时,这时将触发viewgroup的void1方法的ACTION_DOWN方法,返回值为false,

将ACTION_DOWN动作传递给子view的触摸事件,然后触发void1方法的ACTION_MOVE方法,这时会有一个计算判断,

当手指的位置未发生偏移时,证明用户想点击子view,这时return false,将ACTION_MOVE这个动作传递给子view的触摸事件,

return false,然后用户将手指抬起,这时void1的ACTION_UP动作出发并传递给子view的触摸事件。

子view处理了一整套donw,move,up事件,即点击事件完成。整个过程中完全不会触发ViewGroup的void2.

原创粉丝点击