为了获得这种功能,您必须解决一些问题:
>您无法在列表中使用VideoView,因为它正在扩展SurfaceView,并且如果回放已打开并且用户开始滚动,则视觉效果将看起来像视频正在尝试捕捉滚动.因此,您需要一个基于其他对象的特殊VideoView,例如TextureView.
>管理视频播放器状态:
为了开始/停止播放,我们需要调用MediaPlayer.class的一些方法:
setDataSource()
prepare()
start()
stop()
reset()
release()
这些方法是对硬件的直接调用,可能需要一段时间才能使硬件响应.所以我们不能在UI线程中调用它.它将阻止它超过16毫秒,因此用户将看到滞后的滚动列表.我们必须从后台线程调用它.
>您需要在运行时跟踪屏幕上哪个视图处于活动状态,并且该视图应该正在播放.
它已被详细记录并在演示应用程序中处理了一些基本流程.它尚未准备好投入生产,但是如果您需要一些有关如何获得这种功能的参考,可以在此处找到.
附:关于CardView:这是常规视图.您可以将视频播放器放入其中,并在CardView中播放视频.