在AndroidTV中使用PlayFragment时隐藏PlayerControl

时间:2017-11-10 08:23:48

标签: android-tv leanback

我正在使用PlayFragment在AndroidTV中播放视频。我想隐藏控件,如play / pause / fastforward / progressbar。

我该怎么做?

如果有人知道那么请帮助。我正在使用以下样本:

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

PlayBackFragment中有一些类似

的方法
setControlsOverlayAutoHideEnabled(false)
hideControlsOverlay(true);

但没有效果。 anyonen可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

要在视频首次启动时隐藏控件,您需要告知胶水和碎片不要显示它们。

如果查看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);
    ...
}

答案 1 :(得分:1)

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

@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);
}

答案 2 :(得分:0)

您是否尝试过调用fadeOut()中的PlaybackFragment