国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android videoview搶占焦點的處理方法

2019-12-12 02:39:51
字體:
來源:轉載
供稿:網友

問題描述:

android 機頂盒應用:
應用程序主界面(MainActivity)只有兩個控件,一個videoview和一個button。
視頻框設置無焦點,按鍵有焦點。

首次進入應用時焦點正常,聚焦在button上;但是當點擊button跳轉到下一個activity并返回時,焦點卻聚焦到了videoview上,并且代碼里強制設置焦點:

Button.requestFocus();

無效,現象是視頻加載時,焦點是在button處,但是當視頻加載完成開始播放時,整個activity失去焦點,幾秒后,焦點跑到videoview上面。 

原因分析:

查看了一下VideoView的源碼,發現原因出在初始化上面上:

 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中設置了android:focusable="false"而videoview仍然能獲取焦點的問題,也解釋了為什么button會獲得焦點而當視頻加載好后被videoview搶占的問題。

解決方法:

明白了問題所在就好解決了,因為只是解決焦點問題,所以無需自定義videoview那么麻煩,只需要重寫onResume()方法即可:

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

總結:

一定要多看源碼!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汉沽区| 白城市| 安塞县| 穆棱市| 甘孜县| 渑池县| 高台县| 新疆| 宝坻区| 辽源市| 绥化市| 忻城县| 肃宁县| 商都县| 罗定市| 名山县| 麟游县| 和平县| 胶州市| 铜梁县| 新建县| 达尔| 资阳市| 庄浪县| 香港 | 扶绥县| 太白县| 莲花县| 理塘县| 元阳县| 尉氏县| 重庆市| 新蔡县| 永清县| 原平市| 山阴县| 贞丰县| 开封市| 剑阁县| 元氏县| 九江县|