您好,登錄后才能下訂單哦!
最近在做有關安卓TV的相關項目,與手機端的安卓開發不同的是,TV端需要我們對焦點進行一定的處理,才使得整個程序的邏輯符合我們的要求。在電視上進行操作,一般只能通過遙控的上下左右以及確認鍵來進行焦點的轉移。而原生的安卓系統已經為我們做了默認的焦點獲取處理,而這個默認的焦點則是自動選擇該方向上距離最近的一個目標獲得焦點,注意,這里的距離未必是直線距離,更多時候是該方向坐標的距離,比如:
在這種情況下,在item1按下右鍵,item0將獲得焦點,而在item0按下下鍵,item1將獲得焦點,這往往會與我們的操作習慣不符。這時候就需要我們去控制焦點。當然了,最理想的情況是讓系統自動幫我們處理焦點的獲取,我們的布局可以做出適當的調整來使得焦點的變化符合邏輯,而在迫不得已的情況下,我們也可以通過以下的思路來改變。
1.在XML屬性布局文件中,通過設置nextFocusDown , nextFocusLeft ,nextFocusRight ,和nextFocusUp,這些屬性的值來明確焦點從當前view轉移后的view的對應id。
2.通過設置focusable屬性,來屏蔽部分控件的焦點獲取。
3.通過代碼中的requestFocus來在某一時刻使某控件強制獲得焦點。
4.通過ViewTreeObserver.OnGlobalFocusChangeListener來監聽全局的焦點變化,在焦點變化時進行代碼操作。
5.對特定布局的按鍵事件進行攔截,然后手動設置焦點變化。
6.利用listview、gridview等adapterview的特性,當整體獲得焦點時,再對item進行焦點分發,比如在需要保存選中狀態的應用場景。
暫時我用到的主要是這些做法,日后可能會繼續進行補充。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。