- 浏览: 279562 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zhang_shuai870717:
求指教。没懂
Graphics 的translate(int x, int y) 函数 -
刘亮love小雪:
楼主我还是没有懂啊
Graphics 的translate(int x, int y) 函数 -
wenhaoliu:
大侠!我在从ios平台移植到android平台遇到很多问题!编 ...
android平台移植总结 -
lansehuan:
dwpcny 写道楼主 你给得链接是你自己才能看得啊 。我也遇 ...
cocos2d-x,windows环境配置总结 -
leishengwei:
u_xtian 写道jifengyu 写道楼主你好,我想问一下 ...
(转)Android开发:在EditText中关闭软键盘
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
---------------------------------------------------------
原文:http://www.blogjava.net/TiGERTiAN/archive/2011/02/22/344870.html
发表评论
-
Android monkey跟monkeyrunner研究
2015-06-03 10:51 1221最近研究了Android自带的测试工具monkey 跟 mon ... -
(转)Android Layout 之 RelativeLayout,代码实现相对布局
2012-12-11 15:37 2328使用 AbsoluteLayout 可以直 ... -
(转)LayoutInflater作用及使用
2012-11-28 11:06 1502备注: LayoutInflater主要 ... -
jni文件传递方法参数
2012-11-26 17:43 5654使用jni从java传递多个参数到c++时,如果是多个参数,当 ... -
CCTMXTiledMap使用的几个事项
2012-08-02 11:12 7390项目中的地图层采用coco ... -
android平台移植总结
2012-07-30 13:11 2754最近完成了一款游戏的android平台移植,从ios平台移植到 ... -
(转)Android中的“再按一次返回键退出程序”实现
2012-07-26 16:47 1128用户退出应用前给出一个提示是很有必要的,因为可能是用户并不真的 ... -
(装)NDK Build 参数
2012-07-17 16:20 2854'ndk-build' Overview ndk-build ... -
android获得屏幕大小,使用sdk1.6
2011-05-19 14:59 1903DisplayMetrics dm = n ... -
(转)Zipalign使用方法-SDK中的APK文件优化工具
2011-04-29 18:01 3424在Android SDK中包含了一个工具名为Zipalign, ... -
(转)Android开发:在EditText中关闭软键盘
2011-04-12 19:10 80871、EditText有焦点(focusable为true)阻止 ... -
setHint方法
2011-04-12 15:10 5697setHint方法设置view为空时,view显示的内容,还有 ... -
(转)获取系统剩余内存
2011-04-12 11:41 1273原文:http://mingkg21.iteye.com/bl ... -
Android1.6目录结构找不到res资源的问题
2011-04-11 13:54 2310建立的是1.6的目录结构,在res下面有drawable-hd ... -
(转)android proc 进程信息解析
2011-04-08 18:27 2574原文:http://bigfirebird.iteye.com ... -
Android字体跟颜色
2011-04-06 17:50 1962一本电子书的示例,显示android的字体跟颜色,可以在xml ... -
Android的按键处理
2011-03-30 13:34 1926Android在处理键盘按下事件时,重写了Activity的b ... -
(转)Android横竖屏切换
2011-03-30 13:33 1350关于Android中Activity的横竖屏切换问题可以通过A ... -
(转)Android Activity全屏显示
2011-03-30 13:32 962在onCreate()中加入如下代码: Java ... -
(转)ant编译android工程taskdef class not found
2011-03-30 13:32 2540ant编译android工程时出现 taskdef cl ...
相关推荐
首先,Android中的键盘事件主要分为两种:软键盘(Software Keyboard)事件和硬件键盘(Hardware Keyboard)事件。软键盘通常在触摸屏设备上显示,而硬件键盘则是指物理键盘,如连接到Android设备的蓝牙键盘。 1. ...
在Android应用程序中,有一类...这个PPT讲Android应用程序输入事件的分发和处理过程,主要涉及到输入管理InputManager、输入事件监控线程InputReader、输入事件分发线程InputDispatcher,以及应用程序主线程消息循环。
Android 键盘和鼠标事件详解 Android 事件机制是现代用户界面的核心组件之一,它基于事件驱动的方式来实现人机交互。...通过对触摸屏事件和按键事件的处理,可以实现复杂的用户交互逻辑,提高应用程序的用户体验。
优化键盘性能包括减少布局复杂性,避免过度绘制,以及合理处理触摸事件。同时,考虑不同屏幕尺寸和方向的适配,确保键盘在各种设备上都能良好工作。 总结,Android键盘的自定义能力为开发者提供了丰富的可能性,...
一个KeyboardView,用于渲染键盘并处理触摸事件。 2. XML布局:在布局文件中添加`KeyboardView`,并指定对应的`Keyboard`资源ID。 3. Activity代码:初始化`KeyboardView`,设置`OnKeyboardActionListener`,并根据...
在Android开发中,处理键盘事件是一项重要的任务,特别是在设计用户交互界面时。本文将深入探讨如何处理物理按键事件,特别是如何屏蔽系统自带的后退键。Android设备通常配备多个物理按键,包括返回键,这对于应用的...
- 对于触摸屏操作,Android提供了GestureDetector和MotionEvent类来捕获和处理用户的触摸事件,实现滑动、点击等交互。 - 支持键盘操作,需要监听硬件键盘或软键盘的按键事件。Android中的`KeyEvent`类用于处理...
在Android系统中,事件处理主要包括触摸事件、键盘事件、广播事件等,这些事件的处理方式直接影响到应用的用户体验和功能实现。下面我们将深入探讨Android事件处理机制的原理及其源码分析。 首先,Android事件处理...
- 使用KeyboardView对象,它负责绘制并处理键盘的触摸事件,可以通过更换键盘布局实现不同模式的切换。 3. **处理emoji表情** - 收集和整理常用的emoji表情,可以使用Unicode编码或自定义的图片资源。 - 当用户...
总之,"android 纯自定义数字键盘输入"项目是一个实用的学习资源,它涵盖了Android自定义View的开发、触摸事件处理、界面布局设计等多个知识点。通过研究这个`KeyDemo`,开发者不仅可以学会如何创建自定义键盘,还能...
Android 系统的键盘事件 是由InputManagerService 来监控的, 而InputManagerService 是由 SystemServer 来启动的 创建了一个类的对象 WindowInputEvent Receiver InputEventRe ceiver的构造 函数 ...
本篇将详细解析Android事件处理机制,特别是基于给定的"android 事件处理demo",我们将深入探讨如何在实际应用中处理触摸事件。 首先,Android事件处理主要分为两个阶段:事件分发(Dispatching)和事件处理...
3. **User Space驱动**:在用户空间,驱动程序通过Android Input框架与系统交互,将内核空间的数据解析为触摸事件,并发送到应用程序。 在Linux环境下,USB触摸屏驱动的实现也遵循类似的架构,但由于Linux内核对USB...
这可以通过监听触摸事件并在必要时调用`InputMethodManager`的`hideSoftInputFromWindow()`方法实现。 以上就是创建一个支持数字键与英文键盘切换的自定义键盘的基本步骤。在实际开发中,你可能还需要考虑更多细节...
首先,Android事件处理主要围绕Input子系统进行,它包含了键盘、触摸屏等设备输入的管理和分发。InputManager是这一子系统的核心,它在Java层和C++层都有相应的实现。在Java层,WindowManagerService创建Input...
Android提供了丰富的事件处理机制,包括但不限于触摸事件、键盘事件、菜单事件等。这些事件可以通过监听器的方式进行捕获和处理。例如,触摸事件可以使用`OnTouchListener`接口来监听,而键盘事件则可以使用`...
首先,焦点移动的关键在于监听和处理键盘事件。为了实现在软键盘上移动焦点,需要重写`onKeyDown(int keyCode, KeyEvent event)`方法。这个方法允许我们拦截并处理按键事件,其中`keyCode`参数对应于`KeyEvent`中的...
Delphi XE 开发Android虚拟键盘 ,源码文件:FMX.VirtualKeyboard.Android
2. **触摸事件处理**:每个按键应能响应用户的触摸事件。这需要在Java代码中添加点击事件监听器,当用户点击按键时,触发相应的输入动作。 3. **字符映射**:每个按键对应一个或多个字符,包括大小写字母、数字和...