项目需要做一个简单的播放视频功能demo,考虑到需求较简单(实现不超过2min的MP4格式短视频播放),所以就没考虑使用复杂的第三方视频库了。最初敲定使用系统原生的VideoView实现,后来发现不能在列表中使用普通的VideoView 。VideoView 继承自SurfaceView,而SurfaceView并没有UI同步缓冲区。这就导致了在列表滚动的时候,正在播放的视频可能无法跟上滚动的步伐。针对这个问题继续查资料,最终选择使用MediaPlayer+TextureView实现视频播放。相关的资料很多,这里就不细说了。我主要说一下实现全屏播放的实现思路及遇到的问题。
一、在activity中留一个全屏的ViewGroup放置播放器实现全屏
在相应Activity中预留一个放置播放器的宽高都是match_parent的ViewGroup,大小切换就是把播放器添加到本来的小容器和添加
到全屏

本文介绍了如何在Android项目中使用MediaPlayer结合TextureView实现全屏视频播放,解决VideoView在列表中无法流畅滚动的问题。通过在Activity中预留全屏ViewGroup,监听屏幕状态变化,实现点击全屏按钮的切换逻辑。在切换过程中,由于SurfaceTexture的变化,需要保存并重新设置SurfaceTexture以避免MediaPlayer和TextureView数据通道不一致的问题。
最低0.47元/天 解锁文章
1311

被折叠的 条评论
为什么被折叠?



