安卓 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锚点.以及设计聊天系统的输入框. 效果图如下所示: 现在我们要做的就是使用脚本 ...
随机推荐
- 【uva753/poj1087/hdu1526-A Plug for UNIX】最大流
题意:给定n个插座,m个插头,k个转换器(x,y),转换器可以让插头x转成插头y.问最少有多少个插头被剩下. 题解: 最大流或者二分图匹配.然而我不知道怎么打二分图匹配..打了最大流.这题字符串比较坑 ...
- 一起学习redis源码
redis的一些介绍,麻烦阅读前面的几篇文章,想对redis的详细实现有所了解,强力推荐<redis设计与实现>(不仅仅从作者那儿学习到redis的实现,还有项目的管理.思想等,作者可能比 ...
- 刷机(手机自带的recovery)
recovery模式是手机系统的一个工程模式,用户通过同时按住开机键加home键,直到手机界面出现一个三角框里面一个感叹号即是进入了传说中的recovery模式,在这个模式中用户可以看到以下的内容(不 ...
- sftp的安装和使用
http://blog.srmklive.com/2013/04/24/how-to-setup-sftp-server-ftp-over-ssh-in-ubuntu/ In my previous ...
- BS与CS的比较
http://www.oschina.net/news/57811/open-web-not-died?p=2#comments 浏览器是为浏览文档设计的,它的界面布局其实只有从上至下的流布局一种,浏 ...
- Visual studio C#语言输出调试信息到Output窗口方法
1.菜单栏: 工具>选项>调试>将所有输出窗口文本重定向到即时窗口 2.使用Console.WriteLine或Write添加调试信息 3.按F5启动调试程序 4. ...
- 获取CentOS系统详情的九个uname命令实例
当你在控制台模式下,无法通过“鼠标右键 > 关于”获取操作系统的信息.这时,在Linux下,你可以使用uname命令,帮助你完成这些工作. Uname是unix name的缩写.在控制台中实际使 ...
- 5、java反射基础
Class对象: Class对象记录了所有与类相关的信息,当类加载器从文件系统中加载.class文件到JVM中的同时会为每一个类创建一个Class对象.通过Class对象可以获取到类的属性.方法.构造 ...
- 转 RMI、RPC、SOAP通信技术介绍及比对
http://www.open-open.com/home/space.php?uid=37924&do=blog&id=8974 1.RMI 使用java的程序员,对于RMI(Rem ...
- nodejs 文件上传
var multipart = require('connect-multiparty'); var fs = require('fs'); var multipartMiddleware = mul ...