From f99023e887b5ad4873655062ff1a98985675922c Mon Sep 17 00:00:00 2001 From: insun Date: Mon, 27 Jul 2020 06:23:44 +0100 Subject: [PATCH] Makes controls initially hidden Also, there was a bug that controls are always shown at the beginning even when controlview's hide() is called. PiperOrigin-RevId: 323300617 --- .../ui/StyledPlayerControlViewLayoutManager.java | 8 +++++++- .../google/android/exoplayer2/ui/StyledPlayerView.java | 7 +++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerControlViewLayoutManager.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerControlViewLayoutManager.java index d6e3a5b73e..907b055def 100644 --- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerControlViewLayoutManager.java +++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerControlViewLayoutManager.java @@ -54,9 +54,10 @@ import java.util.ArrayList; private final OnLayoutChangeListener onLayoutChangeListener; private int uxState = UX_STATE_ALL_VISIBLE; + private boolean initiallyHidden; private boolean isMinimalMode; private boolean needToShowBars; - private boolean animationEnabled = true; + private boolean animationEnabled; @Nullable private StyledPlayerControlView styledPlayerControlView; @@ -86,9 +87,11 @@ import java.util.ArrayList; hideMainBarsRunnable = this::hideMainBars; hideControllerRunnable = this::hideController; onLayoutChangeListener = this::onLayoutChange; + animationEnabled = true; } public void show() { + initiallyHidden = false; if (this.styledPlayerControlView == null) { return; } @@ -102,6 +105,7 @@ import java.util.ArrayList; } public void hide() { + initiallyHidden = true; if (styledPlayerControlView == null || uxState == UX_STATE_ANIMATING_HIDE || uxState == UX_STATE_NONE_VISIBLE) { @@ -156,6 +160,8 @@ import java.util.ArrayList; public void onViewAttached(StyledPlayerControlView v) { styledPlayerControlView = v; + v.setVisibility(initiallyHidden ? View.GONE : View.VISIBLE); + v.addOnLayoutChangeListener(onLayoutChangeListener); // Relating to Title Bar View diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerView.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerView.java index 3817d15a47..b89cdbf937 100644 --- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerView.java +++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerView.java @@ -15,6 +15,8 @@ */ package com.google.android.exoplayer2.ui; +import static com.google.android.exoplayer2.util.Assertions.checkNotNull; + import android.annotation.SuppressLint; import android.content.Context; import android.content.res.Resources; @@ -1320,9 +1322,10 @@ public class StyledPlayerView extends FrameLayout implements AdsLoader.AdViewPro } int playbackState = player.getPlaybackState(); return controllerAutoShow + && !player.getCurrentTimeline().isEmpty() && (playbackState == Player.STATE_IDLE || playbackState == Player.STATE_ENDED - || !player.getPlayWhenReady()); + || !checkNotNull(player).getPlayWhenReady()); } private void showController(boolean showIndefinitely) { @@ -1613,7 +1616,7 @@ public class StyledPlayerView extends FrameLayout implements AdsLoader.AdViewPro // Suppress the update if transitioning to an unprepared period within the same window. This // is necessary to avoid closing the shutter when such a transition occurs. See: // https://github.com/google/ExoPlayer/issues/5507. - Player player = Assertions.checkNotNull(StyledPlayerView.this.player); + Player player = checkNotNull(StyledPlayerView.this.player); Timeline timeline = player.getCurrentTimeline(); if (timeline.isEmpty()) { lastPeriodUidWithTracks = null;