@@ -122,7 +122,7 @@ private void directlyOpenFullscreenIfNeeded() {
122122 && DeviceUtils .isTablet (player .getService ())
123123 && PlayerHelper .globalScreenOrientationLocked (player .getService ())) {
124124 player .getFragmentListener ().ifPresent (
125- PlayerServiceEventListener ::onScreenRotationButtonClicked );
125+ PlayerServiceEventListener ::onFullscreenToggleButtonClicked );
126126 }
127127 }
128128
@@ -154,12 +154,12 @@ BasePlayerGestureListener buildGestureListener() {
154154 protected void initListeners () {
155155 super .initListeners ();
156156
157- binding .screenRotationButton .setOnClickListener (makeOnClickListener (() -> {
157+ binding .fullscreenToggleButton .setOnClickListener (makeOnClickListener (() -> {
158158 // Only if it's not a vertical video or vertical video but in landscape with locked
159159 // orientation a screen orientation can be changed automatically
160160 if (!isVerticalVideo || (isLandscape () && globalScreenOrientationLocked (context ))) {
161161 player .getFragmentListener ()
162- .ifPresent (PlayerServiceEventListener ::onScreenRotationButtonClicked );
162+ .ifPresent (PlayerServiceEventListener ::onFullscreenToggleButtonClicked );
163163 } else {
164164 toggleFullscreen ();
165165 }
@@ -233,7 +233,7 @@ public void destroy() {
233233
234234 // Exit from fullscreen when user closes the player via notification
235235 if (isFullscreen ) {
236- toggleFullscreen ();
236+ exitFullscreen ();
237237 }
238238
239239 removeViewFromParent ();
@@ -270,7 +270,7 @@ protected void setupElementsVisibility() {
270270
271271 closeItemsList ();
272272 showHideKodiButton ();
273- binding .fullScreenButton .setVisibility (View .GONE );
273+ binding .fullscreenToggleButtonSecondaryMenu .setVisibility (View .GONE );
274274 setupScreenRotationButton ();
275275 binding .resizeTextView .setVisibility (View .VISIBLE );
276276 binding .getRoot ().findViewById (R .id .metadataView ).setVisibility (View .VISIBLE );
@@ -414,7 +414,7 @@ public void onPlaying() {
414414 public void onCompleted () {
415415 super .onCompleted ();
416416 if (isFullscreen ) {
417- toggleFullscreen ();
417+ exitFullscreen ();
418418 }
419419 }
420420 //endregion
@@ -885,10 +885,10 @@ public boolean onKeyDown(final int keyCode) {
885885 //region Video size, orientation, fullscreen
886886
887887 private void setupScreenRotationButton () {
888- binding .screenRotationButton .setVisibility (globalScreenOrientationLocked (context )
888+ binding .fullscreenToggleButton .setVisibility (globalScreenOrientationLocked (context )
889889 || isVerticalVideo || DeviceUtils .isTablet (context )
890890 ? View .VISIBLE : View .GONE );
891- binding .screenRotationButton .setImageDrawable (AppCompatResources .getDrawable (context ,
891+ binding .fullscreenToggleButton .setImageDrawable (AppCompatResources .getDrawable (context ,
892892 isFullscreen ? R .drawable .ic_fullscreen_exit
893893 : R .drawable .ic_fullscreen ));
894894 }
@@ -905,7 +905,7 @@ && isLandscape() == isVerticalVideo
905905 && !DeviceUtils .isTablet (context )) {
906906 // set correct orientation
907907 player .getFragmentListener ().ifPresent (
908- PlayerServiceEventListener ::onScreenRotationButtonClicked );
908+ PlayerServiceEventListener ::onFullscreenToggleButtonClicked );
909909 }
910910
911911 setupScreenRotationButton ();
@@ -915,28 +915,54 @@ public void toggleFullscreen() {
915915 if (DEBUG ) {
916916 Log .d (TAG , "toggleFullscreen() called" );
917917 }
918+
919+ if (isFullscreen ) {
920+ exitFullscreen ();
921+ } else {
922+ enterFullscreen ();
923+ }
924+
925+ }
926+
927+ public void enterFullscreen () {
928+ if (DEBUG ) {
929+ Log .d (TAG , "enterFullscreen() called" );
930+ }
918931 final PlayerServiceEventListener fragmentListener = player .getFragmentListener ()
919932 .orElse (null );
920933 if (fragmentListener == null || player .exoPlayerIsNull ()) {
921934 return ;
922935 }
936+ isFullscreen = true ;
937+ // Android needs tens milliseconds to send new insets but a user is able to see
938+ // how controls changes it's position from `0` to `nav bar height` padding.
939+ // So just hide the controls to hide this visual inconsistency
940+ hideControls (0 , 0 );
941+ fragmentListener .onFullscreenStateChanged (true );
942+ setupFullscreenButtons (true );
943+ }
923944
924- isFullscreen = !isFullscreen ;
925- if (isFullscreen ) {
926- // Android needs tens milliseconds to send new insets but a user is able to see
927- // how controls changes it's position from `0` to `nav bar height` padding.
928- // So just hide the controls to hide this visual inconsistency
929- hideControls (0 , 0 );
930- } else {
931- // Apply window insets because Android will not do it when orientation changes
932- // from landscape to portrait (open vertical video to reproduce)
933- binding .playbackControlRoot .setPadding (0 , 0 , 0 , 0 );
945+ public void exitFullscreen () {
946+ if (DEBUG ) {
947+ Log .d (TAG , "exitFullscreen() called" );
934948 }
935- fragmentListener .onFullscreenStateChanged (isFullscreen );
949+ final PlayerServiceEventListener fragmentListener = player .getFragmentListener ()
950+ .orElse (null );
951+ if (fragmentListener == null || player .exoPlayerIsNull ()) {
952+ return ;
953+ }
954+ isFullscreen = false ;
955+ // Apply window insets because Android will not do it when orientation changes
956+ // from landscape to portrait (open vertical video to reproduce)
957+ binding .playbackControlRoot .setPadding (0 , 0 , 0 , 0 );
958+ fragmentListener .onFullscreenStateChanged (false );
959+ setupFullscreenButtons (false );
960+ }
936961
937- binding .titleTextView .setVisibility (isFullscreen ? View .VISIBLE : View .GONE );
938- binding .channelTextView .setVisibility (isFullscreen ? View .VISIBLE : View .GONE );
939- binding .playerCloseButton .setVisibility (isFullscreen ? View .GONE : View .VISIBLE );
962+ private void setupFullscreenButtons (final boolean fullscreen ) {
963+ binding .titleTextView .setVisibility (fullscreen ? View .VISIBLE : View .GONE );
964+ binding .channelTextView .setVisibility (fullscreen ? View .VISIBLE : View .GONE );
965+ binding .playerCloseButton .setVisibility (fullscreen ? View .GONE : View .VISIBLE );
940966 setupScreenRotationButton ();
941967 }
942968
@@ -951,7 +977,7 @@ public void checkLandscape() {
951977 if (videoInLandscapeButNotInFullscreen
952978 && notPaused
953979 && !DeviceUtils .isTablet (context )) {
954- toggleFullscreen ();
980+ enterFullscreen ();
955981 }
956982 }
957983 //endregion
0 commit comments