- 浏览: 457453 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
wwwjiandan:
我现在遇到的问题是将Activity设置为非全屏,且andro ...
Android中软键盘弹出时底部菜单上移问题 -
zjhdreams:
求下载链接
Android 9Patch (NinePatch) -
wtjandjay:
受教了 .......
从程序员到项目经理 -
mr_zhang2011:
将博客搬至CSDN -
fyc0109:
为什么我传过去的值, 有的都不对呢, 顺序也是一样的.就是获得 ...
Android Parcelable序列化自定义类集合在Activity间传递
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/G_rrrr/archive/2009/11/24/4861189.aspx
本文紧接android事件2,放开2实例相关注释即可
在按键触摸之前调用的方法dispatchTouchEvent,onUserInteraction
activity和VIEW都能接收触摸和按键,如果响应事件只需要在继承类里复写事件函数即可
但是对于VIEW来说,我们如果不改变DRAW,不需要继承,所以如果想响应事件,则需要
当一个视图(如一个按钮)被触摸时,该对象上的 onTouchEvent() 方法会被调用。不过,为了侦听这个事件,你必须扩展这个类并重写该方法。很明显,扩展每个你想使用的视图对象(只是处理一个事件)是荒唐的。这就是为什么视图类也包含了一个嵌套接口的集合,这些接口含有实现起来简单得多的回调函数。这些接口叫做事件侦听器 event listeners ,是用来截获用户和你的界面交互动作的“门票”。
1.只有一个ACTIVITY得情况:
当鼠标键按下时(即触摸)
首先触发dispatchTouchEvent
然后触发onUserInteraction
再次onTouchEvent
如果是点击的话,紧跟着下列事件(点击分俩步,ACTION_DOWN,ACTION_up)
触发dispatchTouchEvent
再次onTouchEvent
当ACTION_up事件时不会触发onUserInteraction(可查看源代码)
当键盘按下时
首先触发dispatchKeyEvent
然后触发onUserInteraction
再次onKeyDown
如果按下紧接着松开,则是俩步
紧跟着触发dispatchKeyEvent
然后触发onUserInteraction
再次onKeyUp
注意与触摸不同,当松开按键时onUserInteraction也会触发。
Activity.dispatchTouchEvent(MotionEvent) - 这允许你的活动可以在分发给窗口之前捕获所有的触摸事件。
(同理 dispatchKeyEvent)
onUserInteraction :Called whenever a key, touch, or trackball event is dispatched to the
* activity.
2.activity里有一个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
那么最终事件序列:
11-23 17:19:44.313: INFO/activity(803): dispatchTouchEvent
11-23 17:19:44.313: INFO/activity(803): onUserInteraction
11-23 17:19:44.322: INFO/LinearLayout(803): dispatchTouchEvent
11-23 17:19:44.333: INFO/LinearLayout(803): onInterceptTouchEvent
11-23 17:19:44.341: INFO/button(803): onTouch
11-23 17:19:44.441: INFO/activity(803): dispatchTouchEvent
11-23 17:19:44.451: INFO/LinearLayout(803): dispatchTouchEvent
11-23 17:19:44.451: INFO/LinearLayout(803): onInterceptTouchEvent
11-23 17:19:44.461: INFO/button(803): onTouch
即事件不会再向上传递,估计是ONCLICK有默认响应不处理,而ONCLICK不会有返回值。
但是如果是继承了一个VIEW而且又覆写了onTouchEvent,他返回FALSE
当触摸事件发生时
11-23 17:25:59.691: INFO/activity(831): dispatchTouchEvent
11-23 17:25:59.691: INFO/activity(831): onUserInteraction
11-23 17:25:59.701: INFO/LinearLayout(831): dispatchTouchEvent
11-23 17:25:59.701: INFO/LinearLayout(831): onInterceptTouchEvent
11-23 17:25:59.701: INFO/button(831): onTouch
11-23 17:25:59.701: INFO/Button(831): onTouchEvent
11-23 17:25:59.701: INFO/LinearLayout(831): onTouchEvent
11-23 17:25:59.701: INFO/activity(831): onTouchEvent
11-23 17:25:59.822: INFO/activity(831): dispatchTouchEvent
11-23 17:25:59.822: INFO/activity(831): onTouchEvent
奇怪的是,ONCLICK事件不再发生。
VIEW和ACTIVITY本身都有相应键盘事件的ONKEYUP和ONKEYDOWN
对于VIEW来说,你可以setOnKeyListener(new OnKeyListener(){
@Override
public boolean onKey(
来响应键盘事件,如果你既对VIEW写了这个侦听,又覆写了ONKEYUP,DOWN事件,那么首先
进入ONKEY
比如用反向键把焦点切换到按钮上
事件序列:
11-23 17:23:14.392: INFO/activity(803): dispatchKeyEvent
11-23 17:23:14.404: INFO/activity(803): onUserInteraction
11-23 17:23:14.412: INFO/LinearLayout(803): dispatchKeyEvent
11-23 17:23:14.412: INFO/button(803): onKey
11-23 17:23:14.422: INFO/activity(803): onKeyUp
当按回车时
11-23 17:35:55.692: INFO/activity(831): dispatchKeyEvent
11-23 17:35:55.713: INFO/activity(831): onUserInteraction
11-23 17:35:55.722: INFO/LinearLayout(831): dispatchKeyEvent
11-23 17:35:55.732: INFO/button(831): onKey
11-23 17:35:55.813: INFO/activity(831): dispatchKeyEvent
11-23 17:35:55.824: INFO/activity(831): onUserInteraction
11-23 17:35:55.831: INFO/LinearLayout(831): dispatchKeyEvent
11-23 17:35:55.831: INFO/button(831): onKey
11-23 17:35:55.953: INFO/button(831): onClick
最后补充下:不需要那么复杂,如果对于控件想响应他的触摸事件,如果继承
则覆写ONTOUCHEVENT,如果不覆写则侦听ONTOUCH
如果覆写了ONTOUCHEVENT,则不再响应ONCLICK事件
如果写了ONCLICK,则不要再搞ONTOUCHEVENT了
所以ONCLICK和ONTOUCHEVENT二取一,另外如果有ONTOUCH侦听,那么此函数要先于其他函数执行
对于ONCLICK来说,要从头走俩便ONTOUCH,一次是DOWN,一次是UP
同样的对于ONKEY,以及ONKEYUP和DOWN
如果既覆写了ONKEYUODOWN,又SET了侦听ONKEY,那么ONKEY要优先执行,对于一个回车按键触发时
11-24 09:55:18.601: INFO/activity(951): dispatchKeyEvent
11-24 09:55:18.611: INFO/activity(951): onUserInteraction
11-24 09:55:18.621: INFO/LinearLayout(951): dispatchKeyEvent
11-24 09:55:18.641: INFO/button(951): onKey
11-24 09:55:18.711: INFO/activity(951): dispatchKeyEvent
11-24 09:55:18.756: INFO/activity(951): onUserInteraction
11-24 09:55:18.775: INFO/LinearLayout(951): dispatchKeyEvent
11-24 09:55:18.791: INFO/button(951): onKey
11-24 09:55:18.822: INFO/button(951): onClick
SDK中文事件处理:http://blog.csdn.net/iefreer/archive/2009/09/23/4586351.aspx
发表评论
-
android Log.isLoggable方法的使用
2014-06-06 15:35 2940android 动态控制logcat日志开关,通过Log. ... -
View not attached to window manager
2013-01-10 11:55 1047View not attached to window man ... -
代码设置android:icon,android:label
2013-01-05 15:26 7936requestWindowFeature( Window.F ... -
Android项目为一个apk设置多个ICON图标和执行入口
2013-01-05 12:13 3839Android开发中,一个工程对应一个AndroidManif ... -
Intent跳转到系统应用中的拨号界面、联系人界面、短信界面及其他
2012-12-04 12:15 01:调用系统发送短信界面 Uri smsT ... -
Android 源码目录结构详解
2012-11-22 17:20 1435这是Android2.1的源代码的 ... -
如何获取android源代码
2012-07-10 17:50 2716如何获取android源代码 研究 ... -
Android uses-permission大全
2012-06-12 17:33 1027android.permission.ACCESS_CHE ... -
Android 应用程序基础(Application Fundamentals)
2012-05-23 17:42 1198Android 应用程序基础(Application Fun ... -
转Android 音乐频谱实现
2012-02-18 23:35 0最近由于需要实现音乐频谱,所以今天就为大家普及一下。 这里实现 ... -
android VideoView本工程mp4文件
2012-01-09 18:42 2668最近在做一个demo,要求播放视频,记录一下。使用的是Vid ... -
关于android播放mp3与歌词同步问题收集
2012-01-09 17:57 1623关于android播放mp3与歌词同步问题收集,有时间再试。 ... -
android使用MediaPlayer播放音乐文件时遇到的问题
2012-01-09 17:38 18295把mp3文件放在Assets文件夹里,然后用MediaPlay ... -
android资源目录---assets与res/raw的不同
2012-01-05 11:49 2305android资源目录---assets与 ... -
Android 的cpu硬盘 内存 网络设置 系统信息 硬件信息
2012-01-04 10:56 1535转载 http://www.cnmsdn.com/html/2 ... -
使用 Android Compatibility Package 来简化开发工作
2012-01-04 10:12 1407转载 http://www.cnmsdn.com/html/2 ... -
Android 9Patch (NinePatch)
2011-12-26 16:06 44701:介绍 NinePatch图片以*.9.png结尾,和普通 ... -
Windows平台下Android源码的下载
2011-12-21 11:06 1202Windows平台下Android源码的下载 ... -
改变MenuItem默认背景
2011-12-07 19:58 1423@Override public boolean onCre ... -
Android横屏竖屏切换
2011-11-10 18:20 107转载 http://blog.csdn.net/leesido ...
相关推荐
的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...
Activity和View都能接收触摸和按键,如果响应事件只需要在继承类里复写事件函数即可;当一个视图(如一个按钮)被触摸时,该对象上的 onTouchEvent() 方法会被调用。不过,为了侦听这个事件,你必须扩展这个类并重写...
11.7.3 在omap平台移植Android的alsa声卡驱动322 第12章 视频输出系统驱动326 12.1 视频输出系统结构326 12.2 需要移植的部分328 12.3 分析硬件抽象层328 12.3.1 overlay系统硬件抽象层的接口328 12.3.2 ...
11.7.3 在omap平台移植Android的alsa声卡驱动322 第12章 视频输出系统驱动326 12.1 视频输出系统结构326 12.2 需要移植的部分328 12.3 分析硬件抽象层328 12.3.1 overlay系统硬件抽象层的接口328 12.3.2 ...
Android 系统的键盘事件 是由InputManagerService 来监控的, 而InputManagerService 是由 SystemServer 来启动的 创建了一个类的对象 WindowInputEvent Receiver InputEventRe ceiver的构造 函数 ...
11.7.3 在omap平台移植Android的alsa声卡驱动322 第12章 视频输出系统驱动326 12.1 视频输出系统结构326 12.2 需要移植的部分328 12.3 分析硬件抽象层328 12.3.1 overlay系统硬件抽象层的接口328 12.3.2 ...
设置activity的theme属性隐藏标题栏和状态栏,然后在onWindowFocusChanged方法中调用方法 mLCDChangeLayout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);...
功能包括:模拟按键、模拟屏幕触摸、模拟文字输入、获取指定位置屏幕颜色、指定区域查找相似颜色等 原理 手机连接电脑,并开启USB调试模式,使用ADB工具获取屏幕截图,分析并模拟各种操作。(需要自己写代码) 运行...
三合一电源按键,同一电源物理按键完成Android系统和Windows系统的开机、节能熄屏、关机操作;关机状态下轻按按键开机;开机状态下轻按按键实现节能熄屏/唤醒,长按按键实现关机。 14.整机具备至少6个前置按键,实现...
所以我可以通过 adb 连续捕获屏幕截图,并在计算机端单击或滑动鼠标时将触摸事件和按键事件发送到 android 设备(手机/平板电脑)。 概述 如下图所示: 用法 1.确保系统中安装了adb并且可以从命令提示符调用。 2....