android tv列表焦點(diǎn)記憶實(shí)現(xiàn)的方法
在Android tv中的開發(fā)中,經(jīng)常要跟焦點(diǎn)打交道,一個常見的需求是要有焦點(diǎn)記憶功能,焦點(diǎn)移動到列表中的某一項(xiàng)中,焦點(diǎn)移出去,在回來時焦點(diǎn)還要定位到原來的項(xiàng)目上,對于這種需求,常見的實(shí)現(xiàn)方式是列表用用listview或者recyclerview實(shí)現(xiàn),維護(hù)一個變量去存儲上次的焦點(diǎn)位置,并在焦點(diǎn)變動或者按鍵事件中去維護(hù)這個變量和使用這個變量來定位.
具體實(shí)現(xiàn)
比如說用recyclerview實(shí)現(xiàn)列表時,在每個itemview的按鍵事件中,根據(jù)按鍵的方向和當(dāng)前view的位置,判斷是否是向外移走焦點(diǎn)的,如果是,那么就去設(shè)置父view也就是recyclerview的焦點(diǎn)模式,并且要保存當(dāng)前view的位置信息
在用戶操作移回焦點(diǎn)時,由于前一步設(shè)置了焦點(diǎn)模式為block,因此會父view會首先獲取焦點(diǎn),增加焦點(diǎn)變動的事件處理:
recyclerview.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus){
Recyclerview recyclerview = (Recyclerview)v;
recyclerView.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);
if(mCurrentFocusPosition>0){
LayoutManager layoutManager = recyclerView.getLayoutManager();
View viewByPosition = layoutManager.findViewByPosition(mCurrentFocusPosition);
if(viewByPosition!=null){
viewByPosition.requestFocus();
}
}
}
}
});
如代碼所示,在焦點(diǎn)變動處理中,設(shè)置view的焦點(diǎn)模式,可以讓子view獲取焦點(diǎn);拿到上一步保存的位置信息來手動設(shè)置焦點(diǎn).
后面介紹另一種更簡便的方法,有更好的封裝性,不需要外層邏輯做維護(hù)處理.
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android中使用Handler及Countdowntimer實(shí)現(xiàn)包含倒計時的閃屏頁面
這篇文章主要介紹了Android中使用Handler及Countdowntimer實(shí)現(xiàn)包含倒計時的閃屏頁面,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-03-03
Android開發(fā)入門環(huán)境快速搭建實(shí)戰(zhàn)教程
最近想重新學(xué)習(xí)下Android,學(xué)習(xí)之前開發(fā)環(huán)境的搭建是個首先要解決的問題,所以下面這篇文章主要給大家介紹了Android開發(fā)環(huán)境搭建的相關(guān)資料,文中將實(shí)現(xiàn)的步驟一步步介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11
簡單實(shí)現(xiàn)android短信發(fā)送器
這篇文章主要為大家詳細(xì)介紹了如何簡單實(shí)現(xiàn)android短信發(fā)送器 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01
Json數(shù)據(jù)解析模擬美團(tuán)界面顯示
這篇文章主要介紹了Json數(shù)據(jù)解析模擬美團(tuán)界面顯示,涉及到j(luò)son數(shù)據(jù)解析相關(guān)知識,本文寫的非常不錯,具有參考價值,特此分享供大家學(xué)習(xí)2016-01-01
Android開發(fā)之Android.mk模板的實(shí)例詳解
這篇文章主要介紹了Android開發(fā)之Android.mk模板的實(shí)例詳解的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下2017-10-10

