android videoview按钮,Android videoview抢占焦点的处理方法
[导读]这篇文章主要为大家详细介绍了Android videoview抢占焦点的处理方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
问题描述:
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>();
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 videoview按钮,Android videoview抢占焦点的处理方法相关推荐
- android释放焦点_Android videoview抢占焦点的处理方法
问题描述: android 机顶盒应用: 应用程序主界面(MainActivity)只有两个控件,一个videoview和一个button. 视频框设置无焦点,按键有焦点. 首次进入应用时焦点正常,聚 ...
- android 悬停按钮,Android悬浮按钮的使用方法
悬浮按钮效果如下图所示: 步骤1:引用 compile 'com.laocaixw.suspendbuttonlayout:suspendbuttonlayout:1.0.3' 步骤2:xml布局 a ...
- android倒角按钮,Android实现圆角Button按钮
本文实例讲述了Android开发圆角Button按钮实现过程,分享给大家供大家参考,具体内容如下 需求及效果图: 实现思路: 1.shape实现圆角 在drawable新建两个xml 文件, 这两个 ...
- android 正方形按钮,Android《FloatingActionButton》
悬浮按钮 继承:⇐ FloatingActionButton ⇐ VisibilityAwareImageButton ⇐ ImageButton ⇐ ImageView,所以FloatingActi ...
- android 椭圆形按钮,Android中使用drawable实现左右椭圆形的按钮
本文和上一篇文章类似,只是增大了圆角半径的值,所以左右两边看着像椭圆形状,我们先来看看完成后的效果图: 首先,在res/drawable目录下新建一个shape形状,文件名为round_rect_ov ...
- android spinner 按钮,android sqlite和spinner的用法示例
在此示例中,我们在单击按钮时添加了标签,并在微调器上显示了所有添加的标签.如上例所示,需要扩展SQLiteOpenHelper类以在sqlite上执行操作. 我们在DatabaseHandler类中重 ...
- android 绘制按钮,Android:使用xml定义创建一个三角形的按钮(可绘制)
如果有人仍然有这个问题: > xml: android:fromDegrees="45" android:toDegrees="0" android:pi ...
- android 销毁按钮,Android实现所有Activity全部销毁
<一>.在平时开发中打开过三个activity,分别为:A, B, C,用android设备中的"back"按钮,需要点击三下,才能退出到主界面(即需要三次操作才能销毁 ...
- android 并排按钮,Android TextView和Button并排,ellipsize左侧TextView
我有一个左对齐的TextView和一个右对齐的按钮并排. 我希望按钮占用右边所需的空间(取决于其中的文本)和左边的文本以尽可能多地填充,并在任何溢出上进行椭圆化处理. |Long title that ...
最新文章
- raspberry pi 3B 树莓派 安装tensorflow
- python gevent模块 下载_Python协程阻塞IO非阻塞IO同步IO异步IO
- python入门教程共四本书籍-Python入门书籍有哪些?
- Java杂记3—流程控制之条件
- ReactNative手势解锁(react-native-ok-gesture-password)
- CodeForces - 1537E2 Erase and Extend (Hard Version)(扩展KMP-比较两个前缀无限循环后的字典序大小)
- AI:你们是不是在等一顶红帽子?
- gmod的css模块放哪,gmod模式怎么更换?gmod模块安装步骤教程
- Samba整合Openldap认证
- rabbitmq详细入门文档+springboot结合使用
- 用命令实现Win7远程桌面关机和重启
- pytorch torch.transpose
- ASP.NET Session使用详解
- 计算机学院李成伟,【迎新专题二】校长李成伟带队视察迎新工作
- c语言大作业背单词,c语言必背代码 c语言入门必背单词 c语言必背100代码
- 如何看Linux哪些进程占内存,linux 查看进程占用内存
- ThinkPad Tablet2升级Windows10(各种故障及解决方案)
- HTML5 页面布局【结合案例】
- adb push php,ADB指令合集-ADB指令如何执行刷Recovery,重启进Recovery,双Wipe和刷ROM手机刷机...
- mysql——时间显示格式 dateformat函数
热门文章
- python2和python3 的区别
- 封装API的一种方式,和解决跨越问题
- android控件向内弧度_描边/内间距/四个角不同弧度(包括圆角)
- 学习python-day01-01---转自Python分布式爬虫打造搜索引擎Scrapy精讲
- QNX----QNX内核移植到ZYNQ7010 (黑金开发板)
- caffe学习笔记(一): caffe训练流程(超详细)
- 快速集成融云SDK– Android Studio
- PostgreSQL pgmetrics - 多版本、健康监控指标采集、报告
- 可编程控制器的应用分类介绍
- 第三百零八至三百二十天 how can I 坚持