1. 程式人生 > >關於Android TV應用開發的心得體會

關於Android TV應用開發的心得體會

從去年開始搞Android TV應用開發差不多快一年了,雖然中間有個幾個月沒搞,不過現在總算還是回到正軌上來了,所以記錄一下自己的一些收穫和體會,大家有什麼好的建議也歡迎留言分享,本文不間斷更新。這裡有TV開發的QQ群【522186932】,歡迎大家,群主是個很厲害的人(群主不是我哈)。這裡有群主寫的一些TV開發常用的控制元件。TV開發常用控制元件

1、國內的智慧電視,盒子的android系統其實都是手機系統改造來的,對手機系統進行了一些刪減,比如沒有了通知欄等。所以大家不要在AndroidTV的SDK上進行開發。

2、很多使用者的電視螢幕顯示效果很糟糕,因此建議你們的UI設計在進行設計的時候,不要選用比較淡的顏色,對於點選、選中效果時,幾種顏色也不要太相近。

3、因為TV應用大部分時候是依靠遙控器來進行操作的,因此焦點的顯示就比較重要了。我們需要高亮或者放大當前焦點所在的控制元件。放大其實也可以通過在上面覆蓋一個popupwindow或者dialog來實現,不一定非要直接對UI控制元件進行放大。

4、焦點移動問題。儘量還是依靠系統去控制焦點的移動,實在不行的時候,我們一般選用以下方法來控制焦點的移動問題。
第一個是在xml中,程式碼如下:

//這裡表示,當焦點在當前控制元件時,按下遙控器的左、右、上、下時焦點將會移向的控制元件
android:nextFocusLeft=""
android:nextFocusRight=""
android:
nextFocusUp="" android:nextFocusDown=""

當然程式碼裡也有類似的方法:

mView.setNextFocusUpId();
mView.setNextFocusDownId();     
mView.setNextFocusLeftId();
mView.setNextFocusRightId();

其他控制焦點的一些方法還有攔截按鍵,然後通過requestFocus()方法強制搶佔焦點。

5、在需要使用者進行輸入的地方,最好是自己在合適的地方寫一個軟鍵盤,理想的鍵盤應該是下面這樣的:
九宮格鍵盤

6、關於螢幕適配方案。因為電視螢幕解析度比較少,因此可以考慮多寫幾套dimens就行了。

7、控制元件放大後被其他控制元件擋住怎麼辦?請重寫該控制元件所在的ViewGroup的getChildDrawingOrder()方法,當然首先你需要setChildrenDrawingOrderEnabled(true)。至於具體的使用方法,可以百度方法名就知道了。這裡就是更改繪製順序的問題。

8、盒子和智慧電視的ROM都很小,因此不用的檔案還是儘快刪除掉比較好。另外雖然盒子不用考慮耗電的問題,但是盒子效能都不怎麼樣,所以還是需要考慮效能優化的問題。主要還是大圖片的處理,因為電視會遇到更多大圖片。至於優化方案,我暫時也是用的圖片載入框架來載入圖片,不知道各位在這方面還有更好的建議沒有?

9、有些時候焦點移動不太符合預期,嘗試過nextFocus也不理想的時候,可以考慮攔截按鍵,當然很多時候在Activity裡面攔截是比較麻煩的,可以考慮自定義控制元件,然後重寫dispatchKeyDown方法來攔截按鍵,實現對焦點移動的控制