【问题标题】:how to create custom UI for android MediaController如何为 android MediaController 创建自定义 UI
【发布时间】:2021-04-15 16:11:12
【问题描述】:

我想为我的视频播放器自定义 MediaController 中的控件。 我想把图片换成播放按钮,换皮肤,换颜色等等。

有已知的方法吗?

谢谢

【问题讨论】:

标签: android android-video-player mediacontroller


【解决方案1】:

我在最近的一个项目中遇到了同样的问题,最终创建了一个基于股票 MediaController 的自定义实现。它在最右边添加了一个全屏按钮,但即使这不是你想要的,这个类也应该是一个很好的起点。

代码:

图片资源:

陷阱:

  • 该类假定锚点视图是 FrameLayout 以将其自身定位在底部。
  • 该类不使用 Window 来确保控件浮动在锚点之上。但是,这对我来说不是问题,因为 show() 方法每次都会执行 mAnchor.addView()。
  • 该类使用自己的 MediaPlayerControl 协议。这允许自定义,例如 toggleFullScreen()

更新(2013 年):有关详细信息,请参阅本教程:http://www.brightec.co.uk/blog/custom-android-media-controller

更新(2018 年):您现在可以使用出色的 ExoPlayer 并通过覆盖布局文件来完全自定义您的播放器 UI。

【讨论】:

  • @Blago 您有一个内部类,其中包含对外部类的 WeakReference。这是无用的,并且不会像您想的那样做,因为内部类只是顶级类的语法糖,您可以在构造函数中向其传递对外部类的引用。
  • Seekbar 在用户手动搜索/移动时无法正常工作。在这种情况下,seekbar 会停止自我更新。
  • 是的,但是你知道这个项目不是完整的,因为不能正常工作(坏的 assynk + 坏的实例生成)但是是一个很好的例子,谢谢。
  • 全屏按钮无效
【解决方案2】:

我对其进行了测试,它在 4.4 kitkat 上运行良好,但就像 KAPLANDROID 所说的黑屏出现在 android 2.3.6 上但音乐和视频控制器工作正常,

找到了解决办法,就放这段代码

videoHolder.setType( SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS );

之后

videoHolder.addCallback( this );

你准备好了

【讨论】:

    猜你喜欢
    • 2020-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    相关资源
    最近更新 更多