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 判斷是否是是全漢字、全字母、全數(shù)字、數(shù)字和字母等(代碼)
這篇文章主要介紹了Android 判斷是否是是全漢字、全字母、全數(shù)字、數(shù)字和字母等的實(shí)例代碼,需要的朋友可以參考下2016-12-12Android實(shí)現(xiàn)歌詞滾動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)歌詞滾動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11Android實(shí)現(xiàn)一個(gè)簡(jiǎn)單的單詞本
大家好,本篇文章主要講的是Android實(shí)現(xiàn)一個(gè)簡(jiǎn)單的單詞本,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01詳解用RxJava實(shí)現(xiàn)事件總線(Event Bus)
本篇文章主要介紹了用RxJava實(shí)現(xiàn)事件總線(Event Bus),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11分析Android Activity的啟動(dòng)過(guò)程
這篇文章主要介紹了分析Android Activity的啟動(dòng)過(guò)程的相關(guān)資料,需要的朋友可以參考下2017-07-07Android?十六進(jìn)制狀態(tài)管理實(shí)例詳解
這篇文章主要為大家介紹了Android?十六進(jìn)制狀態(tài)管理實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09Android彈窗ListPopupWindow的簡(jiǎn)單應(yīng)用詳解
這篇文章主要為大家詳細(xì)介紹了Android彈窗ListPopupWindow的簡(jiǎn)單應(yīng)用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11