android 事件传递机制 心得

看了网上很多资料。

最后我发现可以用很简单的几句话就能把它说清楚

1 每个 viewgroup 内都有 三个方法

a  dispatchTouchEvent  是自己决定要不要(管他爹)要这个苹果的 一般使用方法是 在此方法内
     getParent().requestDisallowInterceptTouchEvent(false/true)
      true表示要了, 苹果拿到手  false 表示 不要了,那这个苹果还在他爹那里
b  onintercepTouchEvent  是这个苹果要不要往下发的,(到了这一步 说明上一步是 要了,苹果拿到手)

c  onTouchEvent  苹果自己吃了,(这一步被执行到的话比较特殊,分两种情况,

              第二是 就没有往下发 onintercepTouchEvent  返回 true

              直接自己吃掉了,
               第一种是,往下发了,onintercepTouchEvent  返回 false(默认情况)
                但是他儿子不要,又返回上来了,子view的ontouch  返回 false                他就有机会吃到了)

补充知识   view 只有 ontouch 方法  没有 dispatch  和 intercept  方法,     view 的ontouch 方法默认返回true 
时间: 2024-08-26 17:55:09

android 事件传递机制 心得的相关文章

android事件传递机制详解

本篇内容将结合Android源码来分析Android的事件传递机制.众所周知,点按.滑动.触摸构成了Android等智能设备的基本操作,几乎所有的应用都通过对触摸屏的操作来进行应用程序的使用.那么,在Android中,触摸事件是如何响应及传递的呢,通过本篇内容你将有一个初步的了解. 实验环境 OS X 10.9 Eclipse(ADT) Android源码版本:API Level 19(Android 4.4) Android事件构成 在Android中,事件主要包括点按.长按.拖拽.滑动等,点

Android事件传递机制(转)

Android事件构成 在Android中,事件主要包括点按.长按.拖拽.滑动等,点按又包括单击和双击,另外还包括单指操作和多指操作.所有这些都构成了Android中的事件响应.总的来说,所有的事件都由如下三个部分作为基础: 按下(ACTION_DOWN) 移动(ACTION_MOVE) 抬起(ACTION_UP) 所有的操作事件首先必须执行的是按下操作(ACTIONDOWN),之后所有的操作都是以按下操作作为前提,当按下操作完成后,接下来可能是一段移动(ACTIONMOVE)然后抬起(ACTI

Android事件传递机制

实验环境 OS X 10.9 Eclipse(ADT) Android源码版本:API Level 19(Android 4.4) Android事件构成 在Android中,事件主要包括点按.长按.拖拽.滑动等,点按又包括单击和双击,另外还包括单指操作和多指操作.所有这些都构成了Android中的事件响应.总的来说,所有的事件都由如下三个部分作为基础: 按下(ACTION_DOWN) 移动(ACTION_MOVE) 抬起(ACTION_UP) 所有的操作事件首先必须执行的是按下操作(ACTIO

Android事件传递机制详解及最新源码分析——ViewGroup篇

在上一篇<Android事件传递机制详解及最新源码分析--View篇>中,详细讲解了View事件的传递机制,没掌握或者掌握不扎实的小伙伴,强烈建议先阅读上一篇. 好了,废话还是少说,直奔主题,开始本篇的ViewGroup事件传递机制探索之旅. 依然从简单的Demo例子现象开始分析 新建安卓工程,首先自定义一个Button以及一个RelativeLayout,很简单,只是重写了主要与事件传递机制相关的方法,代码如下: 自定义WLButton类: 1 public class WLButton e

转:Android事件传递机制

转:这里 本文为InfoQ中文站特供稿件,首发地址为:http://www.infoq.com/cn/articles/android-event-delivery-mechanism.如需转载,请与InfoQ中文站联系. 运用的前提是掌握掌握的本质是理解 本篇内容将结合Android源码来分析Android的事件传递机制.众所周知,点按.滑动.触摸构成了Android等智能设备的基本操作,几乎所有的应用都通过对触摸屏的操作来进行应用程序的使用.那么,在Android中,触摸事件是如何响应及传递

细说Android事件传递机制(dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent)

本文背景:前些天用到了之前写的自定义图片文字复合控件,在给他设置监听时遇到了麻烦.虽然最后解决了问题,但发现在不重写LinearLayout的onInterceptTouchEvent时,子ImageView.子TextView.父Linearlayout三者不同的属性配置(android:clickable android:focuseable)会造成自定义控件onClick监听失败.或成功.复写了父Linearlayout 的onInterceptTouchEvent时,监听不受子图片.子文

Android事件传递机制(dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent)

一.View的dispatchTouchEvent和onTouchEvent 探讨Android事件传递机制前,明确android的两大基础控件类型:View和ViewGroup.View即普通的控件,没有子布局的,如Button.TextView. ViewGroup继承自View,表示可以有子控件,如Linearlayout.Listview这些.而事件即MotionEvent,最重要的有3个: (1)MotionEvent.ACTION_DOWN  按下View,是所有事件的开始 (2)M

android事件传递机制的浅谈

想必大家有时会遇到需要自定义控件吧,这个时候就会遇到事件的传递和处理了,非常繁琐啊!百度上面一大票关于事件的传递机制,但是都千篇一律,都是dispatchTouchEvent 返回true,则事件被拦截,false则分发给子控件之类的,经过几天的研究发现这个事件传递并没有说的这么简单也没有想象中的难. 一般的点击事件.滑动事件都是用ACTION_UP.ACTION_MOE.ACTION_DOWN组成的,android应用里面默认情况下,触摸事件是从activity开始传递,假设里面的view都不

android事件传递机制以及onInterceptTouchEvent()和onTouchEvent()详解二之小秘与领导的故事

总结的不是很好,自己也有点看不懂,正好现在用到了,研究了一个,再次总结,方便大家查看 总则: 1.onInterceptTouchEvent中有个Intercept,这是什么意思呢?她叫拦截,你大概知道她作用了吧,她就是你的亲亲小秘书,有什么事,先找秘书,秘书来决定这个事要不要你亲自处理,既然是秘书,是不是每个人都能有呢?当然不是,这个秘书只是viewgroup的,所以只有继承viewgroup的控件才有,那些textview啊button啊什么的,肯定是没有的,为什么?因为他级别不够(继承自v