diff --git a/libraries/ui/src/main/java/androidx/media3/ui/PlayerControlView.java b/libraries/ui/src/main/java/androidx/media3/ui/PlayerControlView.java index a8e4c831b6..9b239fe8ca 100644 --- a/libraries/ui/src/main/java/androidx/media3/ui/PlayerControlView.java +++ b/libraries/ui/src/main/java/androidx/media3/ui/PlayerControlView.java @@ -1575,14 +1575,25 @@ public class PlayerControlView extends FrameLayout { } private void onFullScreenButtonClicked(View v) { - if (onFullScreenModeChangedListener == null) { + updateIsFullScreen(!isFullScreen); + } + + /** + * Updates whether the controller is in full screen to its icon + * and reports it to to the listener. + * @param isFullScreen If the view is in full screen. + */ + public void updateIsFullScreen(boolean isFullScreen) { + boolean fullScreenModeChanged = this.isFullScreen != isFullScreen; + + if(fullScreenModeChanged && onFullScreenModeChangedListener == null) { return; } - isFullScreen = !isFullScreen; + this.isFullScreen = isFullScreen; updateFullScreenButtonForState(fullScreenButton, isFullScreen); updateFullScreenButtonForState(minimalFullScreenButton, isFullScreen); - if (onFullScreenModeChangedListener != null) { + if(fullScreenModeChanged && onFullScreenModeChangedListener != null) { onFullScreenModeChangedListener.onFullScreenModeChanged(isFullScreen); } } diff --git a/libraries/ui/src/main/java/androidx/media3/ui/PlayerView.java b/libraries/ui/src/main/java/androidx/media3/ui/PlayerView.java index e4c4d0b013..05a52a65d8 100644 --- a/libraries/ui/src/main/java/androidx/media3/ui/PlayerView.java +++ b/libraries/ui/src/main/java/androidx/media3/ui/PlayerView.java @@ -1139,6 +1139,16 @@ public class PlayerView extends FrameLayout implements AdViewProvider { controller.setOnFullScreenModeChangedListener(componentListener); } + /** + * Sets whether the fullscreen button is fullScreenButton or minimalFullScreenButton. + * + * @param isFullscreen Whether the player is currently in fullscreen. + */ + public void setFullscreenButtonState(boolean isFullscreen) { + Assertions.checkStateNotNull(controller); + controller.updateIsFullScreen(isFullscreen); + } + /** * Sets the {@link PlayerControlView.OnFullScreenModeChangedListener}. *