tv屏中,最難處理的就是焦點問題,而複雜的焦點處理要屬應用列表模塊了 根據展示的列表,可以翻頁,預設焦點處於左上角第一個,此時通過遙控器上下左右可以控制焦點移動位置 焦點所在應用需要有個黃色邊框標識,往右移動到邊界,自動到下一行,繼續往右移動到邊界底部自動翻頁,往下移動到底部自動翻頁 長按應用彈出編 ...
tv屏中,最難處理的就是焦點問題,而複雜的焦點處理要屬應用列表模塊了
根據展示的列表,可以翻頁,預設焦點處於左上角第一個,此時通過遙控器上下左右可以控制焦點移動位置
焦點所在應用需要有個黃色邊框標識,往右移動到邊界,自動到下一行,繼續往右移動到邊界底部自動翻頁,往下移動到底部自動翻頁
長按應用彈出編輯框,可以進入編輯模式,編輯模式下應用高亮顯示,可以移動應用位置,按確定跟返回退出編輯模式,編輯模式下焦點不可以超出邊界
需求基本類似,常見問題一般會有下麵這些
1、列表使用recyclerview刷新數據後焦點錯亂
2、界面中存在多個fragment或者視窗時(比如狀態欄是一個單獨的fragment),刷新界面會被其它頁面搶占焦點
3、焦點來回切換頁面時不好控制,被搶占焦點
以上問題看似沒幾個,但是列表編輯狀態,下載應用刷新,編輯模式下禁止焦點離開列表,這種類似的處理很多
很多時候只能強制獲取焦點,避免被搶占問題,又或者刷新時延遲一下刷新完在重新恢復焦點,但是很難處理
於是想到一個比較絲滑的處理方式,全部通過按鍵監聽去控制,繪製一個偽焦點處理
移動邏輯封裝到工具類中,對外提供移動的方法
優點是沒有延遲跟相容性問題,落焦的速度得到大幅度提升,擴展性強
缺點就是需要控制焦點的一些移動邏輯,增加了代碼量