Android Studio V3.12环境下TV开发教程(四)创建电视导航

Android Studio V3.12环境下TV开发教程

(转自Android官网https://developer.android.com/training/tv/start)

文章源自:光谷佳武 https://blog.csdn.net/jiawuhan/article/details/80619266


创建电视导航

电视设备为应用程序提供了一组有限的导航控件。 为您的电视应用创建有效的导航方案取决于理解这些有限的控件以及用户在操作应用时的感知限制。 在为电视创建Android应用时,请特别注意在使用遥控器按钮而不是触摸屏时,用户实际如何在应用中导航。

本课说明创建有效的电视应用导航方案的最低要求,以及如何将这些要求应用到您的应用。

启用D-pad导航

在电视设备上,用户使用方向键盘(D-pad)或方向键在遥控设备上进行导航。 这种类型的控制将运动限制在上,下,左,右。 要构建出色的电视优化应用程序,您必须提供一个导航方案,用户可以使用这些有限的控件快速学习如何导航您的应用程序。

Android框架自动处理布局元素之间的定向导航,所以您通常不需要为您的应用程序额外做任何事情。 但是,您应该使用D-pad控制器彻底测试导航,以发现任何导航问题。 请遵循以下指导原则,测试您的应用的导航系统在电视设备上的D-pad上的效果:

  • 确保具有D-pad控制器的用户可以导航到屏幕上的所有可见控件。
  • 对于具有焦点的滚动列表,确保D-pad上下键滚动列表,然后按Enter键选择列表中的项目。 验证用户可以选择列表中的元素,并且在选择元素时列表仍然会滚动。
  • 确保控件之间的切换非常简单且可预测。

修改方向导航

Android框架根据布局中可聚焦元素的相对位置自动应用定向导航方案。 您应该使用D-pad控制器在您的应用中测试生成的导航方案。 经过测试,如果您决定希望用户以特定方式在布局中移动,则可以为控件设置明确的方向导航。

注意:如果系统应用的默认订单运行不正常,则只应使用这些属性来修改导航订单。

以下代码示例演示如何定义下一个控件以接收TextView布局对象的焦点:

 
  
<TextView android:id="@+id/Category1"
        android:nextFocusDown="@+id/Category2"\>

下表列出了Android用户界面窗口小部件的所有可用导航属性:

属性 功能
nextFocusDown 定义下一个视图以在用户导航时接收焦点。
nextFocusLeft 定义用户向左导航时接收焦点的下一个视图。
nextFocusRight 定义用户在正确导航时接收焦点的下一个视图。
nextFocusUp 定义用户导航时接收焦点的下一个视图。

要使用这些显式导航属性之一,请将该值设置为布局中另一个小部件的ID( android:id值)。 您应该将导航顺序设置为循环,以便最后一个控件将焦点返回到第一个控件。

提供清晰的焦点和选择

应用程序在电视设备上的导航方案的成功取决于用户确定屏幕上关注哪个用户界面元素的容易程度。 如果您没有提供明确的重点项目指示(因此用户可以采取哪些措施),他们可能会很快失去意识并退出应用程序。 出于同样的原因,始终有一个焦点项目非常重要,用户可以在应用程序启动后立即采取行动,或任何时候闲置。

您的应用程序布局和实施应使用颜色,大小,动画或这些属性的组合,以帮助用户轻松确定接下来可以采取的操作。 使用统一的方案在应用程序中指示焦点。

Android提供可绘制的状态列表资源来实现聚焦和选定控件的亮点。 下面的代码示例演示如何启用按钮的可视行为以指示用户已导航到控件,然后选择它:

 
  
<!-- 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 

 
  
<Button
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:background="@drawable/button" />

确保在可聚焦和可选控件内提供足够的填充,使其周围的高光清晰可见。

有关为电视应用程序设计有效选择和重点的更多建议,请参阅电视模式 


猜你喜欢

转载自blog.csdn.net/jiawuhan/article/details/80619266