`
king_tt
  • 浏览: 2111383 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Android 事件触发机制

 
阅读更多

本文转自:http://www.cnblogs.com/kingcent/archive/2011/03/08/1977059.html

图解见:http://www.cnblogs.com/jqyp/archive/2012/04/25/2469758.html

首先,这篇文章仅仅针对于由于触摸(Touch)而触发的事件。

Android的事件:onClick, onScroll, onFling等等,都是由许多个Touch组成的。其中Touch的第一个状态肯定是ACTION_DOWN, 表示按下了屏幕。之后,touch将会有后续事件,可能是:

  • ACTION_MOVE //表示为移动手势

  • ACTION_UP //表示为离开屏幕

  • ACTION_CANCEL //表示取消手势,不会由用户产生,而是由程序产生的

一个Action_DOWN, n个ACTION_MOVE, 1个ACTION_UP,就构成了Android中众多的事件。

在Android中,有一类控件是中还可以包含其他的子控件,这类控件是继承于ViewGroup类,例如:ListView, Gallery, GridView。

还有一类控件是不能再包含子控件,例如:TextView。

本文的主要讨论对象就是ViewGroup类的控件嵌套时事件触发情况。

对于ViewGroup类的控件,有一个很重要的方法,就是onInterceptTouchEvent(),用于处理事件并改变事件的传递方向,它的返回值是一个布尔值,决定了Touch事件是否要向它包含的子View继续传递,这个方法是从父View向子View传递。

而方法onTouchEvent(),用于接收事件并处理,它的返回值也是一个布尔值,决定了事件及后续事件是否继续向上传递,这个方法是从子View向父View传递。

touch事件在 onInterceptTouchEvent()和onTouchEvent以及各个childView间的传递机制完全取决于onInterceptTouchEvent()和onTouchEvent()的返回值。返回值为true表示事件被正确接收和处理了,返回值为false表示事件没有被处理,将继续传递下去。

ACTION_DOWN事件会传到某个ViewGroup类的onInterceptTouchEvent,如果返回false,则DOWN事件继续向子ViewGroup类的onInterceptTouchEvent传递,如果子View不是ViewGroup类的控件,则传递给它的onTouchEvent。

如果onInterceptTouchEvent返回了true,则DOWN事件传递给它的onTouchEvent,不再继续传递,并且之后的后续事件也都传递给它的onTouchEvent。

如果某View的onTouchEvent返回了false,则DOWN事件继续向其父ViewGroup类的onTouchEvent传递;如果返回了true,则后续事件会直接传递给其onTouchEvent继续处理。(后续事件只会传递给对于必要事件ACTION_DOWN返回了true的onTouchEvent)

总结一下就是:onInterceptTouchEvent可以接受到所有的Touch事件,而onTouchEvent则不一定。

分享到:
评论

相关推荐

    Android 事件触发机制的深入学习

    主要介绍了 Android 事件触发机制的深入学习的相关资料,需要的朋友可以参考下

    android之Touch事件处理机制测试

    android之Touch事件处理机制测试, 滑动事件冲突解决,ViewGroup中事件触发和传递机制

    Android onNewIntent()触发机制及注意事项

    一、onNewIntent() 在IntentActivity中重写下列方法:onCreate onStart onRestart onResume onPause onStop onDestroy onNewIntent 1、其他应用发Intent,执行下列方法: onCreate onStart ...

    谈谈对Android View事件分发机制的理解

    最近因为项目中用到类似一个LinearLayout中水平布局中,有一个TextView和Button,然后对该LinearLayout布局设置点击事件,点击TextView能够触发该点击事件,然而奇怪的是点击Button却不能触发。然后google到了解决...

    Android基于广播事件机制实现简单定时提醒功能代码

    本文实例讲述了Android基于广播事件机制实现简单定时提醒功能代码。分享给大家供大家参考,具体如下: 1.Android广播事件机制 Android的广播事件处理类似于普通的事件处理。不同之处在于,后者是靠点击按钮这样的...

    Android-Event-driver.zip_Looper_android_android Handler_event

    Android 事件捕捉和处理流程分析 ,在Android系统中,键盘按键事件是由WindowManagerService服务来管理的,然后再以消息的形式来分发给应用程序处理,不过和普通消息不一样,它是由硬件中断触发的;在上一篇文章...

    android handler 用法

    用android的handler机制作了一个刷新画面的小例子。

    android按键响应流程

    详细的描述了 linux的按键响应机制 以及在framework层的处理机制。

    Android平台Native代码的崩溃捕获机制及实现

    在Android平台,nativecrash一直是crash里的大头。nativecrash具有上下文不全、出错信息模糊...在Unix-like系统中,所有的崩溃都是编程错误或者硬件错误相关的,系统遇到不可恢复的错误时会触发崩溃机制让程序退出,如

    ARM Cortex-A8和Android 4.x联动报警系统

    第一部分课程从最基础的Android应用开发环境搭建开始,简单讲解了Android界面及事件处理之后,深入剖析Android Handler多线程机制,重点讲解Android NDK应用层与驱动的通信; 第二部分内容,先简单讲解Android系统...

    Android高级编程--源代码

    因此,对Android感兴趣的开发人员都把Google在2008年发布Android这一举措作为移动技术发展史上的一个非常令人期待的重大事件。  由于Android构建在开源代码的框架之上,而且提供了强大的SDK库和开放的理念,所以它...

    Android在Fragment中实现监听触摸事件

    如果大家有更好的机制,可以留言交流,下面来看看详细的介绍: 大家都知道,我们的activity中有onTouchEvent方法,可以用来实现触摸事件的监听。 activity的触摸事件 @Override public boolean onTouchEvent...

    Android垃圾回收机制及程序优化System.gc

    1.垃圾收集算法的核心思想  Java语言建立了垃圾收集机制,用以跟踪正在使用的对象和发现并回收不再使用(引用)的对象。该机制可以有效防范动态内存分配中可能发生的两个危险:因...2.触发主GC(Garbage Collector)的条

    android借助EventBus传递事件

    EventBus是一个非常强大的开源框架,可以同线程,跨线程传递事件,利用反射机制触发。总所周知,安卓无法在子线程中操控ui控件,此框架可以解决这个问题,而且在大项目,非常频繁的需要跨线程传递事件的时候,方便的...

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    android学习教程--广播机制

    所谓广播机制是指,当触发一个事件时会做出相应的动作,比如说当别人发一条短信给你,然后BroadcastReceiver会监听这个事件(Intent),并判断用到了Intent中的Actiond的哪个BroadcastActions,如SMS_RECEIVED就是...

    android开发秘籍

    11.3 android 的安全机制 241 11.4 android 的进程间通信 242 11.5 android 的备份管理器 247 11.5.1 秘诀95:备份运行时数据 247 11.5.2 秘诀96:备份文件到云端 248 11.5.3 秘诀97:触发备份与还原操作 249 ...

    Mobile-Sandbox: Having a Deeper Look into Android Applications

    这篇论文描述了一个沙箱系统,使用静态分析技术和动态分析技术相结合,使用相应的行为触发机制来触发待检测的android恶意样本

Global site tag (gtag.js) - Google Analytics