我想知道它们之间的实际差异......每个应该何时使用,每种方法应该如何使用,以及哪些情况都有用?
举一些例子并详细解释。
答案 0 :(得分:62)
Android开发者博客中解释了这一点:http://android-developers.blogspot.co.at/2008/12/touch-mode.html
以下引用应该清楚说明:
触摸模式本身非常容易理解,因为它只是表明最后一次用户交互是否是通过触摸屏执行的。例如,如果您使用G1手机,选择带轨迹球的小部件将使您退出触摸模式;
...
在触控模式下,没有焦点也没有选择。任何选定的项目 一旦用户输入,就在网格列表中取消选择 触摸模式。同样,任何有焦点的小部件都会变得没有焦点 用户进入触摸模式。
...
现在您知道在触摸模式下不存在焦点,我必须解释它并非完全正确。焦点可以存在于触摸模式中,但是以非常特殊的方式,我们将焦点称为触摸模式。此特殊模式是为接收文本输入的小部件创建的,如EditText,或者在启用过滤时,为ListView创建。
...
可触控模式中的可聚焦属性是您可以自己设置的属性 来自代码或XML。但是,它应该谨慎使用,而且只能用于 非常具体的情况,因为它打破了Android正常的一致性 行为。游戏是可以制作的应用程序的一个很好的例子 充分利用可触控模式属性。 MapView,如果用于 像谷歌地图一样全屏,是另一个很好的例子 在触摸模式下正确使用可聚焦。
答案 1 :(得分:9)
举一些例子并详细解释
我会给你自己的经验:
我有一个Google TV应用程序,其活动包含大量ImageButtons。
我希望ImageButtons可以选择。
因此,如果某人使用鼠标或遥控器点击它们,它们将仅被选中(在我的情况下突出显示)。然后,如果用户按下选定的ImageButton
,则触发操作。 通过XML布局启用focusableInTouchMode
属性,实现了这种确切的行为。
我所要做的就是为ImageButtons设置一个普通的onClickListener
并瞧!
我没有在手机上查看我的应用程序,但我想这会产生熟悉的结果。
当?
我已经告诉过你我测试过的一个用例:当你第一次点击并选择了onClickListener
时,你希望按钮的Button
触发第二次点击动作。
我使用第一次点击获得“焦点”并在我的按钮上显示放大缩放动画。
如何?
只需在XML布局文件中将按钮的属性focusableInTouchMode
设置为true
。
答案 2 :(得分:5)
聚焦是视野状态,通常可以通过轨迹球和dpad改变焦点。在关注状态时,您的观点可以有不同的背景。
在触控模式下,可聚焦可让视线在用户触摸视图时获得焦点,此类组件的良好示例为EditText
。
使用Button
或任何可点击的组件按下状态通常是您感兴趣的。
答案 3 :(得分:3)
用户可以使用硬件键或按钮或触摸屏幕与其设备进行交互。触摸屏幕可使设备进入触摸模式。然后,用户可以通过触摸屏幕上的虚拟按钮,图像等与其进行交互。
要检查设备是否处于触摸模式,请调用View类的isInTouchMode()方法。