1、播放视频其核心无非就是SurfaceView or TextrueView、当我们的播放器是SurfaceView时就会出现诡异的问题、如果您用的是SurfaceView为核心的播放器、请继续往下看;
问题:上下滑动ViewPager/ViewPager2 当前视频底部或顶部有上条视频的画面;
原因:播放器(SurfaceView)的宽高超出了Fragment根布局的大小、 当进行上下滑动时、就会出现遮挡其他界面的问题、SurfaceView 是个特殊的View 其大小不受外界布局控制、这就时问题原因;
解决方案:
A、在Fragment onPause、onResume中对视频进行隐藏、显示、如在onPause中隐藏视频、在onResume 中显示视频、 会有黑屏/白屏(取决于视频背景设置)闪屏问题、解决办法只能用视频截图、或者视频缩略图、视频隐藏时展示、视频展示时隐藏
B、在Fragment onPause、onResume中对视频大小做出调整、如在onPause中设置视频大小、小于 Fragment根布局大小、 onResume时还原视频大小、不会出现黑屏、白屏问题、 但是如果视频原尺寸很大、会明显感觉视频缩放明显、体验很差;
C、关闭ViewPager2预加载、viewPager2.offscreenPageLimit=0、Viewpager 貌似无法关闭、默认缓存大小1、
总结:最靠谱的还是A、设置缩略图
博客围绕以SurfaceView为核心的播放器展开,指出上下滑动ViewPager/ViewPager2时,视频底部或顶部会出现上条视频画面的问题,原因是播放器宽高超出Fragment根布局。同时给出三种解决方案,包括在特定生命周期隐藏显示视频、调整视频大小、关闭ViewPager2预加载,总结认为设置缩略图最靠谱。

1504





