From 1f9084cf73142c3209d456d74dfe987d135770ae Mon Sep 17 00:00:00 2001 From: Julia Reynolds Date: Fri, 2 Apr 2021 16:20:49 -0400 Subject: [PATCH] Use view layouts rather than compositing an image Which works better for apps with adaptive icons Test: manual, and atest SystemUITests Fixes: 177332447 Change-Id: Ib4948336fa174694e7c23098a0cfd92c4de62e32 --- .../layout/notification_conversation_info.xml | 59 +++++++++++++++++-- packages/SystemUI/res/values/dimens.xml | 2 +- .../row/NotificationConversationInfo.java | 17 +++++- .../row/NotificationConversationInfoTest.java | 3 +- 4 files changed, 71 insertions(+), 10 deletions(-) diff --git a/packages/SystemUI/res/layout/notification_conversation_info.xml b/packages/SystemUI/res/layout/notification_conversation_info.xml index fcc1aed654702..112509272e58e 100644 --- a/packages/SystemUI/res/layout/notification_conversation_info.xml +++ b/packages/SystemUI/res/layout/notification_conversation_info.xml @@ -36,13 +36,62 @@ android:clipChildren="false" android:paddingTop="@dimen/notification_guts_header_top_padding" android:clipToPadding="true"> - + android:layout_marginEnd="12dp" + > + + + + + + + + + + 32dp 6dp - 11dp + 12dp 24dp diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java index b4ab8cf817ddb..8ba036ce03c3c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java @@ -346,9 +346,22 @@ public class NotificationConversationInfo extends LinearLayout implements } private void bindIcon(boolean important) { + Drawable person = mIconFactory.getBaseIconDrawable(mShortcutInfo); + if (person == null) { + person = mContext.getDrawable(R.drawable.ic_person).mutate(); + TypedArray ta = mContext.obtainStyledAttributes(new int[]{android.R.attr.colorAccent}); + int colorAccent = ta.getColor(0, 0); + ta.recycle(); + person.setTint(colorAccent); + } ImageView image = findViewById(R.id.conversation_icon); - image.setImageDrawable(mIconFactory.getConversationDrawable( - mShortcutInfo, mPackageName, mAppUid, important)); + image.setImageDrawable(person); + + ImageView app = findViewById(R.id.conversation_icon_badge_icon); + app.setImageDrawable(mIconFactory.getAppBadge( + mPackageName, UserHandle.getUserId(mSbn.getUid()))); + + findViewById(R.id.conversation_icon_badge_ring).setVisibility(important ? VISIBLE : GONE); } private void bindPackage() { diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfoTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfoTest.java index d4b21c6f69496..12e341a5f135b 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfoTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfoTest.java @@ -199,8 +199,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase { when(mShortcutInfo.getLabel()).thenReturn("Convo name"); List shortcuts = Arrays.asList(mShortcutInfo); when(mLauncherApps.getShortcuts(any(), any())).thenReturn(shortcuts); - when(mIconFactory.getConversationDrawable( - any(ShortcutInfo.class), anyString(), anyInt(), anyBoolean())) + when(mIconFactory.getBaseIconDrawable(any(ShortcutInfo.class))) .thenReturn(mIconDrawable); mNotificationChannel = new NotificationChannel(