首先自定义三个组件,其关系是:MyLayout在最上面,MySubLayout在MyLayout下面,MyView在MySubLayout下面. 一个点击事件进来,首先是DOWN动作,先是MyLayout的onInterceptTouchEvent( )接收这个事件,如果返回true,代表拦截此事件,此事件不会再传至下个MySubLayout的onInterceptTouchEvent,而是直接进入MyLayout的onTouchEvent( )中,在MyLayout的onTouchEvent(…
onInterceptTouchEvent 与 onTouchEvent 分析与MotionEvent在ViewGroup与View中的分发        Notice:本文将紧接着 Android 触屏事件 OnTouch onClick onTouchEvent对于触屏事件的处理和分发 这一片博文来分析,假设您还没有读过这一片博文,强烈建议你先读一次上述博文      OK,言归正传,我们開始吧       近期,一直听到有人在争论关于dispatchTouchEvent这个函数 和 onI…
PS:好久没有写博客了,项目正式开始启动了,但是怎么也打不起精神来...可能还是不适应放假留校...这下一年只能回家一次了...伤感...写篇博客舒坦下... 学习内容:   Android中dispatchTouchEvent和OnInterceptTouchEvent和OnTouchEvent三个方法之间的联系...这三个方法研究了整整一个下午,也没有理解的特别的好...说实话,java的源代码我始终都没有看懂究竟是怎么个调用过程...不过还是把自己理解的结果写一下把...   这三个方法是…
onInterceptTouchEvent()是ViewGroup的一个方法,目的是在系统向该ViewGroup及其各个childView触发onTouchEvent()之前对相关事件进行一次拦截,Android这么设计的想法也很好理解,由于ViewGroup会包含若干childView,因此需要能够统一监控各种touch事件的机会,因此纯粹的不能包含子view的控件是没有这个方法的,如LinearLayout就有,TextView就没有. onInterceptTouchEvent()使用也很…
上一篇文章主要讲述了Android的TouchEvent的分发过程,其中有两个重要的函数:onInterceptTouchEvent和onTouchEvent,这两个函数可被重装以完成特定的逻辑.onInterceptTouchEvent的定义为于ViewGroup中,默认返回值为false,表示不拦截TouchEvent.onTouchEvent的定义位于View中,当ViewGroup要调用onTouchEvent时,会利用super.onTouchEvent.ViewGroup调用onTo…
上一篇文章主要讲述了Android的TouchEvent的分发过程,其中有两个重要的函数:onInterceptTouchEvent和onTouchEvent,这两个函数可被重装以完成特定的逻辑.onInterceptTouchEvent的定义为于ViewGroup中,默认返回值为false,表示不拦截TouchEvent.onTouchEvent的定义位于View中,当ViewGroup要调用onTouchEvent时,会利用super.onTouchEvent.ViewGroup调用onTo…
onInterceptTouchEvent: onInterceptTouchEvent是在ViewGroup里面定义的.Android中的layout布局类一般都是继承此类的.onInterceptTouchEvent是用于拦截手势事件的.每一个手势事件都会先调用onInterceptTouchEvent. onTouchEvent: onTouchEvent相同也是在view中定义的一个方法.处理传递到view 的手势事件.手势事件类型包含ACTION_DOWN,ACTION_MOVE,AC…
http://blog.csdn.net/lvxiangan/article/details/9309927 老实说,这两个小东东实在是太麻烦了,很不好懂,我自己那api文档都头晕,在网上找到很多资料,才知道是怎么回事,这里总结一下,记住这个原则就会很清楚了: 1.onInterceptTouchEvent()是用于处理事件(类似于预处理,当然也可以不处理)并改变事件的传递方向,也就是决定是否允许Touch事件继续向下(子控件)传递,一但返回True(代表事件在当前的viewGroup中会被处理…
onInterceptTouchEvent和onTouchEvent调用时序 onInterceptTouchEvent()是ViewGroup的一个方法,目的是在系统向该ViewGroup及其各个childView触发onTouchEvent()之前对相关事件进行一次拦截,Android这么设计的想法也很好理解,由于ViewGroup会包含若干childView,因此需要能够统一监控各种touch事件的机会,因此纯粹的不能包含子view的控件是没有这个方法的,如LinearLayout就有,T…
总结的不是很好,自己也有点看不懂,正好现在用到了,研究了一个,再次总结,方便大家查看 总则: 1.onInterceptTouchEvent中有个Intercept,这是什么意思呢?她叫拦截,你大概知道她作用了吧,她就是你的亲亲小秘书,有什么事,先找秘书,秘书来决定这个事要不要你亲自处理,既然是秘书,是不是每个人都能有呢?当然不是,这个秘书只是viewgroup的,所以只有继承viewgroup的控件才有,那些textview啊button啊什么的,肯定是没有的,为什么?因为他级别不够(继承自v…
Android事件分发机制可以说是我们Android工程师面试题中的必考题,弄懂它的原理是我们避不开的任务,所以长痛不如短痛,花点时间干掉他,废话不多说,开车啦 Android事件分发机制的发生在View与View之间或者ViewGroup与View之间具有镶嵌的视图上,而且视图上必须为点击可用.当一个点击事件产生后,它的传递过程遵循如下顺序:Activity->Window->View,即事件先传递给Activity,再到Window,再到顶级View,才开始我们的事件分发 Android事…
 dispatchTouchEvent (分发TouchEvent) 处理触摸事件分发,事件(多数情况)是从Activity的dispatchTouchEvent开始的.执行super.dispatchTouchEvent(ev),事件向下分发. onInterceptTouchEvent (拦截TouchEvent) ViewGroup提供的方法,默认返回false,返回true表示拦截. onTouchEvent (处理TouchEvent) View中提供的方法,ViewGroup也有这个…
1.onTouch方法:onTouch方法是View的 OnTouchListener借口中定义的方法,处理View及其子类被touch是的事件处理.当一个View绑定了OnTouchLister后,当有touch事件触发时,就会调用onTouch方法. 当然,前提是touch时间能够传递到指定的view.Q1:为什么会传递不到呢? (当把手放到View上后,onTouch方法被一遍一遍地被调用) /** * Interface definition for a callback to be i…
其中Layout里的onInterceptTouchEvent默认返回值是false,这样touch事件会传递到View控件,Layout里的onTouch默认返回值是false, View里的onTouch默认返回值是true,当我们手指点击屏幕时候,先调用ACTION_DOWN事件,当onTouch里返回值是true的时候,onTouch回继续调用ACTION_UP事件,如果onTouch里返回值是false,那么onTouch只会调用ACTION_DOWN而不调用ACTION_UP. xm…
1. onTouch方法:onTouch方法是View的 OnTouchListener借口中定义的方法,处理View及其子类被touch是的事件处理.当一个View绑定了OnTouchLister后,当有touch事件触发时,就会调用onTouch方法. 当然,前提是touch时间能够传递到指定的view.Q1:为什么会传递不到呢? (当把手放到View上后,onTouch方法被一遍一遍地被调用) /** * Interface definition for a callback to be…
老实说,这两个小东东实在是太麻烦了,很不好懂,我自己那api文档都头晕,在网上找到很多资料,才知道是怎么回事,这里总结一下,记住这个原则就会很清楚了: 1.onInterceptTouchEvent()是用于处理事件(类似于预处理,当然也可以不处理)并改变事件的传递方向,也就是决定是否允许Touch事件继续向下(子控件)传递,一但返回 True(代表事件在当前的viewGroup中会被处理),则向下传递之路被截断(所有子控件将没有机会参与Touch事件),同时把事件传递给当前的控件的onTouc…
参考:http://blog.csdn.net/android_tutor/article/details/7193090   与   http://www.cnblogs.com/kingcent/archive/2011/03/08/1977064.html onInterceptTouchEvent()用于处理事件并改变事件的传递方向. onTouchEvent() 用于处理事件,返回值决定当前控件是否消费(consume)了这个事件. onInterceptTouchEvent()的默认…
SequenceInputStream 介绍 SequenceInputStream 类表示其他输入流的逻辑串联,即文件的合并. 它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止. 合并两个文件 SequenceInputStream 类提供了两个构造函数.我们先来看第一个.  所用的构造函数:  SequenceInputStream(InputStream s1, InputStream s2)…
函数简介: 1.wildcard : 扩展通配符 2.notdir :去除路径 3.patsubst :替换通配符 实例: 建立一个 test 目录,在测试目录下建立一个名为 sub 的子目录 $ mkdir test $ cd test $ mkdir sub 在 test 下,建立 a.c 和 b.c 两个文件,在 sub 目录下,建立 sa.c 和 sb.c 两个文件 写出一个简单的 Makefile src = $(wildcard *.c ./sub/*.c) dir = $(notd…
$(filter pattern-,text) Returns all whitespace-separated words in text that do match any of the pattern words, removing any words that do not match. The patterns are written using '%', just like the patterns used in the patsubst function above. The f…
之后重新理解这个知识点时,又写了一些小例子 String a1 = new String("str01") ; String a2 = "str01" ; System.out.println(a1 == a2) ;//false String a1 = new String("str01") ; a1.intern() ; String a2 = "str01" ; System.out.println(a1 == a2)…
概述 装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象. 我们要需要一个能测试函数运行时间的decorator,可以定义如下: def timer(func): def wrapper(*args, **kwargs): start_time = time.time() res = func(*args, **kwargs) end_time = time.time() print("Run time is: %s&q…
题目如下: 如上图,设A为源点,求A到其他各顶点(B.C.D.E.F)的最短路径.线上所标注为相邻线段之间的距离,即权值.(注:此图为随意所画,其相邻顶点间的距离与图中的目视长度不能一 一对等). 解题步骤如下图所示:…
抛砖引玉: c++中private的用处 我知道我们可以用 public 中的值,把private中的数据给提出来,但是还是搞不懂private该怎么用,或者说在一个具体程序中,private有什么用. class fun{ public: void setname(string x) { name =x; } string getname() { return name; } private: string name; }; /*主函数*/ int main() { fun ob; ob.se…
虽说这个问题不是很难...动动手就能看出答案...但是似乎不太容易理解...几次尝试把这个问题说明白....但是好像感觉说不明白....(顿时想起了那句话----说不明白就是自己还不明白! 我怎么可能不明白..so) 这里面牵扯到Activity的dispatchTouchEvent, onTouchEvent以及ViewGroup的dispatchTouchevent, onInterceptTouchEvent, onTouchEvent还有View的dispatchTouchEvent,…
在Android中,View的结构是树状的,所以,当触发触摸事件的时候,其事件传递也是从上之下一层层的传递.下面我们结合例子来一点点进行分析. 首先,我们需要了解事件处理中的几个方法: 1.在ViewGroup中,事件分为dispatchTouchEvent(事件的分发),onInterceptTouchEvent(事件的拦截),onTouchEvent(事件的处理). 2.在View中,事件分为dispatchTouchEvent(事件的分发),onTouchEvent(事件的处理). 下面是…
出处:https://blog.csdn.net/caifengyao/article/details/65437695 在Android中,View的结构是树状的,所以,当触发触摸事件的时候,其事件传递也是从上之下一层层的传递.下面我们结合例子来一点点进行分析. 首先,我们需要了解事件处理中的几个方法: 1.在ViewGroup中,事件分为dispatchTouchEvent(事件的分发),onInterceptTouchEvent(事件的拦截),onTouchEvent(事件的处理). 2.…
http://www.cnblogs.com/jqyp/archive/2012/04/25/2469758.html dispatchTouchEvent       分发 onInterceptTouchEvent  拦截 onTouchEvent               处理…
事件分发在Android中是很重要的基础知识,网上相关的文章也很多,但是花了很多精力看了很多别人的分析总结,最终的感觉还是似懂非懂,所以决定自己动手研究一下,去发现其中的规律.本文顺着我自己的思路去研究总结事件机制,力求解读任何情况下事件是怎么传递的,并结合源码分析原因,可能并不易懂,有问题可以留言交流. 介绍一下我的研究思路:首先写一个demo加一些日志看看默认情况下事件是怎么传递的,分析默认情况下的事件传递日志,会提出很多疑问,然后修改demo逐个解决这些疑问. 动手之前要明确事件分发机制要…
本文转载于:http://www.cnblogs.com/avenwu/archive/2014/04/16/3669367.html 侧拉菜单作为常见的导航交互控件,最开始在没有没有android官方控件时,很多时候都是使用开源的SlidingMenu,一直没机会分析侧拉菜单的实现机理,本文将分析android.support.v4.widget.DrawerLayout的使用及实现. 官方介绍 DrawerLayout acts as a top-level container for wi…