十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
這篇文章給大家介紹怎么在Android中利用videoview對(duì)搶占的焦點(diǎn)進(jìn)行處理,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
問題描述:
android 機(jī)頂盒應(yīng)用:
應(yīng)用程序主界面(MainActivity)只有兩個(gè)控件,一個(gè)videoview和一個(gè)button。
視頻框設(shè)置無焦點(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();
無效,現(xiàn)象是視頻加載時(shí),焦點(diǎn)是在button處,但是當(dāng)視頻加載完成開始播放時(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);//問題出在這里 setFocusableInTouchMode(true); requestFocus(); mPendingSubtitleTracks = new Vector>(); mCurrentState = STATE_IDLE; mTargetState = STATE_IDLE; }