当前位置: 首页 > 工具软件 > J-Focus > 使用案例 >

focus

弓玉书
2023-12-01
 

 1.call requestFocus() on that component. Note that it won't work in
touch mode (== after the user touched the screen) because the Android
UI design calls for no focused/selected element in touch mode.

 

触摸模式Touch Mode

当 用户使用方向键或跟踪球浏览用户界面时,有必要给用户可操作的item(比如按钮)设置焦点,这样用户可以知道哪个item将接受输入。不过,如果这个设 备有触摸功能,而且用户通过触摸来和界面交互,那么就没必要高亮items,或者设定焦点到一个特定的视图。这样,就有一个交互模式 叫“触摸模式”。

对于一个具备触摸功能的设备,一旦用户触摸屏幕,设备将进入触摸模式。自此以后,只有isFocusableInTouchMode() 为 真的视图才可以被聚焦,比如文本编辑部件。其他可触摸视图,如按钮,在被触摸时将不会接受焦点;它们将只是在被按下时简单的触发on-click侦听器。 任何时候用户按下方向键或滚动跟踪球,这个设备将退出触摸模式,然后找一个视图来接受焦点,用户也许不会通过触摸屏幕的方式来恢复界面交互。

触摸模式状态的维护贯穿整个系统(所有窗口和活动)。为了查询当前状态,你可以调用isInTouchMode() 来查看这个设备当前是否处于触摸模式中。

 

http://blog.csdn.net/iefreer/archive/2009/09/23/4586351.aspx

 

case1:

一个ACT理由俩个BUTTON,此时没有焦点。当按方向键时

ACT接收public boolean dispatchKeyEvent(KeyEvent event) {
        View v = this.getCurrentFocus();

 此时得到VIEW是一个BUTTON1,然后不再响应。

这时再按方向键 dispatchKeyEvent(KeyEvent event)首先接受ACTION_DOWN事件,此时得到VIEW任然是B1

然后BUTTON1的public View focusSearch(int direction) {
                 View newFocus = super.focusSearch(direction)

计算出此方向上的下一个焦点控件时B2,然后ACTIVITY得 dispatchKeyEvent(KeyEvent event)

再次接收ACTION_UP事件,此时得到VIEW是B2.

 

 

 

addFocusables:

在当前VIEWGROUP覆写这个方法,添加这个VIEW能够被FOCUSE德控件。--it is useable.

 类似资料: