From 38aacc4d86087b62b2e3f1446d97419fed7fc668 Mon Sep 17 00:00:00 2001 From: Ivan Makarov Date: Mon, 8 Aug 2022 07:04:36 +0000 Subject: [PATCH] Add a common TvWindowMenuActionButton Add a TvWindowMenuActionButton in the "common" folder. Replaced the TvPipActionButton. Bug: 242179031 Test: Enter pip and open the tv pip menu to see a set of TvWindowMenuActionButton buttons. Change-Id: I87017e16ab680d2f1ea101376485374c539af166 --- ...tv_window_menu_action_button_animator.xml} | 0 ...icon.xml => tv_window_menu_close_icon.xml} | 2 +- ...g.xml => tv_window_menu_close_icon_bg.xml} | 6 +-- ..._menu_icon.xml => tv_window_menu_icon.xml} | 8 ++-- ...icon_bg.xml => tv_window_menu_icon_bg.xml} | 4 +- .../Shell/res/drawable/tv_pip_button_bg.xml | 21 ---------- .../Shell/res/drawable/tv_pip_menu_border.xml | 2 +- .../res/drawable/tv_window_button_bg.xml | 21 ++++++++++ .../Shell/res/layout/tv_pip_menu.xml | 10 ++--- .../res/layout/tv_pip_menu_action_button.xml | 40 ------------------- .../layout/tv_window_menu_action_button.xml | 40 +++++++++++++++++++ .../Shell/res/values-tvdpi/dimen.xml | 16 ++++---- .../Shell/res/values/colors_tv.xml | 16 ++++---- .../TvWindowMenuActionButton.java} | 38 ++++++++++-------- .../wm/shell/pip/tv/TvPipMenuView.java | 17 ++++---- 15 files changed, 125 insertions(+), 116 deletions(-) rename libs/WindowManager/Shell/res/animator/{tv_pip_menu_action_button_animator.xml => tv_window_menu_action_button_animator.xml} (100%) rename libs/WindowManager/Shell/res/color/{tv_pip_menu_close_icon.xml => tv_window_menu_close_icon.xml} (90%) rename libs/WindowManager/Shell/res/color/{tv_pip_menu_icon_bg.xml => tv_window_menu_close_icon_bg.xml} (77%) rename libs/WindowManager/Shell/res/color/{tv_pip_menu_icon.xml => tv_window_menu_icon.xml} (74%) rename libs/WindowManager/Shell/res/color/{tv_pip_menu_close_icon_bg.xml => tv_window_menu_icon_bg.xml} (83%) delete mode 100644 libs/WindowManager/Shell/res/drawable/tv_pip_button_bg.xml create mode 100644 libs/WindowManager/Shell/res/drawable/tv_window_button_bg.xml delete mode 100644 libs/WindowManager/Shell/res/layout/tv_pip_menu_action_button.xml create mode 100644 libs/WindowManager/Shell/res/layout/tv_window_menu_action_button.xml rename libs/WindowManager/Shell/src/com/android/wm/shell/{pip/tv/TvPipMenuActionButton.java => common/TvWindowMenuActionButton.java} (76%) diff --git a/libs/WindowManager/Shell/res/animator/tv_pip_menu_action_button_animator.xml b/libs/WindowManager/Shell/res/animator/tv_window_menu_action_button_animator.xml similarity index 100% rename from libs/WindowManager/Shell/res/animator/tv_pip_menu_action_button_animator.xml rename to libs/WindowManager/Shell/res/animator/tv_window_menu_action_button_animator.xml diff --git a/libs/WindowManager/Shell/res/color/tv_pip_menu_close_icon.xml b/libs/WindowManager/Shell/res/color/tv_window_menu_close_icon.xml similarity index 90% rename from libs/WindowManager/Shell/res/color/tv_pip_menu_close_icon.xml rename to libs/WindowManager/Shell/res/color/tv_window_menu_close_icon.xml index ce8640df00936..67467bbc72ae6 100644 --- a/libs/WindowManager/Shell/res/color/tv_pip_menu_close_icon.xml +++ b/libs/WindowManager/Shell/res/color/tv_window_menu_close_icon.xml @@ -15,5 +15,5 @@ ~ limitations under the License. --> - + \ No newline at end of file diff --git a/libs/WindowManager/Shell/res/color/tv_pip_menu_icon_bg.xml b/libs/WindowManager/Shell/res/color/tv_window_menu_close_icon_bg.xml similarity index 77% rename from libs/WindowManager/Shell/res/color/tv_pip_menu_icon_bg.xml rename to libs/WindowManager/Shell/res/color/tv_window_menu_close_icon_bg.xml index 4f5e63dac5c08..4182bfeefa1bc 100644 --- a/libs/WindowManager/Shell/res/color/tv_pip_menu_icon_bg.xml +++ b/libs/WindowManager/Shell/res/color/tv_window_menu_close_icon_bg.xml @@ -1,6 +1,6 @@ - + android:color="@color/tv_window_menu_close_icon_bg_focused" /> + \ No newline at end of file diff --git a/libs/WindowManager/Shell/res/color/tv_pip_menu_icon.xml b/libs/WindowManager/Shell/res/color/tv_window_menu_icon.xml similarity index 74% rename from libs/WindowManager/Shell/res/color/tv_pip_menu_icon.xml rename to libs/WindowManager/Shell/res/color/tv_window_menu_icon.xml index 2758704504938..45205d2a7138d 100644 --- a/libs/WindowManager/Shell/res/color/tv_pip_menu_icon.xml +++ b/libs/WindowManager/Shell/res/color/tv_window_menu_icon.xml @@ -1,6 +1,6 @@ + android:color="@color/tv_window_menu_icon_focused" /> - + android:color="@color/tv_window_menu_icon_disabled" /> + \ No newline at end of file diff --git a/libs/WindowManager/Shell/res/color/tv_pip_menu_close_icon_bg.xml b/libs/WindowManager/Shell/res/color/tv_window_menu_icon_bg.xml similarity index 83% rename from libs/WindowManager/Shell/res/color/tv_pip_menu_close_icon_bg.xml rename to libs/WindowManager/Shell/res/color/tv_window_menu_icon_bg.xml index 6cbf66f00df78..1bd26e1d65838 100644 --- a/libs/WindowManager/Shell/res/color/tv_pip_menu_close_icon_bg.xml +++ b/libs/WindowManager/Shell/res/color/tv_window_menu_icon_bg.xml @@ -16,6 +16,6 @@ --> - + android:color="@color/tv_window_menu_icon_bg_focused" /> + \ No newline at end of file diff --git a/libs/WindowManager/Shell/res/drawable/tv_pip_button_bg.xml b/libs/WindowManager/Shell/res/drawable/tv_pip_button_bg.xml deleted file mode 100644 index 1938f4562e97b..0000000000000 --- a/libs/WindowManager/Shell/res/drawable/tv_pip_button_bg.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/libs/WindowManager/Shell/res/drawable/tv_pip_menu_border.xml b/libs/WindowManager/Shell/res/drawable/tv_pip_menu_border.xml index 846fdb3e8a58a..7085a2c72c864 100644 --- a/libs/WindowManager/Shell/res/drawable/tv_pip_menu_border.xml +++ b/libs/WindowManager/Shell/res/drawable/tv_pip_menu_border.xml @@ -15,7 +15,7 @@ ~ limitations under the License. --> + android:exitFadeDuration="@integer/tv_window_menu_fade_animation_duration"> diff --git a/libs/WindowManager/Shell/res/drawable/tv_window_button_bg.xml b/libs/WindowManager/Shell/res/drawable/tv_window_button_bg.xml new file mode 100644 index 0000000000000..2dba37daf0599 --- /dev/null +++ b/libs/WindowManager/Shell/res/drawable/tv_window_button_bg.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file diff --git a/libs/WindowManager/Shell/res/layout/tv_pip_menu.xml b/libs/WindowManager/Shell/res/layout/tv_pip_menu.xml index 2d50d3f1392d1..8533a5994d33c 100644 --- a/libs/WindowManager/Shell/res/layout/tv_pip_menu.xml +++ b/libs/WindowManager/Shell/res/layout/tv_pip_menu.xml @@ -64,14 +64,14 @@ android:layout_width="@dimen/pip_menu_button_wrapper_margin" android:layout_height="@dimen/pip_menu_button_wrapper_margin"/> - - - - - - - - - - - - - \ No newline at end of file diff --git a/libs/WindowManager/Shell/res/layout/tv_window_menu_action_button.xml b/libs/WindowManager/Shell/res/layout/tv_window_menu_action_button.xml new file mode 100644 index 0000000000000..c4dbd39c729a6 --- /dev/null +++ b/libs/WindowManager/Shell/res/layout/tv_window_menu_action_button.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/libs/WindowManager/Shell/res/values-tvdpi/dimen.xml b/libs/WindowManager/Shell/res/values-tvdpi/dimen.xml index 02e726fbc3bf0..b45b9ec0c4579 100644 --- a/libs/WindowManager/Shell/res/values-tvdpi/dimen.xml +++ b/libs/WindowManager/Shell/res/values-tvdpi/dimen.xml @@ -15,20 +15,20 @@ limitations under the License. --> - - 48dp - 20dp - 20dp - 4dp - 26dp - 4dp - 500 + + 48dp + 20dp + 20dp + 4dp + 500 4dp 6dp + 4dp 24dp + 26dp 20dp diff --git a/libs/WindowManager/Shell/res/values/colors_tv.xml b/libs/WindowManager/Shell/res/values/colors_tv.xml index fa90fe36b545a..3e71c1010278f 100644 --- a/libs/WindowManager/Shell/res/values/colors_tv.xml +++ b/libs/WindowManager/Shell/res/values/colors_tv.xml @@ -15,13 +15,15 @@ ~ limitations under the License. --> - #0E0E0F - #F8F9FA - #80868B - #D93025 - #D69F261F - #E8EAED - #990E0E0F + #0E0E0F + #F8F9FA + + #80868B + #D93025 + #D69F261F + #E8EAED + #990E0E0F + #E8EAED #1E232C diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipMenuActionButton.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/TvWindowMenuActionButton.java similarity index 76% rename from libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipMenuActionButton.java rename to libs/WindowManager/Shell/src/com/android/wm/shell/common/TvWindowMenuActionButton.java index a09aab666a313..572e3335eb11d 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipMenuActionButton.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/TvWindowMenuActionButton.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020 The Android Open Source Project + * Copyright (C) 2022 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.wm.shell.pip.tv; +package com.android.wm.shell.common; import android.content.Context; import android.content.res.TypedArray; @@ -28,33 +28,32 @@ import android.widget.RelativeLayout; import com.android.wm.shell.R; /** - * A View that represents Pip Menu action button, such as "Fullscreen" and "Close" as well custom - * (provided by the application in Pip) and media buttons. + * A common action button for TV window menu layouts. */ -public class TvPipMenuActionButton extends RelativeLayout implements View.OnClickListener { +public class TvWindowMenuActionButton extends RelativeLayout implements View.OnClickListener { private final ImageView mIconImageView; private final View mButtonBackgroundView; private final View mButtonView; private OnClickListener mOnClickListener; - public TvPipMenuActionButton(Context context) { + public TvWindowMenuActionButton(Context context) { this(context, null, 0, 0); } - public TvPipMenuActionButton(Context context, AttributeSet attrs) { + public TvWindowMenuActionButton(Context context, AttributeSet attrs) { this(context, attrs, 0, 0); } - public TvPipMenuActionButton(Context context, AttributeSet attrs, int defStyleAttr) { + public TvWindowMenuActionButton(Context context, AttributeSet attrs, int defStyleAttr) { this(context, attrs, defStyleAttr, 0); } - public TvPipMenuActionButton( + public TvWindowMenuActionButton( Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); final LayoutInflater inflater = (LayoutInflater) getContext() .getSystemService(Context.LAYOUT_INFLATER_SERVICE); - inflater.inflate(R.layout.tv_pip_menu_action_button, this); + inflater.inflate(R.layout.tv_window_menu_action_button, this); mIconImageView = findViewById(R.id.icon); mButtonView = findViewById(R.id.button); @@ -129,20 +128,27 @@ public class TvPipMenuActionButton extends RelativeLayout implements View.OnClic return mButtonView.isEnabled(); } - void setIsCustomCloseAction(boolean isCustomCloseAction) { + /** + * Marks this button as a custom close action button. + * This changes the style of the action button to highlight that this action finishes the + * Picture-in-Picture activity. + * + * @param isCustomCloseAction sets or unsets this button as a custom close action button. + */ + public void setIsCustomCloseAction(boolean isCustomCloseAction) { mIconImageView.setImageTintList( getResources().getColorStateList( - isCustomCloseAction ? R.color.tv_pip_menu_close_icon - : R.color.tv_pip_menu_icon)); + isCustomCloseAction ? R.color.tv_window_menu_close_icon + : R.color.tv_window_menu_icon)); mButtonBackgroundView.setBackgroundTintList(getResources() - .getColorStateList(isCustomCloseAction ? R.color.tv_pip_menu_close_icon_bg - : R.color.tv_pip_menu_icon_bg)); + .getColorStateList(isCustomCloseAction ? R.color.tv_window_menu_close_icon_bg + : R.color.tv_window_menu_icon_bg)); } @Override public String toString() { if (mButtonView.getContentDescription() == null) { - return TvPipMenuActionButton.class.getSimpleName(); + return TvWindowMenuActionButton.class.getSimpleName(); } return mButtonView.getContentDescription().toString(); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipMenuView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipMenuView.java index 57d3a44ed2afc..4d7c8465bcc23 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipMenuView.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipMenuView.java @@ -56,6 +56,7 @@ import androidx.annotation.Nullable; import com.android.internal.protolog.common.ProtoLog; import com.android.wm.shell.R; +import com.android.wm.shell.common.TvWindowMenuActionButton; import com.android.wm.shell.pip.PipUtils; import com.android.wm.shell.protolog.ShellProtoLogGroup; @@ -79,7 +80,7 @@ public class TvPipMenuView extends FrameLayout implements View.OnClickListener { private final LinearLayout mActionButtonsContainer; private final View mMenuFrameView; - private final List mAdditionalButtons = new ArrayList<>(); + private final List mAdditionalButtons = new ArrayList<>(); private final View mPipFrameView; private final View mPipView; private final TextView mEduTextView; @@ -94,7 +95,7 @@ public class TvPipMenuView extends FrameLayout implements View.OnClickListener { private final ImageView mArrowRight; private final ImageView mArrowDown; private final ImageView mArrowLeft; - private final TvPipMenuActionButton mA11yDoneButton; + private final TvWindowMenuActionButton mA11yDoneButton; private final ScrollView mScrollView; private final HorizontalScrollView mHorizontalScrollView; @@ -104,8 +105,8 @@ public class TvPipMenuView extends FrameLayout implements View.OnClickListener { private boolean mMoveMenuIsVisible; private boolean mButtonMenuIsVisible; - private final TvPipMenuActionButton mExpandButton; - private final TvPipMenuActionButton mCloseButton; + private final TvWindowMenuActionButton mExpandButton; + private final TvWindowMenuActionButton mCloseButton; private boolean mSwitchingOrientation; @@ -166,7 +167,7 @@ public class TvPipMenuView extends FrameLayout implements View.OnClickListener { mResizeAnimationDuration = context.getResources().getInteger( R.integer.config_pipResizeAnimationDuration); mPipMenuFadeAnimationDuration = context.getResources() - .getInteger(R.integer.pip_menu_fade_animation_duration); + .getInteger(R.integer.tv_window_menu_fade_animation_duration); mPipMenuOuterSpace = context.getResources() .getDimensionPixelSize(R.dimen.pip_menu_outer_space); @@ -568,7 +569,7 @@ public class TvPipMenuView extends FrameLayout implements View.OnClickListener { if (actionsNumber > buttonsNumber) { // Add buttons until we have enough to display all the actions. while (actionsNumber > buttonsNumber) { - TvPipMenuActionButton button = new TvPipMenuActionButton(mContext); + TvWindowMenuActionButton button = new TvWindowMenuActionButton(mContext); button.setOnClickListener(this); mActionButtonsContainer.addView(button, @@ -591,7 +592,7 @@ public class TvPipMenuView extends FrameLayout implements View.OnClickListener { // "Assign" actions to the buttons. for (int index = 0; index < actionsNumber; index++) { final RemoteAction action = actions.get(index); - final TvPipMenuActionButton button = mAdditionalButtons.get(index); + final TvWindowMenuActionButton button = mAdditionalButtons.get(index); // Remove action if it matches the custom close action. if (PipUtils.remoteActionsMatch(action, closeAction)) { @@ -607,7 +608,7 @@ public class TvPipMenuView extends FrameLayout implements View.OnClickListener { } } - private void setActionForButton(RemoteAction action, TvPipMenuActionButton button, + private void setActionForButton(RemoteAction action, TvWindowMenuActionButton button, Handler mainHandler) { button.setVisibility(View.VISIBLE); // Ensure the button is visible. if (action.getContentDescription().length() > 0) {