Touch事件的传递机制?

原创 2016年08月28日 16:17:20

 关于Touch事件的传递机制,可以由以下几个问题分析 : 

      1、一个完整的touch事件由哪几个构成;

2、touch事件在父控件和子控件之间是怎么传递的;

3、滑动冲突的解决方法有几种。


    一个完整的touch事件,由一个down事件、n个move事件,一个up事件组成。touch事件一般的传递流程Activity------>window(唯一实现类是PhoneWindow)------>顶级View(DecorView)-------->ViewGroup------->View。


对于具有View的父控件(ViewGroup)与子控件(View)的传递机制: 当对子控件进行点击执行Touch事件时, 由父控件首先获取Touch事件执行分发事件dispatchTouchEvent(), 默认将事件分发处理; 接着开始调用父控件的拦截事件(处理拦截孩子的事件)onInterceptTouchEvent(),

(1)默认对孩子做不拦截处理(对于点击孩子的Touch事件交由孩子自己处理),在拦截事件中默认返回false;直接交给孩子自己处理,由子控件开始执行自身的分发事件dispatchTouchEvent(),默认分发并执行自身的onTouchEvent();(ACTION_DOWN ACTION_MOVE ACTION_UP) ; 子控件若选择消费事件,对Touch进行处理,则在方法中做出相应处理后返回true; 若子控件返回false则代表对Touch事件不做处理,这时事件会返回父控件交由父控件的onTouchEvent()去处理,由父控件选择处不处理,事件最终都以某一部分在onTouchEvent()方法中返回true表示事件传递结束;

  (2) 若在onInterceptTouchEvent()中对孩子进行拦截处理,则事件直接交给父控件的onTouchEvent()进行处理,孩子的所用方法都不会被调用,对于Touch事件也不会做任何处理


 滑动冲突的常见场景及处理原则
  方向不同。如ViewPager里面嵌套ListView。-------->判断左右滑动的绝对值和上下滑动的绝对值的大小,往大的那端动。 

方向相同。如ViewPager嵌套ViewPager-------->

1外部拦截法,重写外部ViewPager的onIntercepterTouchEvent()和onTouchEvent()方法,拦截某些时候不让子ViewPager获取touch事件。 

 2内部拦截法,重写内部ViewPager的onIntercepterTouchEvent()和onTouchEvent(),并调用parent.requestDissallowIntercepterTouchEvent(boolen disallowIntercepter)方法请求父控件拦截。

Android学习----响应被父控件拦截的touch event

Android中的View可以分为两类: 一类是有子控件(Child View)的控件ViewGroup,比如LinearLayout 另一类就是没有child View的纯粹控件,例如Image...

ScrollView嵌套EditText,导致EditText显示多行时滑动失效的问题

ScrollView嵌套EditText

android中handler和looper的工作原理

在android中,UI线程和其他子线程之间传递数据一般要用到handler和looper,那么其工作原理是 什么呢? 我们通用的方法是:在UI线程中创建handler--将handler传递到子线...

Android Touch事件传递机制解析

  • 2014年03月14日 17:38
  • 73KB
  • 下载

android Touch事件传递机制

  • 2015年01月26日 17:33
  • 4.76MB
  • 下载

Cocostudio touch事件传递机制

cocos2d-x  版本2.2.3 cocostudio 版本
  • kkk0526
  • kkk0526
  • 2014年11月24日 11:36
  • 1836

Android Touch事件传递机制解析

在讲正题之前我们讲一段有关任务传递的小故事,抛砖迎玉下: 话说一家软件公司,来一个任务,分派给了开发经理去完成: 开发经理拿到,看了一下,感觉好简单,于是 开发经理:分派给了开发组长 开发...

Android Touch事件传递机制

版权声明:本文为博主原创文章,未经博主允许不得转载。 Touch事件传递机制,其实说起来还是比较复杂的,所涉及的内容和细节也都比较多。为了方便理解,本文将由浅入深的进行讲解。 首先要知道我...

Android Touch事件传递机制

Touch事件传递等级事件的传递分为ViewGroup、View、Activity三个等级 顺序为ViewGroup->View->Activity布局结构如下,最外层为Activity:...

Android Touch事件传递机制解析

开篇语:最近程序在做一个小效果,要用到touch,结果整得云里面雾里的,干脆就好好把android touch机制好好看了一下,呵呵。。 android系统中的每个ViewGroup的子类都具有...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Touch事件的传递机制?
举报原因:
原因补充:

(最多只允许输入30个字)