在CardView布局中运行媒体文件

Im *_*mes 1 media android android-recyclerview

有没有办法audio/videocardview布局中运行媒体文件()?我希望在a中video预览文件card layout,当用户点击卡片时,video/audio全屏播放并播放,就像Facebook的Feed一样.

Dan*_*okh 12

为了获得这种功能,您必须解决一些问题:

  1. 您不能VideoView在列表中使用,因为它正在扩展SurfaceView,如果播放打开并且用户开始滚动,则视觉效果看起来像是视频正在尝试捕捉滚动.因此,您需要一种VideoView基于其他东西的特殊功能,例如TextureView.

  2. 管理视频播放器状态:为了开始/停止播放,我们需要调用以下几种方法MediaPlayer.class:

    setDataSource()
    prepare()
    start()
    stop()
    reset()
    release()
    
    Run Code Online (Sandbox Code Playgroud)

    这些方法是对硬件的直接调用,硬件响应可能需要一些时间.所以我们不能在UI线程中调用它.它会阻止它超过16毫秒,因此用户将看到一个滞后的滚动列表.我们必须从后台线程调用它.

  3. 您需要在运行时跟踪屏幕上的哪个视图处于活动状态,并且应该播放此视图.


我创建了一个名为VideoPlayerManager的开源项目.

它已完整记录,并在演示应用程序中处理了一些基本流程.它还没有为生产做好准备,但是如果你需要一些如何获得这种功能的参考,你可以在那里找到它.

PS关于CardView:这是一个常规视图.您可以将视频播放器放入其中并在CardView中播放视频.