最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android videoview搶占焦點(diǎn)的處理方法

 更新時(shí)間:2017年06月16日 11:27:00   作者:Symon_sun  
這篇文章主要為大家詳細(xì)介紹了Android videoview搶占焦點(diǎn)的處理方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

問題描述:

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<Pair<InputStream, MediaFormat>>();

   mCurrentState = STATE_IDLE;
   mTargetState = STATE_IDLE;
 }

看到這里就豁然開朗了,這就解釋了為什么xml中設(shè)置了android:focusable="false"而videoview仍然能獲取焦點(diǎn)的問題,也解釋了為什么button會獲得焦點(diǎn)而當(dāng)視頻加載好后被videoview搶占的問題。

解決方法:

明白了問題所在就好解決了,因?yàn)橹皇墙鉀Q焦點(diǎn)問題,所以無需自定義videoview那么麻煩,只需要重寫onResume()方法即可:

@Override
  protected void onResume() {
    super.onResume();
    videoView.setFocusable(false);
  } 

總結(jié):

一定要多看源碼!

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

惠州市| 福清市| 延津县| 河津市| 赫章县| 德安县| 綦江县| 普定县| 科技| 孟津县| 沿河| SHOW| 鲁山县| 湖北省| 铁岭县| 凤庆县| 万宁市| 沐川县| 钦州市| 金秀| 保康县| 临颍县| 永嘉县| 黔西县| 晋城| 曲周县| 阳谷县| 大城县| 儋州市| 安庆市| 铜鼓县| 南昌县| 府谷县| 澄城县| 名山县| 乐业县| 邵阳市| 诏安县| 巴彦县| 中西区| 浏阳市|