- 浏览: 283635 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
wakikyou320:
楼主能否共享jar包呢?都木找到额
Android应用开发中如何使用隐藏API -
ihopethatwell:
注释/etc/apt/sources.list中 #deb h ...
ubuntu安装android 2.3 -
qq123zhz:
有wma和mp3的吗?
JAVA 读取 ASF(WMA 和 WMV)文件信息 -
zhmeup:
doveqian 写道
朋友:将android 2.3的set ...
debug调试setting源码 -
doveqian:
帮忙下:doveqian@163.com
debug调试setting源码
在Android中,Activity和View都能接收触摸和按键事件,如果响应事件只需要在继承类里复写事件函数即可。
1.在只有Activity的情况:
1)Touch事件触发流程:
首先触发dispatchTouchEvent
然后触发onUserInteraction
再次onTouchEvent
如果是点击的话,紧跟着下列事件(点击分俩步,ACTION_DOWN,ACTION_up)
触发dispatchTouchEvent
再次onTouchEvent
当ACTION_up事件时不会触发onUserInteraction(可查看源代码)
2)键盘事件触发流程:
首先触发dispatchKeyEvent 然后触发onUserInteraction 再次onKeyDown 如果按下紧接着松开,则是俩步 紧跟着触发 dispatchKeyEvent 然后触发onUserInteraction 再次onKeyUp 注意与触摸不同,当松开按键时onUserInteraction也会触发。
总之: Activity.dispatchTouchEvent(MotionEvent) - 这允许你的活动可以在分发给窗口之前捕获所有的触摸事件。 (同理 dispatchKeyEvent)
2.Activity里有一个Layout,在Layout里有个按钮情况:
如果在按钮上触发一个CLICK事件,那么事件传递流程:
首先触发ACTIVITY的dispatchTouchEvent 然后触发ACTIVITY的onUserInteraction 然后触发LAYOUT的dispatchTouchEvent 然后触发LAYOUT的onInterceptTouchEvent 然后触发BUTTON的onTouch(这是一个ACTION_DOWN事件) 紧跟着是一个ACTION_UP事件 触发ACTIVITY的dispatchTouchEvent 注意不再触发ACTIVITY的onUserInteraction,因为他对ACTION_UP不起作用。 然后触发LAYOUT的dispatchTouchEvent 然后触发LAYOUT的onInterceptTouchEvent 然后触发BUTTON的onTouch 最后触发BUTTON的onClick. 如果你在ONTOUCH事件里返回true,消费了此事件,那么ONCLICK将不会被响应 但是如果你不写ONCLICK事件,而ONTOUCH事件返回FLASE
以上摘录:http://blog.csdn.net/G_rrrr/article/details/4861189
3.总结:
Android事件触发流程:
-------------------------------------------------------------------
首先触发ACTIVITY的dispatchTouchEvent
然后触发ACTIVITY的onUserInteraction
然后触发LAYOUT的dispatchTouchEvent
然后触发LAYOUT的onInterceptTouchEvent
-------------------------------------------------------------------
查看:http://hi.baidu.com/lck0502/blog/item/7eeb452a846ff196023bf654.html
=================================================================================================================
在ViewGroup(即上面Layout)情况特别分析:
针对由于触摸(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表示事件没有被处理,将继续传递下去(只是传递方向不一样,onInterceptTouchEvent()向子View传,而onTouchEvent()向父View传) 。
具体情况如下:
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 分包导致报错ClassNotFoundException
2017-11-09 17:23 992http://blog.csdn.net/daitu_lian ... -
TextView滚动
2017-08-11 09:06 518TextView textView = (Te ... -
堆栈存值关系
2017-06-22 17:49 494http://www.cnblogs.com/iliuyuet ... -
反射调用类中方法
2017-04-20 15:24 582//申请权限 @AfterPermissionGrant ... -
Java 堆和栈的区别
2017-04-20 13:32 4461、概述 在Java中,内存分为两种,一种是栈内存,另一种就 ... -
Java中JDK,JRE和JVM之间的关系
2017-04-17 17:54 555http://www.cnblogs.com/xiaofeix ... -
分享文件到微信
2017-02-13 11:07 1004/** * 分享图片给好友 * ... -
gson整形(1)被转为double(1.0)解决方法
2016-10-26 17:43 1747private static final Gson g ... -
三种加密算法介绍
2016-09-12 21:46 444加密技术是对信息进行编码和解码的技术,编码是把原来可读信息(又 ... -
Android内存管理原理
2016-08-30 16:58 531转自:http://www.cnblogs.com/killm ... -
收集android上开源的酷炫的交互动画和视觉效果:Interactive-animation
2016-07-04 18:30 749转:http://www.open-open.com/lib/ ... -
Android MD5加密算法
2016-06-29 14:44 440import java.security.MessageDig ... -
上中下布局
2016-06-29 10:31 387<LinearLayout xmlns:android= ... -
关于startActivityforResult:Activity is launching as a new task, so cancelling。。。。
2016-06-20 16:30 972最近做项目apk升级使用startActivityForRes ... -
Gson将整形自动转为double
2016-05-26 19:19 13111,首先原始代码用的是gson_2.2.1版本,后来发现2.2 ... -
退出应用
2016-04-22 16:07 581如果处在安全模式,桌面没有你测试的应用图标或小米android ... -
Failed to ensure directory问题
2016-04-19 16:09 872804-19 14:38:08.868: W/ContextIm ... -
学习记录
2016-01-12 15:15 3381,首先推荐http://blog.csd ... -
android 滚动条 相关属性
2015-12-17 19:22 622http://www.cnblogs.com/fighter/ ... -
Android Eclipse JNI 调用 .so文件加载问题
2015-12-04 19:40 1063背景:对于Android工程 Eclipse里编译好的.so文 ...
相关推荐
在Android系统中,触摸事件是用户与应用交互的重要方式,理解其事件传递机制对于优化UI交互和处理复杂触摸逻辑至关重要。本文将深入解析Android的Touch事件传递机制,并结合源码进行详细阐述。 首先,Android的触摸...
本文将深入探讨“android之Touch事件处理机制测试”,包括滑动事件冲突的解决、ViewGroup中的事件触发和传递机制。 一、Android Touch事件处理机制 1. 触摸事件流程:在Android中,触摸事件分为三个阶段,即ACTION...
2. 修改根布局属性:在布局文件中,为Activity的根布局设置 `android:clickable="true"` 和 `android:focusable="true"`,然后在Java代码中重写 `onTouchEvent` 方法,对不需要处理的事件返回 false。 ```xml ...
在Android开发过程中,理解事件传递机制对于实现高效的用户交互界面至关重要。本篇文章基于一个关于“事件传递机制和原理”的流程图进行深入解析,旨在帮助开发者更好地掌握事件传递的核心概念与流程。 #### 一、...
在Android开发中,事件传递和事件分发是关键的概念,特别是在UI交互中。这个"Android事件传递机制Demo.zip"文件包含了一个名为"TouchEventDemo"的示例,它旨在帮助开发者理解这一过程。以下是对Android事件传递机制...
在Android系统中,事件传递机制是用户界面交互的基础,它涉及到Activity、View、 ViewGroup等组件之间的协同工作。本文将深入探讨这一机制,帮助你理解如何在Android应用中处理触摸事件。 1. 触摸事件的起源 触摸...
在Android系统中,事件分发机制是用户交互的基础,它涉及到UI组件的View和ViewGroup。本文主要讨论ViewGroup的事件分发,包括MotionEvent的种类、事件分发的重要方法以及事件分发流程。 首先,MotionEvent是Android...
总结来说,Android中的Touch事件传递涉及到了Activity的布局加载、DecorView和ViewGroup的事件分发机制以及事件拦截。通过理解这些机制,开发者可以编写出更加合理和高效的事件处理代码,以优化用户界面的响应性和...
在Android开发中,触摸事件(TouchEvent)是用户与设备交互的主要方式之一,它涉及到Activity、View及ViewGroup之间的事件分发。理解Android TouchEvent事件传递机制对于构建具有良好用户体验的应用至关重要。本文将...
总之,理解Android中的View和ViewGroup的绘制流程,以及手势监听机制,对于提升UI开发的效率和质量至关重要。通过实践和调试,开发者可以更好地控制UI的呈现和交互,实现更加灵活和丰富的用户界面。
在Android系统中,触摸事件的分发是UI交互的核心部分,它涉及到Activity、ViewGroup和View之间的协同工作。本文将深入解析Android的Touch事件分发机制,并通过一个名为"EventDispatchTest"的示例来说明。 1. **事件...
本篇将深入解析Android的TouchEvent事件传递机制,帮助开发者更好地理解和利用这一机制。 首先,当用户触摸屏幕时,硬件层会生成一个MotionEvent,该事件包含了触摸事件的类型(ACTION_DOWN、ACTION_UP、ACTION_...
在Android中,布局通常由多个View和ViewGroup组成,而Activity则包含一个顶级的DecorView。为了实现滑动退出,我们可以在Activity的根布局上添加一个全屏的透明View(例如使用`FrameLayout`或`RelativeLayout`),这...
事件分发涉及到Activity、ViewGroup和View三个层次,确保触摸事件能够准确地传递到目标视图进行处理。下面将详细阐述Android事件分发机制的工作原理。 1. **事件序列**: - 触摸事件首先由系统产生,通常是用户对...
本篇将深入解析“android Touch触发事件的生命周期”,着重讨论ViewGroup中点击事件的`dispatchTouchEvent()`, `onInterceptTouchEvent()`, 和`onTouchEvent()`这三个关键方法之间的关系及其工作流程。 首先,我们...
Android事件分发机制是Android UI开发中的核心部分,它决定了用户交互事件如何在View和ViewGroup之间传递和处理。本文将从源码角度深入解析这一机制,帮助开发者更全面地理解其工作原理。 首先,我们需要了解事件...
本文将深入探讨Android中父View( ViewGroup)与子View的点击事件处理机制,以及如何在实际应用中进行有效管理。 一、点击事件的基础知识 在Android中,点击事件是由MotionEvent类来表示的,主要包括ACTION_DOWN、...
### AndroidView的事件分发机制和滑动冲突解决方案 #### 一、View的事件分发机制 在Android中,理解View的事件分发机制是非常重要的,因为它直接关系到用户交互的响应逻辑。本文将首先介绍Android中View的事件分发...
在Android开发中,触摸事件(Touch Event)是用户与设备交互的重要部分,它涉及到Activity、View及ViewGroup之间复杂的事件分发机制。本篇将深入探讨Android中的触摸事件处理,包括事件的产生、分发、拦截以及如何...