【问题标题】:Views overlayed above YouTubePlayerFragment or YouTubePlayerView in the layout hierarchy cause playback to pause immediately在布局层次结构中覆盖在 YouTubePlayerFragment 或 YouTubePlayerView 上方的视图会导致播放立即暂停
【发布时间】:2012-12-10 10:44:12
【问题描述】:

我正在使用 YouTube Android Player API,并希望在 YouTubePlayerFragment 顶部覆盖一个视图,以便在正在播放的视频上方显示上下文信息和控件。

不幸的是,每当在布局层次结构中播放器上方堆叠一个或多个视图时,似乎在YouTubePlayerFragmentYouTubePlayerView 中播放都无法正常工作。播放时间不到半秒,然后立即暂停。

可以通过使用 SDK 附带的 Simple PlayerFragment 演示的以下布局来重现该问题:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

  <fragment
      android:name="com.google.android.youtube.player.YouTubePlayerFragment"
      android:id="@+id/youtube_fragment"
      android:layout_width="match_parent"
      android:layout_height="match_parent"/>

  <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:textAppearance="@android:style/TextAppearance.Small"
      android:layout_alignParentTop="true"
      android:text="@string/playerfragment_text"/>

</RelativeLayout>

我尝试了使用FrameLayoutRelativeLayout 的各种布局配置,但问题始终相同。我意识到这个 API 已作为“实验性”发布,但如果这是一个已知问题,它对于许多实现来说是一个相当大的障碍。有没有人有好的解决方案或解决方法?

【问题讨论】:

    标签: android youtubeplayer


    【解决方案1】:

    Jeff - 这按设计工作。不支持在我们的任何 YouTube 播放器(包括 YouTube Android 播放器)上叠加。当检测到覆盖时,播放停止并且日志包含有助于调试问题的信息。 我们确实支持操作栏覆盖,请查看此演示以了解更多信息:https://developers.google.com/youtube/android/player/sample-applications#Overlay_ActionBar_Demo

    【讨论】:

    • 谢谢贾雷克。这似乎应该在文档中更突出地提及,并且可能在运行时更明确地处理。我可以成功地在播放器上显示一个对话框片段,并将其背景可绘制对象设置为透明以达到所需的效果(需要更多的努力),所以我不确定这个设计限制试图实现什么。
    • Jeff - 覆盖目前违反我们的服务条款,因此受到限制。我同意我们应该让它更加突出,并且我们正在努力进行更新以更好地覆盖它。
    • @wjarek ToS 说,YouTube 播放器暂停后可以叠加视图吗?
    • 我认为如果您尝试这样做,它会重置播放器的位置。代码甚至不允许你这样做。
    • 在开发人员文档中提前说明这一点是个好主意;在发现论坛中提到的限制之前,我花了很多时间调试我的叠加尝试。
    【解决方案2】:

    Youtube 播放器不允许任何视图覆盖它。只需使用 setVisibility(View.GONE) 为所有视图覆盖它。

    【讨论】:

    • 是的,效果很好。但这不是让 YouTubePlayer 正常工作的好方法。
    【解决方案3】:

    不能按照 Google 的规定在播放器上方添加按钮作为叠加层,否则播放器将停止:

    https://developers.google.com/youtube/android/player/reference/com/google/android/youtube/player/YouTubePlayerView

    请注意,在播放视频时,此视图的最小尺寸为 200x110 dp。如果您将视图缩小,视频将 自动停止播放。此外,不允许覆盖 在播放视频时与其他视图一起观看。

    此视图不支持填充。为了达到同样的效果,换行 另一个 ViewGroup 中的视图或为其设置边距。

    YouTubePlayer 也不支持填充。

    要在视频上叠加您的视图,我建议您使用 ExoPlayer, 它不是 android sdk 的一部分,但被 google 推荐并包含在 android 开发者文档中:

    http://google.github.io/ExoPlayer/

    值得一提的是,在 youtube 应用程序中使用了 Exoplayer。

    【讨论】:

    • 嗨,是否可以使用 ExoPlayer 在播放器视图中放置文本?
    【解决方案4】:

    您可以将播放器主题设置为 YouTubePlayer.PlayerStyle.CHROMELESS,然后在下面实现您自己的控件。

    我遇到了一个问题,我找不到关于如何使用自定义布局重新实现搜索栏的好资源。

    【讨论】:

      【解决方案5】:

      沃拉!!我有一个场景,这个问题出现在设备棒棒糖及更高版本中,这是因为状态栏。我隐藏状态栏问题解决了。只是把它写成一个答案,以防它帮助别人:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-21
        • 1970-01-01
        相关资源
        最近更新 更多