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事件分发机制

直接进入正题,在android开发中,手势触碰是经常使用到的。这两天刚好在看这方面的资料,在这里写篇文章做个小总结。 首先必须知道五大布局Layout:LineaLayout,RelativeLayo...

【安卓笔记】touch事件的分发和消费机制

Android 中与 Touch 事件相关的方法包括:dispatchTouchEvent(MotionEvent ev)、onInterceptTouchEvent(MotionEvent ev...

Android 屏幕适配方案

转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/45460089; 本文出自:【张鸿洋的博客】 1、概述大家在Andr...

Android Touch事件传递机制详解 上

最近总是遇到关于Android Touch事件的问题,如:滑动冲突的问题,以前也花时间学习过Android Touch事件的传递机制,可以每次用起来的时候总是忘记了,索性自己总结一下写篇文章避免以后忘...

Android官方MVP项目单元测试

Google在3月份推出了一个项目,用来介绍Android MVP架构的各种组合,可以认为是官方在这方面的最佳实践。令人称道的是除了MVP本身之外,这些工程配备了极其完善的单元测试用例,学习价值极高。...

Android TouchEvent事件传递机制

跟touch事件相关的3个方法: public boolean dispatchTouchEvent(MotionEvent ev);    //用来分派event public boolean on...

Android应用开发之所有动画使用详解

题外话:有段时间没有更新博客了,这篇文章也是之前写了一半一直放在草稿箱,今天抽空把剩余的补上的。消失的这段时间真的好忙,节奏一下子有些适应不过来,早晨七点四十就得醒来,晚上九点四十才准备下班,好像最近...

一条最长的短信息约点多少 Byte?

一条最长的短信息约点多少 Byte? 中文 70 (包括标点),英文 160, 160 个字节。 无意间看到一个这个题目,觉得有些奇怪,怎么不是140个字节呢,后来查阅后发...
  • aerchi
  • aerchi
  • 2015-05-10 17:56
  • 3757

Android中窗口的创建过程

在阅读本文之前建议先阅读我的另外一篇Java层Binder机制详解,因为里面有些地方涉及到通过进程间通过Binder机制通信。 在Android将窗口分为三类:应用窗口,子窗口,系统窗口 应用窗口一...

Android Touch事件传递机制详解 下

尊重原创: 资源下载:http://download.csdn.net/detail/yuanzeyao2008/7660997 在前一篇文章中,我主要讲解了Android源码中的Touch事件的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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