`
252190908
  • 浏览: 229019 次
文章分类
社区版块
存档分类
最新评论

Android Developers:针对电视优化导航

 
阅读更多

直接的交互界面是用户使用电视用户体验的一个重要方面。当你针对电视优化你的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更容易访问。通常,对于使用横向滑动组件的布局,放置动作控件在左侧或者右侧,反之竖向滑动的组件。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics