創(chuàng)建電視頁面布局
用戶通常在距離電視屏幕10英尺的位置觀看秒啦,并且它遠遠大于大多數(shù)Android設(shè)備的顯示屏饼暑,但是這種類型的屏幕不能提供與小屏幕相同級別的細節(jié)和顏色公你。這些因素要求你為電視設(shè)備創(chuàng)建應(yīng)用布局時慌植,能創(chuàng)造一個有效的和愉快的用戶體驗。
使用布局主題
Android主題能為你的應(yīng)用提供基礎(chǔ)的布局灶壶。您應(yīng)該使用一個主題來修改您的應(yīng)用程序的activity的顯示肝断,這意味著這些activity要在電視設(shè)備上運行。
Leanback 主題
v17 leanback library為TV activity提供一個標(biāo)準(zhǔn)的主題通過調(diào)用Theme.Leanback. 這個主題為電視應(yīng)用程序建立了一個一致的視覺風(fēng)格。大多數(shù)電視應(yīng)用程序推薦使用此主題胸懈。代碼如下:
<activity
android:name="com.example.android.TvActivity"
android:label="@string/app_name"
android:theme="@style/Theme.Leanback">
NoTitleBar 主題
在手機和平板電腦的Android應(yīng)用程序中担扑,標(biāo)題欄是一個標(biāo)準(zhǔn)的用戶界面元素,但它不適合的電視應(yīng)用程序趣钱。如果你沒有使用v17 Leanback,你需要使用這個主題使標(biāo)題欄不顯示涌献。代碼如下:
<application>
...
<activity
android:name="com.example.android.TvActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar">
...
</activity>
</application>
創(chuàng)建基本的電視機布局
電視設(shè)備的布局應(yīng)遵循以下基本準(zhǔn)則,以確保它們在大屏幕上是可用和有效的首有。
1.橫屏顯示模式燕垃。
2.將屏幕導(dǎo)航控件放在屏幕的左側(cè)或右側(cè),并保存內(nèi)容的垂直空間井联。
3.將界面分成一些區(qū)塊卜壕,使用Fragment,使用GridView代替Listview來更好的利用水平空間烙常。
4.使用視圖組來排列視圖轴捎,如 RelativeLayout,LinearLayout蚕脏。這種方法允許系統(tǒng)調(diào)整視圖的位置的大小侦副,對齊,縱橫比和電視屏幕的像素密度蝗锥。在布局控件之間添加足夠的邊距以避免混亂的布局跃洛。
過掃描
為了始終呈現(xiàn)一個完整的屏幕圖片給觀眾,電視的布局有一些獨特的要求是由于電視標(biāo)準(zhǔn)的演變導(dǎo)致的终议。出于這個原因汇竭,電視設(shè)備可以剪輯應(yīng)用程序布局的外邊緣,以確保整個顯示被填充穴张。這種行為通常被稱為過掃描细燎。
屏幕元素必須放置在用戶隨時可見的過掃描的安全區(qū)內(nèi)。添加5%的安全邊距皂甘,左右48dp,上下27dp玻驻。代碼如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Screen elements that can render outside the overscan safe area go here -->
<!-- Nested RelativeLayout with overscan-safe margin -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="27dp"
android:layout_marginBottom="27dp"
android:layout_marginLeft="48dp"
android:layout_marginRight="48dp">
<!-- Screen elements that need to be within the overscan safe area go here -->
</RelativeLayout>
</RelativeLayout>
注:如果你使用了v17 leanback就不要添加過掃描邊距了,因為這些布局已經(jīng)合并過過掃描邊距了偿枕。
建立可用的文本和控件
電視應(yīng)用程序布局中的文本和控件在遠處應(yīng)該很容易被看見和操控璧瞬。
1.將文本分割成小塊,使用戶可以快速瀏覽渐夸。
2.在暗背景上使用亮文本嗤锉。這種風(fēng)格在電視上更容易閱讀。
3.避免有非常窄或非常寬筆劃的輕量級字體墓塌。使用簡單的無襯線字體和防鋸齒增加可讀性瘟忱。
4.使用Android的標(biāo)準(zhǔn)字體大小:
<TextView
android:id="@+id/atext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceMedium"/>
5.確保所有的視圖部件都足夠大奥额,人坐在離屏幕10英尺遠的地方可以清楚地看到(這個距離對于超大屏幕來說更大)。最好的方法是使用布局相對大小访诱,而不是絕對大小,使用密度無關(guān)像素(DIP)單位垫挨,而不是絕對像素單位。
管理電視布局資源
普通高清電視的顯示分辨率為720p触菜、1080i和1080p九榔。你的電視布局應(yīng)針對1920×1080像素的屏幕尺寸,然后允許Android系統(tǒng)降級你的布局元素在720p的分辨率上玫氢。在一般情況下帚屉,降低分辨率(刪除像素)不會降低你的布局演示質(zhì)量。然而漾峡,提升分辨率可能導(dǎo)致你的布局的顯示質(zhì)量降低攻旦,對你的應(yīng)用程序的用戶體驗造成負面影響。
為了得到圖像的最佳尺度的結(jié)果,盡可能使用9-patch圖片生逸。如果你在你的布局使用低質(zhì)量或小的圖像牢屋,他們會出現(xiàn)像素化,模糊或粗糙槽袄,用戶體驗差烙无。應(yīng)使用高質(zhì)量的圖像代替。
避免布局反模式
1.重用手機或平板電腦布局遍尺。不要在沒有修改的情況下重用手機或平板電腦的布局截酷。其他Android設(shè)備的布局不適合電視設(shè)備,應(yīng)簡化操作乾戏。
2.ActionBar 迂苛。不適合電視界面。
3.ViewPager鼓择。屏幕之間滑動可以在手機或平板電腦上工作三幻,但不要在電視上嘗試!
TV Desgin
處理大圖片
電視設(shè)備像任何其他Android設(shè)備一樣都有一個有限的內(nèi)存量呐能。如果你用高分辨率的圖像構(gòu)建應(yīng)用程序布局或者在應(yīng)用程序的操作中使用許多高分辨率圖像念搬,它會快速地運行到內(nèi)存閥值并導(dǎo)致內(nèi)存溢出。
為了避免這些類型的問題摆出,遵循以下提示:
1.只有在屏幕上顯示時才加載圖像朗徊。
2.清除不再需要的位圖。
3.使用WeakReference引用位圖存儲在內(nèi)存中的集合對象偎漫。
4.如果你的圖片從網(wǎng)絡(luò)獲取荣倾,使用AsyncTask獲取,為了更快的訪問可以將其存到設(shè)備中骑丸。
5.下載時將圖像縮小到合適的大小舌仍。
提供有效的廣告
對于居室環(huán)境,我們建議你使用全屏且在30秒內(nèi)關(guān)閉的視頻廣告通危。Android電視廣告的功能铸豁,如關(guān)閉按鈕和點擊率,必須使用鍵盤而不是觸摸菊碟。
Android TV不提供網(wǎng)頁瀏覽器节芥。你的不能啟動網(wǎng)頁瀏覽器或者重定向到Google Play未經(jīng)允許的Android設(shè)備。