Android Studio V3.12環(huán)境下TV開發(fā)教程
(轉(zhuǎn)自Android官網(wǎng)https://developer.android.com/training/tv/start)
文章源自:光谷佳武 https://blog.csdn.net/jiawuhan/article/details/80619108
通常從大約10英尺遠的地方觀看電視屏幕,雖然它比大多數(shù)其他Android設(shè)備顯示器大得多男娄,但這種類型的屏幕不能提供與較小設(shè)備相同級別的精確細節(jié)和顏色勉抓。?這些因素要求您創(chuàng)建具有電視設(shè)備的應(yīng)用布局衷旅,以創(chuàng)建有用且令人愉快的用戶體驗者填。
本課介紹在電視應(yīng)用程序中構(gòu)建有效布局的最低要求和實施細節(jié)探越。
您還應(yīng)該閱讀Android TV Design
Android?主題可以為電視應(yīng)用中的布局提供基礎(chǔ)正勒。?您應(yīng)該使用主題來修改要在電視設(shè)備上運行的應(yīng)用活動的顯示腺兴。?本節(jié)介紹您應(yīng)該使用哪些主題。
v17 leanback支持庫包括Theme.Leanback?牌废,這是電視活動的主題,提供了一致的視覺風格啤握。?我們強烈建議將此主題用于使用v17 leanback類構(gòu)建的任何電視應(yīng)用程序鸟缕。?以下代碼示例演示如何將此主題應(yīng)用于活動:
android:theme="@style/Theme.Leanback">
注意:?leanback主題不包含操作欄,因為Android TV應(yīng)用程序中沒有任何操作欄。?如果您的應(yīng)用使用支持片段(如BrowseSupportFragment?懂从,則您的活動必須擴展FragmentActivity?授段。?不要使用試圖為操作欄設(shè)置主題并產(chǎn)生錯誤的AppCompatActivity?:
java.lang.RuntimeException: Unable to start activity ComponentInfo{...} :java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with thisactivity.
標題欄是手機和平板電腦上Android應(yīng)用的標準用戶界面元素,但不適用于電視應(yīng)用番甩。?如果您不使用v17 leanback類侵贵,則應(yīng)將此主題應(yīng)用于電視活動,以禁止顯示標題欄缘薛。?以下來自TV應(yīng)用程序清單的代碼示例演示了如何應(yīng)用此主題來刪除標題欄的顯示:
? ...
? android:theme="@android:style/Theme.NoTitleBar">? ? ...
建立基本的電視布局
電視設(shè)備的布局應(yīng)遵循一些基本指導原則窍育,以確保它們在大屏幕上可用和有效。?按照以下提示構(gòu)建針對電視屏幕優(yōu)化的景觀布局:
以橫向方向構(gòu)建布局宴胧。?電視屏幕始終以橫向模式顯示漱抓。
在屏幕的左側(cè)或右側(cè)放置屏幕導航控件,并保存內(nèi)容的垂直空間恕齐。
使用Fragments創(chuàng)建分為多個部分的UI乞娄,并使用視圖組(如GridView而不是ListView更好地使用橫向屏幕空間。
使用諸如RelativeLayout或LinearLayout類的視圖組來排列視圖显歧。?該方法允許系統(tǒng)將視圖的位置調(diào)整為電視屏幕的大小仪或,對齊方式,高寬比和像素密度士骤。
在布局控件之間添加足夠的邊距以避免混亂的UI范删。
由于電視標準的發(fā)展以及總是向觀眾呈現(xiàn)全屏圖像的愿望,電視布局具有一些獨特的要求敦间。?出于這個原因瓶逃,電視設(shè)備可能會剪輯應(yīng)用布局的外部邊緣,以確保整個顯示屏都被填滿廓块。?這種行為通常被稱為過掃描?厢绝。
屏幕元素必須始終對用戶可見,應(yīng)放置在過掃描安全區(qū)域內(nèi)带猴。?在左右邊緣上添加48dp的5%余量昔汉,并在頂部和底部邊緣上添加27dp的布局,以確保該布局中的屏幕元素位于過掃描安全區(qū)域內(nèi)拴清。
用戶不直接與之交互的背景屏幕元素不應(yīng)該被調(diào)整或剪裁到過掃描安全區(qū)域靶病。?這種方法確保背景屏幕元素在所有屏幕上看起來都正確。
以下示例顯示了可包含背景元素的根布局以及具有5%邊距且可包含過掃描安全區(qū)域內(nèi)元素的嵌套子布局:
? ?? ?? ?? ? ? ? ?
小心:如果您使用v17 leanback類(如BrowseFragment或相關(guān)小部件)口予,?BrowseFragment過掃描邊距應(yīng)用于布局娄周,因為這些布局已包含過掃描安全邊距。
電視應(yīng)用程序布局中的文本和控件應(yīng)該可以從遠處輕松查看和導航沪停。?按照以下提示使您的用戶界面元素更易于從遠處看到:
將文本分成用戶可以快速掃描的小塊煤辨。
在深色背景上使用淺色文字裳涛。?這種風格在電視上更容易閱讀。
避免使用既非常窄又非常寬的筆劃的輕量級字體或字體众辨。?使用簡單的sans-serif字體和抗鋸齒來提高可讀性端三。
使用Android的標準字體大小:
android:textAppearance="?android:attr/textAppearanceMedium"/>
確保所有視圖小部件都足夠大鹃彻,以便遠離屏幕10英尺的人員清晰可見(對于非常大的屏幕郊闯,此距離更大)。最好的方法是使用布局相對大小而不是絕對大小蛛株,以及與密度無關(guān)的像素(傾斜)單位而不是絕對像素單位团赁。?例如,要設(shè)置窗口小部件的寬度泳挥,請使用wrap_content代替像素測量然痊,并為窗口小部件設(shè)置頁邊距,請使用dip值而不是px值屉符。
有關(guān)與密度無關(guān)的像素和建筑物布局以處理較大屏幕尺寸的更多信息剧浸,請參閱支持多個屏幕?。
常見的高清電視顯示分辨率為720p矗钟,1080i和1080p唆香。?您的電視布局應(yīng)以1920 x 1080像素的屏幕尺寸為目標,然后允許Android系統(tǒng)在必要時將布局元素縮小至720p吨艇。?一般來說躬它,縮小比例(去除像素)不會降低您的布局演示質(zhì)量。?但是东涡,升級會導致顯示效果冯吓,降低布局質(zhì)量,并對應(yīng)用的用戶體驗產(chǎn)生負面影響疮跑。
要獲得圖像的最佳縮放結(jié)果组贺,請盡可能將它們作為9貼片圖像元素提供。?如果在布局中提供低質(zhì)量或小圖像祖娘,則會出現(xiàn)像素化失尖,模糊或顆粒感,這對用戶來說不是一個好的體驗渐苏。?改為使用高質(zhì)量的圖像掀潮。
有關(guān)優(yōu)化大屏幕布局和資源的更多信息,請參閱多屏幕設(shè)計?琼富。
有幾種構(gòu)建布局的方法仪吧,您應(yīng)該避免,因為它們在電視設(shè)備上不能很好地工作鞠眉,并導致不良的用戶體驗邑商。?以下是開發(fā)電視布局時應(yīng)特別不要使用的一些用戶界面方法摄咆。
重復使用手機或平板電腦布局?- 請勿在未經(jīng)修改的情況下重復使用手機或平板電腦應(yīng)用中的布局。?為其他Android設(shè)備外觀設(shè)計的布局不適合電視設(shè)備人断,因此應(yīng)簡化以便在電視上操作。
ActionBar?- 雖然建議在手機和平??板電腦上使用此用戶界面約定朝蜘,但它不適用于電視界面恶迈。?特別是,由于用遙控器導航這樣的菜單很困難谱醇,所以強烈建議使用操作欄選項菜單(或任何用于該事項的下拉菜單)暇仲。
ViewPager?- 在屏幕之間滑動可以在手機或平板電腦上運行,但不要在電視上試用副渴!
有關(guān)設(shè)計適合電視的布局的更多信息奈附,請參閱電視設(shè)計指南。
與任何其他Android設(shè)備一樣煮剧,電視設(shè)備的內(nèi)存量有限斥滤。?如果您使用非常高分辨率的圖像構(gòu)建應(yīng)用布局,或在應(yīng)用操作中使用許多高分辨率圖像勉盅,則它可能會迅速進入內(nèi)存限制并導致內(nèi)存不足錯誤佑颇。?為了避免這些類型的問題,請遵循以下提示:
僅當圖像顯示在屏幕上時才加載圖像草娜。?例如挑胸,當在GridView或Gallery顯示多個圖像時,只在視圖的Adapter上調(diào)用getView()時才加載圖像宰闰。
在不再需要的Bitmap視圖上調(diào)用recycle()?茬贵。
使用WeakReference在內(nèi)存Collection存儲對Bitmap對象的引用。
如果您從網(wǎng)絡(luò)獲取圖像移袍,請使用AsyncTask將其提取并存儲在設(shè)備上以加快訪問速度解藻。?切勿在應(yīng)用程序的主用戶界面線程上執(zhí)行網(wǎng)絡(luò)事務(wù)。
在下載大圖時將大圖縮小到更適合的大小;?否則咐容,下載圖像本身可能會導致內(nèi)存不足異常舆逃。
有關(guān)處理圖像時獲得最佳性能的更多信息,請參閱高效顯示位圖?戳粒。
對于起居室環(huán)境路狮,我們建議您使用30秒內(nèi)全屏和可忽略的視頻廣告解決方案。?必須使用D-pad而非觸摸才能訪問Android TV上的廣告功能蔚约,例如解除按鈕和點擊奄妨。
Android TV不提供網(wǎng)絡(luò)瀏覽器。?您的廣告不得嘗試啟動網(wǎng)絡(luò)瀏覽器或重定向到未獲得Android TV設(shè)備許可的Google Play商店內(nèi)容苹祟。
注意:您可以使用WebView類登錄Google+和Facebook等服務(wù)砸抛。