From 544ace4bbdaed65358f8ce722b40fb8f219c04d0 Mon Sep 17 00:00:00 2001 From: Julia Tuttle Date: Thu, 22 Jun 2023 15:32:20 -0400 Subject: [PATCH] Add hover and pressed states to notification expand button Fixes: 283804869 Test: manual Change-Id: I3c1959579f06575ca70e1cf95e24e5721e11fb06 --- .../widget/NotificationExpandButton.java | 13 ++++++++---- .../notification_expand_button_state_tint.xml | 21 +++++++++++++++++++ .../notification_expand_button_state_tint.xml | 21 +++++++++++++++++++ .../res/drawable/expand_button_pill_bg.xml | 18 ++++++++++++---- .../res/layout/notification_expand_button.xml | 1 + core/res/res/values/symbols.xml | 1 + 6 files changed, 67 insertions(+), 8 deletions(-) create mode 100644 core/res/res/color-night/notification_expand_button_state_tint.xml create mode 100644 core/res/res/color/notification_expand_button_state_tint.xml diff --git a/core/java/com/android/internal/widget/NotificationExpandButton.java b/core/java/com/android/internal/widget/NotificationExpandButton.java index 07ee9b5d2ff16..d4dd1e7056533 100644 --- a/core/java/com/android/internal/widget/NotificationExpandButton.java +++ b/core/java/com/android/internal/widget/NotificationExpandButton.java @@ -21,6 +21,8 @@ import android.annotation.Nullable; import android.content.Context; import android.content.res.ColorStateList; import android.graphics.Rect; +import android.graphics.drawable.Drawable; +import android.graphics.drawable.LayerDrawable; import android.util.AttributeSet; import android.view.RemotableViewMethod; import android.view.View; @@ -42,7 +44,7 @@ import java.util.Locale; @RemoteViews.RemoteView public class NotificationExpandButton extends FrameLayout { - private View mPillView; + private Drawable mPillDrawable; private TextView mNumberView; private ImageView mIconView; private boolean mExpanded; @@ -73,7 +75,10 @@ public class NotificationExpandButton extends FrameLayout { @Override protected void onFinishInflate() { super.onFinishInflate(); - mPillView = findViewById(R.id.expand_button_pill); + + final View pillView = findViewById(R.id.expand_button_pill); + final LayerDrawable layeredPill = (LayerDrawable) pillView.getBackground(); + mPillDrawable = layeredPill.findDrawableByLayerId(R.id.expand_button_pill_colorized_layer); mNumberView = findViewById(R.id.expand_button_number); mIconView = findViewById(R.id.expand_button_icon); } @@ -156,7 +161,7 @@ public class NotificationExpandButton extends FrameLayout { private void updateColors() { if (shouldShowNumber()) { if (mHighlightPillColor != 0) { - mPillView.setBackgroundTintList(ColorStateList.valueOf(mHighlightPillColor)); + mPillDrawable.setTintList(ColorStateList.valueOf(mHighlightPillColor)); } mIconView.setColorFilter(mHighlightTextColor); if (mHighlightTextColor != 0) { @@ -164,7 +169,7 @@ public class NotificationExpandButton extends FrameLayout { } } else { if (mDefaultPillColor != 0) { - mPillView.setBackgroundTintList(ColorStateList.valueOf(mDefaultPillColor)); + mPillDrawable.setTintList(ColorStateList.valueOf(mDefaultPillColor)); } mIconView.setColorFilter(mDefaultTextColor); if (mDefaultTextColor != 0) { diff --git a/core/res/res/color-night/notification_expand_button_state_tint.xml b/core/res/res/color-night/notification_expand_button_state_tint.xml new file mode 100644 index 0000000000000..a794d53c7e713 --- /dev/null +++ b/core/res/res/color-night/notification_expand_button_state_tint.xml @@ -0,0 +1,21 @@ + + + + + + + \ No newline at end of file diff --git a/core/res/res/color/notification_expand_button_state_tint.xml b/core/res/res/color/notification_expand_button_state_tint.xml new file mode 100644 index 0000000000000..67b2c2568bb14 --- /dev/null +++ b/core/res/res/color/notification_expand_button_state_tint.xml @@ -0,0 +1,21 @@ + + + + + + + \ No newline at end of file diff --git a/core/res/res/drawable/expand_button_pill_bg.xml b/core/res/res/drawable/expand_button_pill_bg.xml index f95044a7fe76e..a14d33c9527b0 100644 --- a/core/res/res/drawable/expand_button_pill_bg.xml +++ b/core/res/res/drawable/expand_button_pill_bg.xml @@ -13,7 +13,17 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - \ No newline at end of file + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/res/res/layout/notification_expand_button.xml b/core/res/res/layout/notification_expand_button.xml index 8eae064cba1f8..63fe47110c8bf 100644 --- a/core/res/res/layout/notification_expand_button.xml +++ b/core/res/res/layout/notification_expand_button.xml @@ -34,6 +34,7 @@ android:background="@drawable/expand_button_pill_bg" android:gravity="center_vertical" android:layout_gravity="center_vertical" + android:duplicateParentState="true" > +