Merge "Fix tv pip menu rounded corner artifacts" into udc-dev

This commit is contained in:
Galia Peycheva
2023-04-18 12:46:56 +00:00
committed by Android (Google) Code Review
3 changed files with 36 additions and 17 deletions

View File

@@ -67,7 +67,7 @@
<!-- Temporarily extending the background to show an edu text hint for opening the menu -->
<FrameLayout
android:id="@+id/tv_pip_menu_edu_text_drawer_placeholder"
android:id="@+id/tv_pip_menu_edu_text_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/tv_pip"

View File

@@ -260,11 +260,12 @@ class TvPipMenuEduTextDrawer extends FrameLayout {
});
heightAnimator.start();
mListener.onCloseEduText();
mListener.onCloseEduTextAnimationStart();
}
public void onCloseEduTextAnimationEnd() {
setVisibility(GONE);
mListener.onCloseEduTextAnimationEnd();
}
/**
@@ -295,11 +296,8 @@ class TvPipMenuEduTextDrawer extends FrameLayout {
* A listener for edu text drawer event states.
*/
interface Listener {
/**
* The edu text closing impacts the size of the Picture-in-Picture window and influences
* how it is positioned on the screen.
*/
void onCloseEduText();
void onCloseEduTextAnimationStart();
void onCloseEduTextAnimationEnd();
}
}

View File

@@ -57,7 +57,8 @@ import java.util.List;
* A View that represents Pip Menu on TV. It's responsible for displaying the Pip menu actions from
* the TvPipActionsProvider as well as the buttons for manually moving the PiP.
*/
public class TvPipMenuView extends FrameLayout implements TvPipActionsProvider.Listener {
public class TvPipMenuView extends FrameLayout implements TvPipActionsProvider.Listener,
TvPipMenuEduTextDrawer.Listener {
private static final String TAG = "TvPipMenuView";
private final TvPipMenuView.Listener mListener;
@@ -76,6 +77,7 @@ public class TvPipMenuView extends FrameLayout implements TvPipActionsProvider.L
private final View mDimLayer;
private final TvPipMenuEduTextDrawer mEduTextDrawer;
private final ViewGroup mEduTextContainer;
private final int mPipMenuOuterSpace;
private final int mPipMenuBorderWidth;
@@ -139,9 +141,9 @@ public class TvPipMenuView extends FrameLayout implements TvPipActionsProvider.L
mPipMenuBorderWidth = context.getResources()
.getDimensionPixelSize(R.dimen.pip_menu_border_width);
mEduTextDrawer = new TvPipMenuEduTextDrawer(mContext, mainHandler, mListener);
((FrameLayout) findViewById(R.id.tv_pip_menu_edu_text_drawer_placeholder))
.addView(mEduTextDrawer);
mEduTextDrawer = new TvPipMenuEduTextDrawer(mContext, mainHandler, this);
mEduTextContainer = (ViewGroup) findViewById(R.id.tv_pip_menu_edu_text_container);
mEduTextContainer.addView(mEduTextDrawer);
}
void onPipTransitionToTargetBoundsStarted(Rect targetBounds) {
@@ -235,11 +237,13 @@ public class TvPipMenuView extends FrameLayout implements TvPipActionsProvider.L
* pip menu when it gains focus.
*/
private void updatePipFrameBounds() {
final ViewGroup.LayoutParams pipFrameParams = mPipFrameView.getLayoutParams();
if (pipFrameParams != null) {
pipFrameParams.width = mCurrentPipBounds.width() + 2 * mPipMenuBorderWidth;
pipFrameParams.height = mCurrentPipBounds.height() + 2 * mPipMenuBorderWidth;
mPipFrameView.setLayoutParams(pipFrameParams);
if (mPipFrameView.getVisibility() == VISIBLE) {
final ViewGroup.LayoutParams pipFrameParams = mPipFrameView.getLayoutParams();
if (pipFrameParams != null) {
pipFrameParams.width = mCurrentPipBounds.width() + 2 * mPipMenuBorderWidth;
pipFrameParams.height = mCurrentPipBounds.height() + 2 * mPipMenuBorderWidth;
mPipFrameView.setLayoutParams(pipFrameParams);
}
}
final ViewGroup.LayoutParams pipViewParams = mPipView.getLayoutParams();
@@ -405,6 +409,17 @@ public class TvPipMenuView extends FrameLayout implements TvPipActionsProvider.L
}
}
@Override
public void onCloseEduTextAnimationStart() {
mListener.onCloseEduText();
}
@Override
public void onCloseEduTextAnimationEnd() {
mPipFrameView.setVisibility(GONE);
mEduTextContainer.setVisibility(GONE);
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getAction() == ACTION_UP) {
@@ -551,7 +566,7 @@ public class TvPipMenuView extends FrameLayout implements TvPipActionsProvider.L
}
}
interface Listener extends TvPipMenuEduTextDrawer.Listener {
interface Listener {
void onBackPress();
@@ -573,5 +588,11 @@ public class TvPipMenuView extends FrameLayout implements TvPipActionsProvider.L
* has lost focus.
*/
void onPipWindowFocusChanged(boolean focused);
/**
* The edu text closing impacts the size of the Picture-in-Picture window and influences
* how it is positioned on the screen.
*/
void onCloseEduText();
}
}