安卓 Input Events(输入事件)
在安卓中,有不止一种方法从你的应用截取用户交互事件。在你的用户界面中考虑事件,途径就是从用户界面中的一个指定的view对象中捕获事件。该view提供了这样做的方法。
事件监听者(Event Listeners)
onClick()来自View.OnClickListener.。当用户触摸该item(触摸模式下),或者使用导航键或轨迹球使焦点聚集在该项上并且按下了适当的"enter"(进入)按键或者在轨迹球上执行了按下操作。onLongClick()来自 View.OnLongClickListener.。当用户持续触摸item时(触摸模式下),或者使用导航键或轨迹球使焦点聚集在该项上并且持续按着适当的"enter"(进入)按键或者在轨迹球上执行持续按下操作(持续一秒)。onFocusChange()来自 View.OnFocusChangeListener 当用户使用导航键或者轨迹球导航到或者离开该item 时。onKey()来自View.OnKeyListener. 当用户聚焦在了项目上并且按下或松开设备上的按键时onTouch()来自View.OnTouchListener.当用户执行一个合格的触摸操作,包括按下,释放或者任何屏幕上的手势动作(在项目的边界内)onCreateContextMenu()来自View.OnCreateContextMenuListener. 当上下文菜单开始构建时调用(如持续“长按”的结果)。查看在 Menus开发向导中关于上下文菜单的讨论。// 为OnClickListener创建一个匿名实例private OnClickListener mCorkyListener = new OnClickListener() { public void onClick(View v) { // do something when the button is clicked }}; protected void onCreate(Bundle savedValues) { ... // Capture our button from layout Button button = (Button)findViewById(R.id.corky); // Register the onClick listener with the implementation above button.setOnClickListener(mCorkyListener); ...}public class ExampleActivity extends Activity implements OnClickListener { protected void onCreate(Bundle savedValues) { ... Button button = (Button)findViewById(R.id.corky); button.setOnClickListener(this); } // Implement the OnClickListener callback public void onClick(View v) { // do something when the button is clicked } ...}onClick() 回调并没有返回值,但是一些其它的事件处理方法必须返回一个布尔类型。原因取决于事件。这里有少数的一些原因:- 该方法返回一个布尔类型来指明你是否消耗了该事件,并且它不应该进一步传递下去。也就是说,返回true表明你处理了该事件并且它应该在这停下来;返回false,如果你没有处理它或者该事件应该继续传递给其它on-click监听者。onLongClick()- 该方法返回一个布尔类型来表明你是否消耗了该事件并且不应该进一步传递下去。也就是说,返回true表明你处理了该事件并且它应该在这停下来;返回false,如果你没有处理它或者该事件应该继续传递给其它on-click监听者。onKey()- 该方法返回一个布尔类型来表明你是否消耗了该事件。重要的是该事件可以有多个符合触发条件的操作。因此,当按下事件被接受到,如果你返回了false,表明你没有处理该事件并且对这个事件的后续行动不感兴趣。因此,你不会为每一个操作都调用该事件,如手势动作,或者最后的抬手动作(up action event)。onTouch()
onKeyDown() 和onKeyUp().内收到各种事件。事件处理者(Event Handlers)
- 当一个新的按键事件发生时调用onKeyDown(int, KeyEvent)- 当一个按键松开(key up )事件发生时调用onKeyUp(int, KeyEvent)- 当一个轨迹球运动事件发生时onTrackballEvent(MotionEvent)- 当一个屏幕触摸事件发生时onTouchEvent(MotionEvent)- 当该view获得或失去焦点时onFocusChanged(boolean, int, Rect)
-允许你的activity拦截所有的触摸事件,在他们分发给window之前。Activity.dispatchTouchEvent(MotionEvent)- 允许一个viewgroup 来观察事件是否派遣给了子view。ViewGroup.onInterceptTouchEvent(MotionEvent)-调用该方法取决于父视图,表明它不应该通过ViewParent.requestDisallowInterceptTouchEvent(boolean).拦截触摸事件。onInterceptTouchEvent(MotionEvent)
触摸模式(Touch Mode)
isInTouchMode() 来查看设备当前是否处于触摸模式。处理焦点(Handling Focus )
setFocusableInTouchMode()你可以改变它。<LinearLayout android:orientation="vertical" ... > <Button android:id="@+id/top" android:nextFocusUp="@+id/bottom" ... /> <Button android:id="@+id/bottom" android:nextFocusDown="@+id/top" ... /></LinearLayout>android:focusable xml属性,在你的布局文件中声明。设置该值为true。你也可以声明该view的可聚焦性,当在触摸模式时通过android:focusableInTouchMode.安卓 Input Events(输入事件)的更多相关文章
- 与众不同 windows phone (24) - Input(输入)之软键盘类型, XNA 方式启动软键盘, UIElement 的 Touch 相关事件, 触摸涂鸦
原文:与众不同 windows phone (24) - Input(输入)之软键盘类型, XNA 方式启动软键盘, UIElement 的 Touch 相关事件, 触摸涂鸦 [索引页][源码下载] ...
- 《WPF程序设计指南》读书笔记——第9章 路由输入事件
1.使用路由事件 路由事件是一种可以针对元素树中的多个侦听器(而不是仅针对引发该事件的对象)调用处理程序的事件.通俗地说,路由事件会在可视树(逻辑树是其子集)上,上下routed,如果哪个节点上订阅了 ...
- Chromium网页输入事件捕捉和手势检測过程分析
连续的输入事件可能会产生一定的手势操作.比如滑动手势和捏合手势. 在Chromium中,网页的输入事件是在Browser进程中捕捉的.Browser进程捕获输入事件之后,会进行手势操作检測.检測出来的 ...
- 关于解决JQUERY对INPUT元素Change事件不兼容的问题
最近开发一个项目,需要实现用户在WEB表单里的多个INPUT框中输入数量后,立即自动计算加总各项输入的数量之和,并显示在指定的INPUT框中,这个功能实现的原理是简单的,就是只需要在INPUT的onc ...
- jquery捕捉文本域输入事件
<input type='text' /> change事件是在文本域光标失去焦点时才会触发,要监听正在输入内容事件用键盘事件监听如果想要捕捉文本域输入事件,可以使用$("inp ...
- input效果:当鼠标在input中输入文字是改变内部文字效果
主要用到属性:onpropertychange事件(属性改变时触发的事件),oninput属性(当input有输入时发生的事件) onpropertychange事件是IE专属事件 oninput属性 ...
- 与众不同 windows phone (25) - Input(输入)之捕获 UIElement 之外的触控操作, Silverlight 方式捕获手势操作, XNA 方式捕获手势操作, 多点触控
原文:与众不同 windows phone (25) - Input(输入)之捕获 UIElement 之外的触控操作, Silverlight 方式捕获手势操作, XNA 方式捕获手势操作, 多点触 ...
- input的onchange事件实际触发条件与解决方法
input中onchange事件已经属于元老级别了,并且现在同onclick一样使用频率很高,然而onchange的机制实际上有很多童鞋并不清楚,我们通过实例来分析这个事件的特征. 触发onchang ...
- NGUI---使用脚本控制聊天系统的内容显示,输入事件交互
在我的笔记Unity3D里面之 简单聊天系统一 里面已经介绍怎么创建聊天系统的背景.给聊天系统添加滚动条,设置Anchor锚点.以及设计聊天系统的输入框. 效果图如下所示: 现在我们要做的就是使用脚本 ...
随机推荐
- MyEclipse快捷键记录
MyEclipse快捷键 ------------------------------------- MyEclipse 快捷键1(CTRL) ---------------------------- ...
- android-exploitme(一):生成apk
exploitme是一个国外的android安全测试环境,http://securitycompass.github.io/AndroidLabs/index.html,通过它可以学习一些基本的测试方 ...
- 给View换字体
注意,给View换字体是直接换.在Delegate里换的只是某一列的字体 class delegate : public QStyledItemDelegate { public: ) : QStyl ...
- Elsevier 投稿各种状态总结
Elsevier 投稿各种状态总结1. Submitted to Journal 当上传结束后,显示的状态是Submitted to Journal,这个状态是自然形成的无需处理.2. Wi ...
- Linux系统时间与RTC时间【转】
http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=3637782 Linux的RTC驱动相对还是比较简单的,可以将它作为一个普通的字符 ...
- Ext的正则表达式
http://www.cnblogs.com/azai/archive/2010/12/31/1923140.html 今天看到一篇关于Extjs正则表达式比较系统的总结. 使用extJs时能常用 ...
- IntelliJ IDEA12.1.1 使用 相关记录
最近在切换ide 从eclipse平台上转移到 IDEA 其它的都比较容易,让我烦恼的是使用idea 发布工程,使用tomcat 调试 热部署.期间碰到各种问题,纠结好久了:终于成功完成了,特意记 ...
- 如何使用 EXCEL 的筛选功能
假设有一个Excel文档,有两列“姓名”和“成绩”. 现需筛选出成绩 “大于等于90”或者“小于60”的学生. 步骤如下: 1.选中任意一个单元格,点击工具栏上的 数据 - 筛选 - 自动筛选 ,可以 ...
- eclipse启动报错 java was started but returned exit code = -805306369
前几天还工作的好好的eclipse昨天下午启动时突然报错 报错如图: 妹的,好端端突然报错,非常奇怪,关键还是返回一堆看不懂的东西,细看都是eclipse.ini里面的配置信息,看到熟悉的jdk,误以 ...
- Java面试汇总
转自:http://zy19982004.iteye.com/blog/1846537#comments 一.All 最近找工作,遇到的笔试面试题,归纳如下,供大家参考. 二.J2SE 容器 Hash ...