WEB开发网
开发学院手机开发Android 开发 Android SDK 开发之处理 UI 事件 阅读

Android SDK 开发之处理 UI 事件

 2010-03-23 04:14:00 来源:WEB开发网   
核心提示:Event Handlers 事件处理器如果你从View来创建一个自定义的component,那么你可以定义一些默认事件处理器,Android SDK 开发之处理 UI 事件(3),在 Building Custom Components文档中,你将看到这些回调函数:* onKeyDown(int, KeyEvent)

Event Handlers 事件处理器

如果你从View来创建一个自定义的component,那么你可以定义一些默认事件处理器。在 Building Custom Components文档中,你将看到这些回调函数:

* onKeyDown(int, KeyEvent) -当一个新的键盘时间开始被调用。

* onKeyUp(int, KeyEvent) -当一个键被释放时调用。

* onTrackballEvent(MotionEvent) -当轨迹球移动时调用。

* onTouchEvent(MotionEvent) - 当屏幕发生移动事件时调用。

* onFocusChanged(boolean, int, Rect) -当一个View丢失焦点时调用。

有一些不属于View,但是也能直接影响到事件处理的方法:

* Activity.dispatchTouchEvent(MotionEvent) -可以在这些事件被分派到窗口之前让Activity截获所有的事件。

* ViewGroup.onInterceptTouchEvent(MotionEvent) -让ViewGroup在事件分派到子View之前看到这些事件。

* ViewParent.requestDisallowInterceptTouchEvent(boolean) - 让父View不要使用onInterceptTouchEvent(MotionEvent)来截获event.

Touch Mode 触摸模式

但一个用户使用方向键或者轨迹球来在UI上移动时, 需要让可动作的UI元素获得焦点, 这样用户可以看到什么东西将获得他们的输入。如果设备具有触摸能力,用户使用触摸的方式来交互,那么就没有必要给一个元素焦点。因此,有一种交互的模式叫做“触摸模式”。

对于一个可触摸的设备,一旦用户触摸了屏幕,设备就进入触摸模式。在这以后,只有isFocusableInTouchMode()为真的View是可以获得焦点的,例如文本框。其它的View可以触摸,例如按钮,在触摸的时候不会获得焦点。它们只是启动对应的on-click监听器。在用户按下方向键或者旋转轨迹球时,设备将退出触摸模式,并寻找一个view并使他获得焦点。现在,用户可以不触摸屏幕来交互。

触摸模式状态在整个系统中被维护。你可以使用isInTouchMode()来查询当前状态。

Handling Focus 处理焦点

android框架会根据用户输入来处理焦点的移动。这包含了在View被移除或隐藏或再次出现时改变焦点。View使用isFocusable()和setFocusable()方法来表示和设置它们能否获得焦点。在触摸模式下,可以使用isFocusableInTouchMode()和setFocusableInTouchMode().。

焦点移动时基于在某方向上最近距离元素的算法。在很少见的情形下,默认的算法可能和开发者的想法不一样。在这种情况下,你可以提供一个算法,修改以下几个

上一页  1 2 3 4  下一页

Tags:Android SDK 开发

编辑录入:coldstar [复制链接] [打 印]
赞助商链接