1. 程式人生 > >android TV盒子開發心得(一)

android TV盒子開發心得(一)

今天給大家介紹一下本人在開發android TV APP的時候所遇到的一些問題及心得體會,希望能幫助各位解決問題 

首先,簡單介紹一下TV開發和手機開發的不同之處:

1.我們在開發TV的時候,經常會遇到焦點的處理問題,如何去移動焦點?如何讓焦點定位在自己設定的控制元件上?

 移動焦點:在這裡我們需要使用onKeyDown()的方法,進行一個焦點的上下移動的處理,onKeyDown的使用方法網上有詳細介紹

 焦點定位:img.requestFocus(); 在xml中我們還需要設定一個android:focusable="true"的屬性,當然你還有需要去設定一下獲取焦點的背景色

2.在手機上我們一般會使用viewPager+fragment的控制元件來作為整個APP的佈局方式,但是,在TV開發中是不提倡使用ViewPager的,因為在TV中介面的移動是依靠焦點的變化,舉一個簡單 的例子,我們有兩個Fragment介面,在兩個Fragmnet介面分別使用recyclerView載入了一定的網路資料,當我們的焦點在recyclerView 上的item上時,將焦點移動至recyclerView最右側時,繼續按右鍵,那麼這個時候fragmen就會進行切換,這樣的話是不符合TV開發的需求的

3.在TV開發中,使用的setOnFocusChangeListener()方法,是用來監聽焦點的改變的,一般我們用來監聽控制Fragment的移動

4.在開發中有時可能會遇到焦點找不到的情況,,比如說我們使用RecyclerView來載入資料,這時需要在xml中,新增android:descendantFocusability="afterDescendants"這一行程式碼,至於這行程式碼的意思網上有介紹,大致上就是說父控制元件和子控制元件之間的焦點獲取的關係,

5,同樣使用Recycelrview載入資料,當焦點向下移動時recyclerView就會向下滑動,這個時候,就會發生焦點不在當前頁面上的情況,當然這種情況也要看自己的佈局任如何寫的,要是想檢測在RecycelrView中當前獲取焦點的是哪一個item的話,只需要在onBind...()中加上setOnFocusChangeListener()方法就OK了

以上是一點關於本人TV 開發中遇到的問題和解決辦法,希望能夠幫到大家,另外,android TV的開發其實是有他專門的開發框架的,感興趣的可以自己研究,以上的方法對於有過手機開發的人來說,更容易上手一些,也簡單一些,下次再更新其它的內容