电视设备为应用程序提供了一套有限的导航控件。为你的应用程序创建一个有效的导航方案取决于在操作你的应用程序时对有限的导航控件和用户感知的理解。当你为电视创建应用程序时,需要特别注意的是用户使用遥控按钮来实现导航,而不是触摸屏。
使用方向键导航
用户可以使用遥控器的方向键或者箭头键来远程控制电视。这种类型的控制限制为向上,向下,向左,向右运动。
Android框架自动处理布局元素之间的方向导航,通常不需要为应用程序做任何额外的操作。然而,你应该使用方向键来彻底的测试以便发现导航过程中的任何问题。遵循以下规则:
1.用户使用方向键能够浏览到屏幕上的所有控件。
2.通过焦点滚动列表,通过上下键滚动列表,使用“Enter”键可以选中子项。
3.确保控件之间的切换是直接的、可预测的。
修改方向导航
Android框架自动使用基于布局可聚焦元素的相对位置的定向导航方案。你应该使用方向键测试你的应用程序生成的导航方案。测试之后,如果你希望用户以特定的方式来控制你的布局,你可以为视图设置显式定向导航。如下:
<TextView android:id="@+id/Category1"
android:nextFocusDown="@+id/Category2"\>
nextFoucsDown 按下方向键时,指定下一个获取焦点的视图;
nextFoucsLeft 按左方向键时,指定下一个获取焦点的视图;
nextFoucsRight 按 右方向键时,指定下一个获取焦点的视图;
nextFoucsUp 按上方向键时,指定下一个获取焦点的视图;
提供清晰的焦点和选择
在电视上一个成功的应用导航方案取决于用户确定屏幕中界面的元素焦点的难易程度。
如果你没有为焦点项目提供明确的变化迹象,用户会很快变得沮丧并退出应用程序。
你的布局应该通过颜色、大小、动画或者这些属性的组合帮助用户轻松的确定下一步的行为。使用统一的方案指示应用程序的焦点。
Android提供了 Drawable State List Resources来实现对焦点和选中控件的突出。代码如下:
<!-- res/drawable/button.xml -->
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/button_pressed" /> <!-- pressed -->
<item android:state_focused="true"
android:drawable="@drawable/button_focused" /> <!-- focused -->
<item android:state_hovered="true"
android:drawable="@drawable/button_focused" /> <!-- hovered -->
<item android:drawable="@drawable/button_normal" /> <!-- default -->
</selector>
在xml中使用:
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:background="@drawable/button" />