MainPlayerUi: separate enter/exit fullscreen methods
Most usages of `toggleFullscreen` are clear about whether they want to enter or exit fullscreen, so let’s split the setup into two functions for easier debugging. The two remaining uses of `toggleFullscreen` *should* really toggle, but I’m not 100% sure. Also rename `onScreenRotationButtonClicked` to `onFullscreenToggleButtonClicked`, since we renamed the button id earlier.
This commit is contained in:
parent
753a3e68d5
commit
0382cfd2ae
@ -991,7 +991,7 @@ class VideoDetailFragment :
|
||||
// restored (i.e. bottomSheetState) to STATE_EXPANDED.
|
||||
updateBottomSheetState(BottomSheetBehavior.STATE_EXPANDED)
|
||||
// toggle landscape in order to open directly in fullscreen
|
||||
onScreenRotationButtonClicked()
|
||||
onFullscreenToggleButtonClicked()
|
||||
}
|
||||
|
||||
if (PreferenceManager.getDefaultSharedPreferences(activity)
|
||||
@ -1726,7 +1726,7 @@ class VideoDetailFragment :
|
||||
tryAddVideoPlayerView()
|
||||
}
|
||||
|
||||
override fun onScreenRotationButtonClicked() {
|
||||
override fun onFullscreenToggleButtonClicked() {
|
||||
// In tablet user experience will be better if screen will not be rotated
|
||||
// from landscape to portrait every time.
|
||||
// Just turn on fullscreen mode in landscape orientation
|
||||
|
||||
@ -10,7 +10,7 @@ public interface PlayerServiceEventListener extends PlayerEventListener {
|
||||
|
||||
void onFullscreenStateChanged(boolean fullscreen);
|
||||
|
||||
void onScreenRotationButtonClicked();
|
||||
void onFullscreenToggleButtonClicked();
|
||||
|
||||
void onMoreOptionsLongClicked();
|
||||
|
||||
|
||||
@ -243,8 +243,8 @@ object PlayerHolder {
|
||||
listener?.onFullscreenStateChanged(fullscreen)
|
||||
}
|
||||
|
||||
override fun onScreenRotationButtonClicked() {
|
||||
listener?.onScreenRotationButtonClicked()
|
||||
override fun onFullscreenToggleButtonClicked() {
|
||||
listener?.onFullscreenToggleButtonClicked()
|
||||
}
|
||||
|
||||
override fun onMoreOptionsLongClicked() {
|
||||
|
||||
@ -122,7 +122,7 @@ public final class MainPlayerUi extends VideoPlayerUi implements View.OnLayoutCh
|
||||
&& DeviceUtils.isTablet(player.getService())
|
||||
&& PlayerHelper.globalScreenOrientationLocked(player.getService())) {
|
||||
player.getFragmentListener().ifPresent(
|
||||
PlayerServiceEventListener::onScreenRotationButtonClicked);
|
||||
PlayerServiceEventListener::onFullscreenToggleButtonClicked);
|
||||
}
|
||||
}
|
||||
|
||||
@ -159,7 +159,7 @@ public final class MainPlayerUi extends VideoPlayerUi implements View.OnLayoutCh
|
||||
// orientation a screen orientation can be changed automatically
|
||||
if (!isVerticalVideo || (isLandscape() && globalScreenOrientationLocked(context))) {
|
||||
player.getFragmentListener()
|
||||
.ifPresent(PlayerServiceEventListener::onScreenRotationButtonClicked);
|
||||
.ifPresent(PlayerServiceEventListener::onFullscreenToggleButtonClicked);
|
||||
} else {
|
||||
toggleFullscreen();
|
||||
}
|
||||
@ -233,7 +233,7 @@ public final class MainPlayerUi extends VideoPlayerUi implements View.OnLayoutCh
|
||||
|
||||
// Exit from fullscreen when user closes the player via notification
|
||||
if (isFullscreen) {
|
||||
toggleFullscreen();
|
||||
exitFullscreen();
|
||||
}
|
||||
|
||||
removeViewFromParent();
|
||||
@ -414,7 +414,7 @@ public final class MainPlayerUi extends VideoPlayerUi implements View.OnLayoutCh
|
||||
public void onCompleted() {
|
||||
super.onCompleted();
|
||||
if (isFullscreen) {
|
||||
toggleFullscreen();
|
||||
exitFullscreen();
|
||||
}
|
||||
}
|
||||
//endregion
|
||||
@ -905,7 +905,7 @@ public final class MainPlayerUi extends VideoPlayerUi implements View.OnLayoutCh
|
||||
&& !DeviceUtils.isTablet(context)) {
|
||||
// set correct orientation
|
||||
player.getFragmentListener().ifPresent(
|
||||
PlayerServiceEventListener::onScreenRotationButtonClicked);
|
||||
PlayerServiceEventListener::onFullscreenToggleButtonClicked);
|
||||
}
|
||||
|
||||
setupScreenRotationButton();
|
||||
@ -915,28 +915,54 @@ public final class MainPlayerUi extends VideoPlayerUi implements View.OnLayoutCh
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "toggleFullscreen() called");
|
||||
}
|
||||
|
||||
if (isFullscreen) {
|
||||
exitFullscreen();
|
||||
} else {
|
||||
enterFullscreen();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void enterFullscreen() {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "enterFullscreen() called");
|
||||
}
|
||||
final PlayerServiceEventListener fragmentListener = player.getFragmentListener()
|
||||
.orElse(null);
|
||||
if (fragmentListener == null || player.exoPlayerIsNull()) {
|
||||
return;
|
||||
}
|
||||
isFullscreen = true;
|
||||
// Android needs tens milliseconds to send new insets but a user is able to see
|
||||
// how controls changes it's position from `0` to `nav bar height` padding.
|
||||
// So just hide the controls to hide this visual inconsistency
|
||||
hideControls(0, 0);
|
||||
fragmentListener.onFullscreenStateChanged(true);
|
||||
setupFullscreenButtons(true);
|
||||
}
|
||||
|
||||
isFullscreen = !isFullscreen;
|
||||
if (isFullscreen) {
|
||||
// Android needs tens milliseconds to send new insets but a user is able to see
|
||||
// how controls changes it's position from `0` to `nav bar height` padding.
|
||||
// So just hide the controls to hide this visual inconsistency
|
||||
hideControls(0, 0);
|
||||
} else {
|
||||
// Apply window insets because Android will not do it when orientation changes
|
||||
// from landscape to portrait (open vertical video to reproduce)
|
||||
binding.playbackControlRoot.setPadding(0, 0, 0, 0);
|
||||
public void exitFullscreen() {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "exitFullscreen() called");
|
||||
}
|
||||
fragmentListener.onFullscreenStateChanged(isFullscreen);
|
||||
final PlayerServiceEventListener fragmentListener = player.getFragmentListener()
|
||||
.orElse(null);
|
||||
if (fragmentListener == null || player.exoPlayerIsNull()) {
|
||||
return;
|
||||
}
|
||||
isFullscreen = false;
|
||||
// Apply window insets because Android will not do it when orientation changes
|
||||
// from landscape to portrait (open vertical video to reproduce)
|
||||
binding.playbackControlRoot.setPadding(0, 0, 0, 0);
|
||||
fragmentListener.onFullscreenStateChanged(false);
|
||||
setupFullscreenButtons(false);
|
||||
}
|
||||
|
||||
binding.titleTextView.setVisibility(isFullscreen ? View.VISIBLE : View.GONE);
|
||||
binding.channelTextView.setVisibility(isFullscreen ? View.VISIBLE : View.GONE);
|
||||
binding.playerCloseButton.setVisibility(isFullscreen ? View.GONE : View.VISIBLE);
|
||||
private void setupFullscreenButtons(final boolean fullscreen) {
|
||||
binding.titleTextView.setVisibility(fullscreen ? View.VISIBLE : View.GONE);
|
||||
binding.channelTextView.setVisibility(fullscreen ? View.VISIBLE : View.GONE);
|
||||
binding.playerCloseButton.setVisibility(fullscreen ? View.GONE : View.VISIBLE);
|
||||
setupScreenRotationButton();
|
||||
}
|
||||
|
||||
@ -951,7 +977,7 @@ public final class MainPlayerUi extends VideoPlayerUi implements View.OnLayoutCh
|
||||
if (videoInLandscapeButNotInFullscreen
|
||||
&& notPaused
|
||||
&& !DeviceUtils.isTablet(context)) {
|
||||
toggleFullscreen();
|
||||
enterFullscreen();
|
||||
}
|
||||
}
|
||||
//endregion
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user