Android videoview抢占焦点的处理方法
2017-06-16 11:27
2141 查看
问题描述:
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); }
总结:
一定要多看源码!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
- Android取消EditText自动获取焦点默认行为
- Android 设置Edittext获取焦点并弹出软键盘
- Android取消EditText自动获取默认焦点
- 360浏览器文本框获得焦点后被android软键盘遮罩该怎么办
- Android开发之滑动图片轮播标题焦点
- Android给自定义按键添加广播和通过广播给当前焦点输入框赋值
- Android GridView中包含EditText的焦点重新获取方法
- Android 实现不依赖焦点和选中的TextView跑马灯
- Android基于TextView不获取焦点实现跑马灯效果
- Android OnFocuChangeListener焦点事件详解
相关文章推荐
- 详细了解android中view的focus焦点处理
- Android 使WebView支持HTML5 Video(全屏)播放的方法
- 在Android系统中使用WebViewClient处理跳转URL的方法
- Android VideoView中getDuration()方法使用问题
- Android 自定义View的post(Runnable)方法非100%执行的原因和处理方法解析
- [转]Android SurfaceView 绘图及帧频处理方法修正
- 处理android手机html5页面中,点击text文本框无法自动获取焦点的处理方法
- Android 使WebView支持HTML5 Video(全屏)播放的方法
- android VideoView截屏黑屏解决方法
- android中View和ViewGroup对touch事件对象的处理方法
- Android Java SurfaceView每帧处理后显示方法
- Android SurfaceView 绘图及帧频处理方法修正
- android中view的focus焦点处理
- android videoview 播放前黑屏的解决方法之一
- android中view的focus焦点处理
- 【Android 界面效果46】自定义view常处理的回调方法
- Android 使WebView支持HTML5 Video(全屏)播放的方法
- Android基础图形的一些表示方法,SoundPool,VideoView,SurfaceView
- Android编程使WebView支持HTML5 Video全屏播放的解决方法