Android Developers:针对电视优化导航

来源:互联网 发布:光线追踪算法实现 编辑:程序博客网 时间:2024/05/16 01:04

直接的交互界面是用户使用电视用户体验的一个重要方面。当你针对电视优化你的Android应用的时候,你应该特别注意,当使用远程控制替代触摸时用户在你的应用程序中的实际导航。 

 

这节课程向你展示了通过如下如何针对优化导航: 

  • 确保所有布局控制对支持D-Pad。 

  • 对UI导航提供高度明显的反馈。 

  • 将布局控制放置便于访问。 

 

处理D-pad导航 

———————————————————————————————————————

在电视中,用户使用D-pad或者方向键运行导航控制。这限制了上,下,左,和右的运动。为了构建完美的电视优化应用,你必须一个导航方案,使用它用户能快速学习如何在远程导航你的应用。 

 

当你针对D-pad设计导航的时候,遵守这些原则: 

  • 确保D-pad能导航到屏幕上所有的可见控件。 

  • 对于滑动列表焦点,D-pad上/下键滑动列表和输入关键字选择列表中的表项。确保用户能在列表中选择一个元素,并且当一个元素被选择的时候列表持续滑动。 

  • 确保控件之间的运动是简单的和可预示的。 

 

Android通常在布局元素之间自动处理导航顺序,所以你不需要额外做任何事情。如果屏幕布局使导航变得困难,或者如果你想用户以一种指定的方式在布局上移动,你可以为你的控制设置明确的导航。例如,为一个android.widget.EditText,定义获取焦点的下一个控件,使用: 

<EditText android:id="@+id/LastNameField" android:nextFocusDown="@+id/FirstNameField"\>
  

下面的表格列出了所有可用的导航属性: 

Attribute 

Function 

nextFocusDown 

定义了当用户向下导航的时候下一个获取焦点的视图。 

nextFocusLeft 

定义了当用户向左导航的时候下一个获取焦点的视图。 

nextFocusRight 

定义了当用户向右导航的时候下一个获取焦点的视图。 

nextFocusUp 

定义了当用户向上导航的时候下一个获取焦点的视图。 

为了使用这些明确的导航属性,设置在布局中其它控件ID值(android:id值)。你应该设置循环的导航顺序,以至于最后的控件指引焦点返回到第一个。 

 

注意:你应该仅当系统应用的默认顺序不能很好的工作的时候,使用这些属性来修改导航顺序。 

 

为焦点和选择提供清晰可见的说明 

————————————————————————————————————————————————————————— 

为在界面中所有的导航和可选择的元素使用合适的高亮颜色。这使得当使用D-pad导航的时候,用户知道这个控件当前是否获取焦点或者可选变得容易。并且,在你的应用中使用高度统一的计划。 

 

Android提供Drawable State List Resourdes类实现被选中或者获取焦点控件的高亮效果。例如: 

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" /> 


在可获取焦点和可被选择的控件之间提供足够的填充,以至于在它们周围的高亮是清晰可见的。 

 

设计便于导航 

—————————————————————————————————————————————————————————

用户应该能通过几次D-pad的点击导航到任何UI控件。导航应该容易并直观的理解。对于一些不直观的动作,使用通过帮助按钮或者帮助栏触发的对话框,给用户提供书面的帮助。 

 

预测用户想导航到的下一个屏幕,并提供一次点击导航到它。如果当前屏幕的UI非常稀疏,考虑使它成为一个多面板屏幕,使用Fragment来实现多面板屏幕。例如,看下面的多面板UI,大陆名称在左侧,并且在每个大陆很酷的地方列表在右侧。 


上面的UIyou由三个Fragment组成,left_size_action_controls,continents和placs,正如下面它的xml布局文件所展示。这样的多面板UI使D-pad导航更容易,并是充分利用了电视屏幕的横向控件。 

 

res/layout/cool_places.xml 

<LinearLayout        android:layout_width="match_parent"     android:layout_height="match_parent"     android:orientation="horizontal"    >    <fragment         android:id="@+id/left_side_action_controls"         android:layout_width="0px"         android:layout_height="match_parent"         android:layout_marginLeft="10dip"         android:layout_weight="0.2"/>     <fragment         android:id="@+id/continents"         android:layout_width="0px"         android:layout_height="match_parent"         android:layout_marginLeft="10dip"         android:layout_weight="0.2"/>     <fragment         android:id="@+id/places"         android:layout_width="0px"         android:layout_height="match_parent"         android:layout_marginLeft="10dip"         android:layout_weight="0.6"/> </LinearLayout> 

另外,注意上面的UI布局,动作控件是在左侧的一个竖直滑动列表,使得它们使用D-pad更容易访问。通常,对于使用横向滑动组件的布局,放置动作控件在左侧或者右侧,反之竖向滑动的组件。

原创粉丝点击