Android videoview搶占焦點(diǎn)的處理方法
問(wèn)題描述:
android 機(jī)頂盒應(yīng)用:
應(yīng)用程序主界面(MainActivity)只有兩個(gè)控件,一個(gè)videoview和一個(gè)button。
視頻框設(shè)置無(wú)焦點(diǎn),按鍵有焦點(diǎn)。
首次進(jìn)入應(yīng)用時(shí)焦點(diǎn)正常,聚焦在button上;但是當(dāng)點(diǎn)擊button跳轉(zhuǎn)到下一個(gè)activity并返回時(shí),焦點(diǎn)卻聚焦到了videoview上,并且代碼里強(qiáng)制設(shè)置焦點(diǎn):
Button.requestFocus();
無(wú)效,現(xiàn)象是視頻加載時(shí),焦點(diǎn)是在button處,但是當(dāng)視頻加載完成開(kāi)始播放時(shí),整個(gè)activity失去焦點(diǎn),幾秒后,焦點(diǎn)跑到videoview上面。
原因分析:
查看了一下VideoView的源碼,發(fā)現(xiàn)原因出在初始化上面上:
private void initVideoView() {
mVideoWidth = 0;
mVideoHeight = 0;
getHolder().addCallback(mSHCallback);
getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
setFocusable(true);//問(wèn)題出在這里
setFocusableInTouchMode(true);
requestFocus();
mPendingSubtitleTracks = new Vector<Pair<InputStream, MediaFormat>>();
mCurrentState = STATE_IDLE;
mTargetState = STATE_IDLE;
}
看到這里就豁然開(kāi)朗了,這就解釋了為什么xml中設(shè)置了android:focusable="false"而videoview仍然能獲取焦點(diǎn)的問(wèn)題,也解釋了為什么button會(huì)獲得焦點(diǎn)而當(dāng)視頻加載好后被videoview搶占的問(wèn)題。
解決方法:
明白了問(wèn)題所在就好解決了,因?yàn)橹皇墙鉀Q焦點(diǎn)問(wèn)題,所以無(wú)需自定義videoview那么麻煩,只需要重寫(xiě)onResume()方法即可:
@Override
protected void onResume() {
super.onResume();
videoView.setFocusable(false);
}
總結(jié):
一定要多看源碼!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android取消EditText自動(dòng)獲取焦點(diǎn)默認(rèn)行為
- Android 設(shè)置Edittext獲取焦點(diǎn)并彈出軟鍵盤(pán)
- Android取消EditText自動(dòng)獲取默認(rèn)焦點(diǎn)
- 360瀏覽器文本框獲得焦點(diǎn)后被android軟鍵盤(pán)遮罩該怎么辦
- Android開(kāi)發(fā)之滑動(dòng)圖片輪播標(biāo)題焦點(diǎn)
- Android給自定義按鍵添加廣播和通過(guò)廣播給當(dāng)前焦點(diǎn)輸入框賦值
- Android GridView中包含EditText的焦點(diǎn)重新獲取方法
- Android 實(shí)現(xiàn)不依賴焦點(diǎn)和選中的TextView跑馬燈
- Android基于TextView不獲取焦點(diǎn)實(shí)現(xiàn)跑馬燈效果
- Android OnFocuChangeListener焦點(diǎn)事件詳解
相關(guān)文章
Android標(biāo)題欄上添加多個(gè)Menu按鈕的實(shí)例
這篇文章主要介紹了Android標(biāo)題欄上添加多個(gè)Menu按鈕的實(shí)例的相關(guān)資料,這里提供簡(jiǎn)單實(shí)例說(shuō)明如何添加多個(gè)menu按鈕的方法,需要的朋友可以參考下2017-09-09
Android實(shí)戰(zhàn)教程第一篇之最簡(jiǎn)單的計(jì)算器
這篇文章主要為大家詳細(xì)介紹了Android實(shí)戰(zhàn)教程第一篇,如何實(shí)現(xiàn)最簡(jiǎn)單的計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11
Android貝塞爾曲線實(shí)現(xiàn)直播點(diǎn)贊效果
這篇文章主要為大家詳細(xì)介紹了Android貝塞爾曲線實(shí)現(xiàn)直播點(diǎn)贊效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
Android PopupWindow 點(diǎn)擊外面取消實(shí)現(xiàn)代碼
這篇文章主要介紹了Android PopupWindow 點(diǎn)擊外面取消實(shí)現(xiàn)代碼,本文直接給出核心實(shí)現(xiàn)代碼,代碼中包含注釋,需要的朋友可以參考下2015-04-04
僅5步搞定Android開(kāi)發(fā)環(huán)境部署 Android開(kāi)發(fā)環(huán)境搭建教程
僅5步搞定Android開(kāi)發(fā)環(huán)境部署,這篇文章主要為大家詳細(xì)介紹了Android開(kāi)發(fā)環(huán)境搭建教程,感興趣的小伙伴們可以參考一下2016-02-02
Android Filterable實(shí)現(xiàn)Recyclerview篩選功能的示例代碼
這篇文章主要介紹了Android Filterable實(shí)現(xiàn)Recyclerview篩選功能的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
Android實(shí)現(xiàn)中國(guó)象棋游戲(局域網(wǎng)版)
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)局域網(wǎng)版的中國(guó)象棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
Android不壓縮圖片實(shí)現(xiàn)高清加載巨圖實(shí)例
這篇文章主要為大家介紹了Android不壓縮圖片實(shí)現(xiàn)高清加載巨圖實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06

