【问题标题】:Hide PlayerControls when using PlayFragment in AndroidTV在 AndroidTV 中使用 PlayFragment 时隐藏 PlayerControls
【发布时间】:2018-04-23 10:12:55
【问题描述】:

我正在使用 PlayFragment 在 AndroidTV 中播放视频。我想隐藏播放/暂停/快进/进度条等控件。

我该怎么做?

如果有人知道,请帮忙。我正在使用以下示例:

[https://github.com/googlesamples/androidtv-Leanback.git][1]

PlayBackFragment 中有一些类似的方法

setControlsOverlayAutoHideEnabled(false)
hideControlsOverlay(true);

但没有工作。谁能帮帮我?

【问题讨论】:

  • 您希望在片段第一次开始播放时隐藏控件吗?默认情况下,控件会在一小段延迟后消失。

标签: android-tv leanback


【解决方案1】:

视频片段本身负责显示和隐藏控件,并且由于您的片段继承自VideoSupportFragment/VideoFragment,您可以简单地覆盖方法showControlsOverlay(..)并将其保留为空(不要 调用超级方法)

@Override
public void showControlsOverlay(boolean runAnimation) {
    // We will do nothing here, and thus controls will never be shown
}

在设置播放器时,您还必须调用一次hideControlsOverlay(false)

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ...

    hideControlsOverlay(false);
}

【讨论】:

  • 这行得通。但它也会删除从 dpad 完成的所有播放控件。有什么办法可以让我从 ui 中隐藏它,但从 dpad 控制时功能仍然完好无损。
【解决方案2】:

要在视频首次开始时隐藏控件,您需要告诉胶水和片段不要显示它们。

如果您查看 PlaybackTransportControls 的来源,在第 317 行,控件会检查是否启用了淡入淡出以及是否存在主机。如果是这样,那么它会根据玩家是否正在玩来更新控件的可见性。

为了进行测试,在leanback 示例中,在播放片段中查找initializePlayer() 方法。在line 166 上,它启动播放器。当播放发生时,胶水会告诉宿主(与片段对话)并显示控件。为防止显示控件,请将粘合和片段设置为不显示它们:

private void initializePlayer() {
    ...
    // Setup the glue and fragment to not show controls when play starts.
    mPlayerGlue.setControlsOverlayAutoHideEnabled(false);
    hideControlsOverlay(false);

    play(mVideo);
    ...
}

【讨论】:

  • 这在我们第一次输入片段时有效。在播放过程中,如果我们使用方向键,它会出现。
【解决方案3】:

您是否尝试过从PlaybackFragment 拨打fadeOut()

【讨论】:

  • fadeout() 本质上是调用 hideControlsOverlay()。
猜你喜欢
  • 2015-08-30
  • 1970-01-01
  • 1970-01-01
  • 2015-09-05
  • 2023-03-21
  • 1970-01-01
  • 2021-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多