Android 創(chuàng)建TV導(dǎo)航

2018-08-02 17:58 更新

編寫:awong1900 - 原文:http://developer.android.com/training/tv/start/navigation.html

TV設(shè)備為應(yīng)用程序提供一組有限的導(dǎo)航控件。為我們的TV應(yīng)用創(chuàng)建有效的導(dǎo)航方案取決于理解這些有限的控件和用戶操作應(yīng)用時(shí)的限制。因此當(dāng)我們?yōu)門V創(chuàng)建Android應(yīng)用時(shí),額外注意用戶是用遙控器按鍵,而不是用觸摸屏導(dǎo)航我們的應(yīng)用程序。

這節(jié)課解釋了創(chuàng)建有效的TV應(yīng)用導(dǎo)航方案的最低要求和如何對(duì)應(yīng)用程序使用這些要求。

使用D-pad導(dǎo)航

在TV設(shè)備上,用戶用遙控器設(shè)備的方向手柄(D-pad)或者方向鍵去控制控件。這類控制器限制為上下左右移動(dòng)。為了創(chuàng)建最優(yōu)化的TV應(yīng)用,我們必須提供一個(gè)用戶能快速學(xué)習(xí)如何使用有限控件導(dǎo)航的方案。

Android framework自動(dòng)地處理布局元素之間的方向?qū)Ш讲僮鳎虼宋覀儾恍枰趹?yīng)用中做額外的事情。不管怎樣,我們也應(yīng)該用D-pad控制器實(shí)際測(cè)試去發(fā)現(xiàn)任何導(dǎo)航問題。接下來的指引是如何在TV設(shè)備上用D-pad測(cè)試應(yīng)用的導(dǎo)航。

  • 確保用戶能用D-pad控制器導(dǎo)航所有屏幕可見的控件。
  • 對(duì)于滾動(dòng)列表上的焦點(diǎn),確保D-pad上下鍵能滾動(dòng)列表,并且確定鍵能選擇列表中的項(xiàng)。檢查用戶可以選擇列表中的元素并且選中元素后仍可以滾動(dòng)列表。
  • 確保在控件之間切換是直接的和可預(yù)測(cè)的。

修改導(dǎo)航的方向

基于布局元素中可選中的元素的相對(duì)位置,Android framwork自動(dòng)應(yīng)用導(dǎo)航方向方案。我們應(yīng)該用D-pad控制器測(cè)試生成的導(dǎo)航方案。在測(cè)試后,如果我們想規(guī)定用戶以一個(gè)特定的方式在布局中移動(dòng),我們可以在控件中設(shè)置明確的導(dǎo)航方向。

Note: 如果系統(tǒng)使用的默認(rèn)順序不是很好,我們應(yīng)該僅用這些屬性去修改導(dǎo)航順序。

接下來的示例代碼展示如何為TextView布局控件定義下一個(gè)控件焦點(diǎn)。

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

接下來的列表展示了用戶接口控件所有可用的導(dǎo)航屬性。

屬性功能
nextFocusDown定義用戶按下導(dǎo)航時(shí)的焦點(diǎn)
nextFocusLeft定義用戶按左導(dǎo)航時(shí)的焦點(diǎn)
nextFocusRight定義用戶按右導(dǎo)航時(shí)的焦點(diǎn)
nextFocusUp定義用戶按上導(dǎo)航時(shí)的焦點(diǎn)

去使用這些明確的導(dǎo)航屬性,設(shè)置另一個(gè)布局控件的ID值(android:id值)。我們應(yīng)該設(shè)置導(dǎo)航順序?yàn)橐粋€(gè)循環(huán),因此最后一個(gè)控件返回至第一個(gè)焦點(diǎn)。

提供清楚的焦點(diǎn)和選中狀態(tài)

在TV設(shè)備上的應(yīng)用導(dǎo)航方案的成功是基于用戶如何容易的決定屏幕上界面元素的焦點(diǎn)。如果我們不提供清晰的焦點(diǎn)項(xiàng)顯示(和用戶能操作的選項(xiàng)),他們會(huì)很快泄氣并退出我們的應(yīng)用。同樣的原因,重要的是當(dāng)我們的應(yīng)用開始或者任何無操作的時(shí)間中,總是有焦點(diǎn)項(xiàng)可以立即操作。

我們的應(yīng)用布局和實(shí)現(xiàn)應(yīng)該用顏色,大小,動(dòng)畫或者它們組在一起來幫助用戶容易地決定下一步操作。在應(yīng)用中用一致的焦點(diǎn)顯示方案。

Android提供Drawable State List Resources來實(shí)現(xiàn)高亮選中的焦點(diǎn)。接下來的示例代碼展示了如何為用戶導(dǎo)航到控件并選擇它時(shí)使用視覺化按鈕顯示:

<!-- 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示例代碼對(duì)按鈕控件應(yīng)用了上面的按鍵狀態(tài)列表drawable:

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

確保在可定為焦點(diǎn)的和可選中的控件中提供了充分的填充,以便圍繞它們的高亮是清楚的。

更多建議關(guān)于TV應(yīng)用中設(shè)計(jì)有效的選中和焦點(diǎn),看Patterns of TV。


下一節(jié): 創(chuàng)建TV播放應(yīng)用 >


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)