TV PiP: fix menu buttons orientation

Fixes the PiP menu buttons orientation after double pressing
expand/collapse by only setting the orientation after the transition has
finished.

Bug: 274750024
Test: manual - start expanded PiP with regular PiP orientation being
different from the expanded one. Press collapse once: orientation
should change with the PiP, double click: orientation should still match
the PiP.

Change-Id: I3bfbe7d68f73b31a5ccb199c1e6c6c6a4d8dd3e2
This commit is contained in:
Jacqueline Bronger
2023-03-30 16:36:57 +02:00
parent d00b03a853
commit 54561fe6a1

View File

@@ -92,7 +92,6 @@ public class TvPipMenuView extends FrameLayout implements TvPipActionsProvider.L
private @TvPipMenuController.TvPipMenuMode int mCurrentMenuMode = MODE_NO_MENU;
private final Rect mCurrentPipBounds = new Rect();
private int mCurrentPipGravity;
private boolean mSwitchingOrientation;
private final AccessibilityManager mA11yManager;
private final Handler mMainHandler;
@@ -176,17 +175,12 @@ public class TvPipMenuView extends FrameLayout implements TvPipActionsProvider.L
}
if (mCurrentMenuMode == MODE_ALL_ACTIONS_MENU) {
mSwitchingOrientation = true;
// Fade out while orientation change is ongoing and fade back in once transition is
// finished.
mActionButtonsRecyclerView.animate()
.alpha(0)
.setInterpolator(TvPipInterpolators.EXIT)
.setDuration(mResizeAnimationDuration / 2)
.withEndAction(() -> {
mButtonLayoutManager.setOrientation(vertical
? LinearLayoutManager.VERTICAL : LinearLayoutManager.HORIZONTAL);
// Only make buttons visible again in onPipTransitionFinished to keep in
// sync with PiP content alpha animation.
});
.setDuration(mResizeAnimationDuration / 2);
} else {
mButtonLayoutManager.setOrientation(vertical
? LinearLayoutManager.VERTICAL : LinearLayoutManager.HORIZONTAL);
@@ -208,13 +202,16 @@ public class TvPipMenuView extends FrameLayout implements TvPipActionsProvider.L
mEduTextDrawer.init();
}
if (mSwitchingOrientation) {
mButtonLayoutManager.setOrientation(
mCurrentPipBounds.height() > mCurrentPipBounds.width()
? LinearLayoutManager.VERTICAL : LinearLayoutManager.HORIZONTAL);
if (mCurrentMenuMode == MODE_ALL_ACTIONS_MENU
&& mActionButtonsRecyclerView.getAlpha() != 1f) {
mActionButtonsRecyclerView.animate()
.alpha(1)
.setInterpolator(TvPipInterpolators.ENTER)
.setDuration(mResizeAnimationDuration / 2);
}
mSwitchingOrientation = false;
}
/**