android手機端的開發與tv端的開發最大的不同點有兩點:1.焦點控制問題,2.按鍵事件處理。按鍵事件處理下篇再說吧,這次先談談焦點的問題。 在手機上,一般可以用手指去觸碰手機螢幕,所以一般的控制項可以用onTouch或者onClick監聽器去處理就可以了。但是,在tv端開發時,是沒有onTouch和onClick動作的,只能通過遙控器的上下左右鍵來控制選項並進行操作,因此焦點問題便成為一個核心並且頭疼的問題。那麼如何處理焦點問題呢?
對於控制項,對於焦點的屬性和方法無非就是這麼幾種:setFocusable(true),requestFoucs(),setFoucsChangeListener()等。要想讓一個控制項可以獲取焦點,我們可以調用setFocusable(true)方法。想讓一個控制項請求並保持焦點,我們可以調用requestFoucs()方法。想監控控制項焦點狀態的變化,可以調用setFoucsChangeListener()方法,根據焦點的狀態值,來設置控制項的背景色。說起控制項的背景色,要注意一點,不要在xml裡面設置bg_change_img這些動態的圖片或者背景,統一的寫死成預設顯示的圖片或者背景,否則圖片的變色會產生干擾和錯誤。
焦點的控制問題還要和遙控器的按鍵方向配合起來,具體的也是下次再說明。今天碰到一個很奇怪的問題,焦點在tab上,點擊遙控器的ok按鈕,左翻頁按鈕居然獲取焦點,查找原因,不得其解。因為tab和左箭頭不在一個activity裡面,ok事件也沒有重寫或者與這個地方沒有任何的關係。後來通過判定mainactivity裡面上下切換的時候焦點是在main還是在music裡面,設置了一個標誌位,多加了一個判定條件,只有當焦點在music裡面的時候,左箭頭才會獲取焦點。這樣當焦點在main上面的時候即tab上,點擊ok,左箭頭不會聚焦,因為焦點不在music上,所以解決了這個問題。焦點問題就是這麼讓人費解,不知道原因吧,居然可以解決問題。
arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()