Android让VideoView填充满屏幕/父布局并保证不变形
16lz
2021-01-26
在Android中简单的播放一下视频选用VideoView是一个不错的选择,各个厂商在出厂的时候一般都会测试视频播放,这个兼容性一般都能得到保证,而且使用VideoView播放会自动的纠正视频角度,但是有一个问题VideoView在使用过程中总是有一些空白区域留出来,很多时候我们想让他填充满屏幕,或者说父布局,于是就有了今天的议题(当然也可以通过OpenGL来自己画视频,想显示成什么样子就显示成什么样子,只不过这个相对来说麻烦一点)。
首先VideoView在使用的时候有一个坑,就是在初始化的时候一定要把视频地址给到它,否则视频是变形的,因为在布局的时候没有拿到视频的尺寸信息,所以初始化的时候并不知道要初始化多大的Surface,这就决定了VideoView的两种使用方式:
- 在xml里面放置的时候,那么在Activity onCreate的时候就需要把视频地址传进去。
- 动态的new VideoView()然后添加到指定的父控件里面,同时也需要把视频地址传进去
原理如下:
- 拿到视频地址后取出准确的视频宽高
- 在onSizeChanged的时候根据视频宽高和父布局的宽高来计算出VideoView的布局参数,把视频多出来的区域通过-margin来让它显示到控件外面去,进而达到填充满父控件的目的
- 重写onMeasure方法覆盖掉VideoView的逻辑,然后尽情享受吧
完整代码地址:https://www.bzblog.online/wordpress/index.php/2020/06/05/fillparentvideoview/
更多相关文章
- Android(安卓)(最新)控件透明度,布局透明度,Activity透明度,颜色透
- Android(安卓)开源项目收集(开源之路险且艰,有负出就有收获)
- Android中自定义加载样式图片的具体实现
- 如何将音视频发布到移动设备,android,ios,iphone,ipad等
- Android(安卓)适配语言、图片、横竖屏、不同版本
- Android(安卓)TV开发总结(四)通过RecycleView构建一个TV app列表页
- [Android(安卓)Studio]掌握Android(安卓)Studio的五种常见控件和
- 【Android】抽象布局 — include、merge 、ViewStub
- android 布局适应不同分辨率