diff options
| author | 2020-03-24 04:26:47 +0000 | |
|---|---|---|
| committer | 2020-03-24 04:26:47 +0000 | |
| commit | c1b17d656d39a2278a50a48bf7ea3aaec60e4c97 (patch) | |
| tree | 2f55ff7ae486d2e545ace72d19924d3d67c6c32d | |
| parent | 1bcb0c6b3506308710a268e00f6f775778b4bbe3 (diff) | |
| parent | d00d01a298bb9e4f38dafe4c902ebf0615895e8b (diff) | |
Merge changes I3f220769,I4c9af08c into rvc-dev
* changes:
Fixed the coloring of the background of the conversation icons
Add back the conversation icon in the expanded view
9 files changed, 288 insertions, 79 deletions
diff --git a/core/java/com/android/internal/widget/ConversationLayout.java b/core/java/com/android/internal/widget/ConversationLayout.java index 4e7ae8a235e7..bedf55d52391 100644 --- a/core/java/com/android/internal/widget/ConversationLayout.java +++ b/core/java/com/android/internal/widget/ConversationLayout.java @@ -93,7 +93,6 @@ public class ConversationLayout extends FrameLayout private MessagingLinearLayout mMessagingLinearLayout; private boolean mShowHistoricMessages; private ArrayList<MessagingGroup> mGroups = new ArrayList<>(); - private TextView mTitleView; private int mLayoutColor; private int mSenderTextColor; private int mMessageTextColor; @@ -108,8 +107,14 @@ public class ConversationLayout extends FrameLayout private boolean mIsCollapsed; private ImageResolver mImageResolver; private ImageView mConversationIcon; + private View mConversationIconContainer; + private int mConversationIconTopPadding; + private int mConversationIconTopPaddingExpandedGroup; + private int mConversationIconTopPaddingNoAppName; + private int mExpandedGroupMessagePaddingNoAppName; private TextView mConversationText; private View mConversationIconBadge; + private ImageView mConversationIconBadgeBg; private Icon mLargeIcon; private View mExpandButtonContainer; private ViewGroup mExpandButtonAndContentContainer; @@ -117,11 +122,12 @@ public class ConversationLayout extends FrameLayout private MessagingLinearLayout mImageMessageContainer; private int mExpandButtonExpandedTopMargin; private int mBadgedSideMargins; - private int mIconSizeBadged; - private int mIconSizeCentered; + private int mConversationAvatarSize; + private int mConversationAvatarSizeExpanded; private CachingIconView mIcon; private View mImportanceRingView; - private int mExpandedGroupTopMargin; + private int mExpandedGroupSideMargin; + private int mExpandedGroupSideMarginFacePile; private View mConversationFacePile; private int mNotificationBackgroundColor; private CharSequence mFallbackChatName; @@ -133,7 +139,12 @@ public class ConversationLayout extends FrameLayout private boolean mExpandable = true; private int mContentMarginEnd; private Rect mMessagingClipRect; - private TextView mAppName; + private ObservableTextView mAppName; + private boolean mAppNameGone; + private int mFacePileAvatarSize; + private int mFacePileAvatarSizeExpandedGroup; + private int mFacePileProtectionWidth; + private int mFacePileProtectionWidthExpanded; public ConversationLayout(@NonNull Context context) { super(context); @@ -165,14 +176,15 @@ public class ConversationLayout extends FrameLayout int size = Math.max(displayMetrics.widthPixels, displayMetrics.heightPixels); mMessagingClipRect = new Rect(0, 0, size, size); setMessagingClippingDisabled(false); - mTitleView = findViewById(R.id.title); mAvatarSize = getResources().getDimensionPixelSize(R.dimen.messaging_avatar_size); mTextPaint.setTextAlign(Paint.Align.CENTER); mTextPaint.setAntiAlias(true); mConversationIcon = findViewById(R.id.conversation_icon); + mConversationIconContainer = findViewById(R.id.conversation_icon_container); mIcon = findViewById(R.id.icon); mImportanceRingView = findViewById(R.id.conversation_icon_badge_ring); mConversationIconBadge = findViewById(R.id.conversation_icon_badge); + mConversationIconBadgeBg = findViewById(R.id.conversation_icon_badge_bg); mIcon.setOnVisibilityChangedListener((visibility) -> { // Always keep the badge visibility in sync with the icon. This is necessary in cases // Where the icon is being hidden externally like in group children. @@ -192,18 +204,40 @@ public class ConversationLayout extends FrameLayout R.dimen.notification_content_margin_end); mBadgedSideMargins = getResources().getDimensionPixelSize( R.dimen.conversation_badge_side_margin); - mIconSizeBadged = getResources().getDimensionPixelSize( - R.dimen.conversation_icon_size_badged); - mIconSizeCentered = getResources().getDimensionPixelSize( - R.dimen.conversation_icon_size_centered); - mExpandedGroupTopMargin = getResources().getDimensionPixelSize( - R.dimen.conversation_icon_margin_top_centered); + mConversationAvatarSize = getResources().getDimensionPixelSize( + R.dimen.conversation_avatar_size); + mConversationAvatarSizeExpanded = getResources().getDimensionPixelSize( + R.dimen.conversation_avatar_size_group_expanded); + mConversationIconTopPadding = getResources().getDimensionPixelSize( + R.dimen.conversation_icon_container_top_padding); + mConversationIconTopPaddingExpandedGroup = getResources().getDimensionPixelSize( + R.dimen.conversation_icon_container_top_padding_small_avatar); + mConversationIconTopPaddingNoAppName = getResources().getDimensionPixelSize( + R.dimen.conversation_icon_container_top_padding_no_app_name); + mExpandedGroupMessagePaddingNoAppName = getResources().getDimensionPixelSize( + R.dimen.expanded_group_conversation_message_padding_without_app_name); + mExpandedGroupSideMargin = getResources().getDimensionPixelSize( + R.dimen.conversation_badge_side_margin_group_expanded); + mExpandedGroupSideMarginFacePile = getResources().getDimensionPixelSize( + R.dimen.conversation_badge_side_margin_group_expanded_face_pile); mConversationFacePile = findViewById(R.id.conversation_face_pile); + mFacePileAvatarSize = getResources().getDimensionPixelSize( + R.dimen.conversation_face_pile_avatar_size); + mFacePileAvatarSizeExpandedGroup = getResources().getDimensionPixelSize( + R.dimen.conversation_face_pile_avatar_size_group_expanded); + mFacePileProtectionWidth = getResources().getDimensionPixelSize( + R.dimen.conversation_face_pile_protection_width); + mFacePileProtectionWidthExpanded = getResources().getDimensionPixelSize( + R.dimen.conversation_face_pile_protection_width_expanded); mFallbackChatName = getResources().getString( R.string.conversation_title_fallback_one_to_one); mFallbackGroupChatName = getResources().getString( R.string.conversation_title_fallback_group_chat); mAppName = findViewById(R.id.app_name_text); + mAppNameGone = mAppName.getVisibility() == GONE; + mAppName.setOnVisibilityChangedListener((visibility) -> { + onAppNameVisibilityChanged(); + }); } @RemotableViewMethod @@ -234,7 +268,7 @@ public class ConversationLayout extends FrameLayout mIsCollapsed = isCollapsed; mMessagingLinearLayout.setMaxDisplayedLines(isCollapsed ? 1 : Integer.MAX_VALUE); updateExpandButton(); - updateContentPaddings(); + updateContentEndPaddings(); } @RemotableViewMethod @@ -354,21 +388,17 @@ public class ConversationLayout extends FrameLayout } } } else { - if (mIsCollapsed) { - if (mLargeIcon != null) { - mConversationIcon.setVisibility(VISIBLE); - mConversationFacePile.setVisibility(GONE); - mConversationIcon.setImageIcon(mLargeIcon); - } else { - mConversationIcon.setVisibility(GONE); - // This will also inflate it! - mConversationFacePile.setVisibility(VISIBLE); - mConversationFacePile = findViewById(R.id.conversation_face_pile); - bindFacePile(); - } - } else { + if (mLargeIcon != null) { + mConversationIcon.setVisibility(VISIBLE); mConversationFacePile.setVisibility(GONE); + mConversationIcon.setImageIcon(mLargeIcon); + } else { mConversationIcon.setVisibility(GONE); + // This will also inflate it! + mConversationFacePile.setVisibility(VISIBLE); + // rebind the value to the inflated view instead of the stub + mConversationFacePile = findViewById(R.id.conversation_face_pile); + bindFacePile(); } } if (TextUtils.isEmpty(conversationText)) { @@ -384,9 +414,10 @@ public class ConversationLayout extends FrameLayout && TextUtils.equals(conversationText, messageSender); messagingGroup.setCanHideSenderIfFirst(canHide); } + updateAppName(); updateIconPositionAndSize(); updateImageMessages(); - updateAppName(); + updatePaddingsBasedOnContentAvailability(); } private void updateImageMessages() { @@ -425,7 +456,7 @@ public class ConversationLayout extends FrameLayout private void bindFacePile() { // Let's bind the face pile - View bottomBackground = mConversationFacePile.findViewById( + ImageView bottomBackground = mConversationFacePile.findViewById( R.id.conversation_face_pile_bottom_background); applyNotificationBackgroundColor(bottomBackground); ImageView bottomView = mConversationFacePile.findViewById( @@ -463,6 +494,38 @@ public class ConversationLayout extends FrameLayout secondLastIcon = createAvatarSymbol("", "", mLayoutColor); } topView.setImageIcon(secondLastIcon); + + int conversationAvatarSize; + int facepileAvatarSize; + int facePileBackgroundSize; + if (mIsCollapsed) { + conversationAvatarSize = mConversationAvatarSize; + facepileAvatarSize = mFacePileAvatarSize; + facePileBackgroundSize = facepileAvatarSize + 2 * mFacePileProtectionWidth; + } else { + conversationAvatarSize = mConversationAvatarSizeExpanded; + facepileAvatarSize = mFacePileAvatarSizeExpandedGroup; + facePileBackgroundSize = facepileAvatarSize + 2 * mFacePileProtectionWidthExpanded; + } + LayoutParams layoutParams = (LayoutParams) mConversationIcon.getLayoutParams(); + layoutParams.width = conversationAvatarSize; + layoutParams.height = conversationAvatarSize; + mConversationFacePile.setLayoutParams(layoutParams); + + layoutParams = (LayoutParams) bottomView.getLayoutParams(); + layoutParams.width = facepileAvatarSize; + layoutParams.height = facepileAvatarSize; + bottomView.setLayoutParams(layoutParams); + + layoutParams = (LayoutParams) topView.getLayoutParams(); + layoutParams.width = facepileAvatarSize; + layoutParams.height = facepileAvatarSize; + topView.setLayoutParams(layoutParams); + + layoutParams = (LayoutParams) bottomBackground.getLayoutParams(); + layoutParams.width = facePileBackgroundSize; + layoutParams.height = facePileBackgroundSize; + bottomBackground.setLayoutParams(layoutParams); } private void updateAppName() { @@ -477,30 +540,61 @@ public class ConversationLayout extends FrameLayout * update the icon position and sizing */ private void updateIconPositionAndSize() { - int gravity; - int marginStart; - int marginTop; - int iconSize; + int sidemargin; + int conversationAvatarSize; if (mIsOneToOne || mIsCollapsed) { - // Badged format - gravity = Gravity.LEFT; - marginStart = mBadgedSideMargins; - marginTop = mBadgedSideMargins; - iconSize = mIconSizeBadged; + sidemargin = mBadgedSideMargins; + conversationAvatarSize = mConversationAvatarSize; } else { - gravity = Gravity.CENTER_HORIZONTAL; - marginStart = 0; - marginTop = mExpandedGroupTopMargin; - iconSize = mIconSizeCentered; + sidemargin = mConversationFacePile.getVisibility() == VISIBLE + ? mExpandedGroupSideMarginFacePile + : mExpandedGroupSideMargin; + conversationAvatarSize = mConversationAvatarSizeExpanded; } LayoutParams layoutParams = (LayoutParams) mConversationIconBadge.getLayoutParams(); - layoutParams.gravity = gravity; - layoutParams.topMargin = marginTop; - layoutParams.setMarginStart(marginStart); - layoutParams.width = iconSize; - layoutParams.height = iconSize; + layoutParams.topMargin = sidemargin; + layoutParams.setMarginStart(sidemargin); mConversationIconBadge.setLayoutParams(layoutParams); + + if (mConversationIcon.getVisibility() == VISIBLE) { + layoutParams = (LayoutParams) mConversationIcon.getLayoutParams(); + layoutParams.width = conversationAvatarSize; + layoutParams.height = conversationAvatarSize; + mConversationIcon.setLayoutParams(layoutParams); + } + } + + private void updatePaddingsBasedOnContentAvailability() { + int containerTopPadding; + int messagingPadding = 0; + if (mIsOneToOne || mIsCollapsed) { + containerTopPadding = mConversationIconTopPadding; + } else { + if (mAppName.getVisibility() != GONE) { + // The app name is visible, let's center outselves in the two lines + containerTopPadding = mConversationIconTopPaddingExpandedGroup; + } else { + // App name is gone, let's center ourselves int he one remaining line + containerTopPadding = mConversationIconTopPaddingNoAppName; + + // The app name is gone and we're a group, we'll need to add some extra padding + // to the messages, since otherwise it will overlap with the group + messagingPadding = mExpandedGroupMessagePaddingNoAppName; + } + } + + mConversationIconContainer.setPaddingRelative( + mConversationIconContainer.getPaddingStart(), + containerTopPadding, + mConversationIconContainer.getPaddingEnd(), + mConversationIconContainer.getPaddingBottom()); + + mMessagingLinearLayout.setPaddingRelative( + mMessagingLinearLayout.getPaddingStart(), + messagingPadding, + mMessagingLinearLayout.getPaddingEnd(), + mMessagingLinearLayout.getPaddingBottom()); } @RemotableViewMethod @@ -678,11 +772,11 @@ public class ConversationLayout extends FrameLayout @RemotableViewMethod public void setNotificationBackgroundColor(int color) { mNotificationBackgroundColor = color; - applyNotificationBackgroundColor(mConversationIconBadge); + applyNotificationBackgroundColor(mConversationIconBadgeBg); } - private void applyNotificationBackgroundColor(View view) { - view.setBackgroundTintList(ColorStateList.valueOf(mNotificationBackgroundColor)); + private void applyNotificationBackgroundColor(ImageView view) { + view.setImageTintList(ColorStateList.valueOf(mNotificationBackgroundColor)); } @RemotableViewMethod @@ -922,7 +1016,7 @@ public class ConversationLayout extends FrameLayout mExpandButtonContainer.setContentDescription(mContext.getText(contentDescriptionId)); } - private void updateContentPaddings() { + private void updateContentEndPaddings() { // Let's make sure the conversation header can't run into the expand button when we're // collapsed and update the paddings of the content @@ -951,6 +1045,14 @@ public class ConversationLayout extends FrameLayout mContentContainer.getPaddingBottom()); } + private void onAppNameVisibilityChanged() { + boolean appNameGone = mAppName.getVisibility() == GONE; + if (appNameGone != mAppNameGone) { + mAppNameGone = appNameGone; + updatePaddingsBasedOnContentAvailability(); + } + } + public void updateExpandability(boolean expandable, @Nullable OnClickListener onClickListener) { mExpandable = expandable; if (expandable) { @@ -960,7 +1062,7 @@ public class ConversationLayout extends FrameLayout // TODO: handle content paddings to end of layout mExpandButtonContainer.setVisibility(GONE); } - updateContentPaddings(); + updateContentEndPaddings(); } @Override diff --git a/core/java/com/android/internal/widget/ObservableTextView.java b/core/java/com/android/internal/widget/ObservableTextView.java new file mode 100644 index 000000000000..1f3c296f0b60 --- /dev/null +++ b/core/java/com/android/internal/widget/ObservableTextView.java @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2020 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.internal.widget; + +import android.annotation.Nullable; +import android.content.Context; +import android.util.AttributeSet; +import android.view.View; +import android.widget.RemoteViews; +import android.widget.TextView; + +import java.util.function.Consumer; + +/** + * A text view whose visibility can be observed. + */ +@RemoteViews.RemoteView +public class ObservableTextView extends TextView { + + private Consumer<Integer> mOnVisibilityChangedListener; + + public ObservableTextView(Context context) { + super(context); + } + + public ObservableTextView(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + } + + public ObservableTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + public ObservableTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, + int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + } + + @Override + protected void onVisibilityChanged(View changedView, int visibility) { + super.onVisibilityChanged(changedView, visibility); + if (changedView == this) { + if (mOnVisibilityChangedListener != null) { + mOnVisibilityChangedListener.accept(visibility); + } + } + } + + public void setOnVisibilityChangedListener(Consumer<Integer> listener) { + mOnVisibilityChangedListener = listener; + } +} diff --git a/core/res/res/layout/conversation_face_pile_layout.xml b/core/res/res/layout/conversation_face_pile_layout.xml index 1db38702f926..528562534aab 100644 --- a/core/res/res/layout/conversation_face_pile_layout.xml +++ b/core/res/res/layout/conversation_face_pile_layout.xml @@ -23,21 +23,25 @@ > <ImageView android:id="@+id/conversation_face_pile_top" - android:layout_width="36dp" - android:layout_height="36dp" + android:layout_width="@dimen/messaging_avatar_size" + android:layout_height="@dimen/messaging_avatar_size" android:scaleType="centerCrop" android:layout_gravity="end|top" /> <FrameLayout - android:id="@+id/conversation_face_pile_bottom_background" - android:layout_width="40dp" - android:layout_height="40dp" - android:layout_gravity="start|bottom" - android:background="@drawable/conversation_badge_background"> + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="start|bottom"> + <ImageView + android:id="@+id/conversation_face_pile_bottom_background" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:src="@drawable/conversation_badge_background" + /> <ImageView android:id="@+id/conversation_face_pile_bottom" - android:layout_width="36dp" - android:layout_height="36dp" + android:layout_width="@dimen/messaging_avatar_size" + android:layout_height="@dimen/messaging_avatar_size" android:scaleType="centerCrop" android:layout_gravity="center" /> diff --git a/core/res/res/layout/notification_template_material_conversation.xml b/core/res/res/layout/notification_template_material_conversation.xml index 7bf13ec4ad65..7cadecbbdb91 100644 --- a/core/res/res/layout/notification_template_material_conversation.xml +++ b/core/res/res/layout/notification_template_material_conversation.xml @@ -25,6 +25,7 @@ > <FrameLayout + android:id="@+id/conversation_icon_container" android:layout_width="@dimen/conversation_content_start" android:layout_height="wrap_content" android:gravity="start|top" @@ -175,7 +176,7 @@ </LinearLayout> <!-- App Name --> - <TextView + <com.android.internal.widget.ObservableTextView android:id="@+id/app_name_text" android:layout_width="wrap_content" android:layout_height="wrap_content" diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml index f2e25998e0ae..7edb86b2db18 100644 --- a/core/res/res/values/dimens.xml +++ b/core/res/res/values/dimens.xml @@ -694,10 +694,31 @@ <dimen name="conversation_badge_side_margin">36dp</dimen> <!-- size of the notification badge when applied to the conversation icon --> <dimen name="conversation_icon_size_badged">20dp</dimen> - <!-- size of the notification badge when centered in a conversation --> - <dimen name="conversation_icon_size_centered">26dp</dimen> - <!-- margin on the top when the icon is centered for group conversations --> - <dimen name="conversation_icon_margin_top_centered">12dp</dimen> + <!-- size of the conversation avatar in an expanded group --> + <dimen name="conversation_avatar_size_group_expanded">@dimen/messaging_avatar_size</dimen> + <!-- size of the face pile icons --> + <dimen name="conversation_face_pile_avatar_size">@dimen/messaging_avatar_size</dimen> + <!-- size of the face pile icons when the group is expanded --> + <dimen name="conversation_face_pile_avatar_size_group_expanded">25dp</dimen> + <!-- Side margins of the conversation badge in relation to the conversation icon when the group is expanded--> + <dimen name="conversation_badge_side_margin_group_expanded">22dp</dimen> + <!-- Side margins of the conversation badge in relation to the conversation icon when the group is expanded--> + <dimen name="conversation_badge_side_margin_group_expanded_face_pile">18dp</dimen> + <!-- The width of the protection of the face pile layout--> + <dimen name="conversation_face_pile_protection_width">2dp</dimen> + <!-- The width of the protection of the face pile layout when expanded--> + <dimen name="conversation_face_pile_protection_width_expanded">1dp</dimen> + <!-- The padding of the expanded message container when the app name is gone--> + <dimen name="expanded_group_conversation_message_padding_without_app_name">14dp</dimen> + + <!-- The top padding of the conversation icon container in the regular state--> + <dimen name="conversation_icon_container_top_padding">12dp</dimen> + + <!-- The top padding of the conversation icon container when there's no app name present in a group--> + <dimen name="conversation_icon_container_top_padding_no_app_name">9dp</dimen> + + <!-- The top padding of the conversation icon container when the avatar is small--> + <dimen name="conversation_icon_container_top_padding_small_avatar">17.5dp</dimen> <!-- The padding of the conversation header when expanded. This is calculated from the expand button size + notification_content_margin_end --> <dimen name="conversation_header_expanded_padding_end">38dp</dimen> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 163501a5985e..0adef7513bb5 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -3874,15 +3874,25 @@ <java-symbol type="id" name="conversation_text" /> <java-symbol type="id" name="message_icon_container" /> <java-symbol type="id" name="conversation_image_message_container" /> + <java-symbol type="id" name="conversation_icon_container" /> <java-symbol type="dimen" name="conversation_expand_button_top_margin_expanded" /> <java-symbol type="dimen" name="messaging_group_singleline_sender_padding_end" /> <java-symbol type="dimen" name="conversation_badge_side_margin" /> - <java-symbol type="dimen" name="conversation_icon_size_badged" /> - <java-symbol type="dimen" name="conversation_icon_size_centered" /> - <java-symbol type="dimen" name="conversation_icon_margin_top_centered" /> + <java-symbol type="dimen" name="conversation_avatar_size" /> + <java-symbol type="dimen" name="conversation_avatar_size_group_expanded" /> + <java-symbol type="dimen" name="conversation_face_pile_avatar_size" /> + <java-symbol type="dimen" name="conversation_face_pile_avatar_size_group_expanded" /> + <java-symbol type="dimen" name="conversation_face_pile_protection_width" /> + <java-symbol type="dimen" name="conversation_face_pile_protection_width_expanded" /> + <java-symbol type="dimen" name="conversation_badge_side_margin_group_expanded" /> + <java-symbol type="dimen" name="conversation_badge_side_margin_group_expanded_face_pile" /> <java-symbol type="dimen" name="conversation_content_start" /> + <java-symbol type="dimen" name="expanded_group_conversation_message_padding_without_app_name" /> <java-symbol type="dimen" name="messaging_layout_margin_end" /> <java-symbol type="dimen" name="conversation_header_expanded_padding_end" /> + <java-symbol type="dimen" name="conversation_icon_container_top_padding" /> + <java-symbol type="dimen" name="conversation_icon_container_top_padding_small_avatar" /> + <java-symbol type="dimen" name="conversation_icon_container_top_padding_no_app_name" /> <java-symbol type="layout" name="notification_template_material_conversation" /> <java-symbol type="layout" name="conversation_face_pile_layout" /> diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/ImageTransformState.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/ImageTransformState.java index 4882a235c5d8..82f7c71c48cf 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/ImageTransformState.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/ImageTransformState.java @@ -117,11 +117,6 @@ public class ImageTransformState extends TransformState { } @Override - protected boolean transformScale(TransformState otherState) { - return sameAs(otherState); - } - - @Override public void recycle() { super.recycle(); if (getClass() == ImageTransformState.class) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/TransformState.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/TransformState.java index 82fb49144181..27109d2acfa2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/TransformState.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/TransformState.java @@ -248,7 +248,7 @@ public class TransformState { } protected boolean transformScale(TransformState otherState) { - return false; + return sameAs(otherState); } /** diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationConversationTemplateViewWrapper.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationConversationTemplateViewWrapper.kt index 91a2e7c815d4..593de23c58de 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationConversationTemplateViewWrapper.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationConversationTemplateViewWrapper.kt @@ -53,6 +53,9 @@ class NotificationConversationTemplateViewWrapper constructor( private lateinit var conversationTitle: View private lateinit var importanceRing: View private lateinit var appName: View + private var facePileBottomBg: View? = null + private var facePileBottom: View? = null + private var facePileTop: View? = null private fun resolveViews() { messagingLinearLayout = conversationLayout.messagingLinearLayout @@ -67,6 +70,10 @@ class NotificationConversationTemplateViewWrapper constructor( importanceRing = requireViewById(com.android.internal.R.id.conversation_icon_badge_ring) appName = requireViewById(com.android.internal.R.id.app_name_text) conversationTitle = requireViewById(com.android.internal.R.id.conversation_text) + facePileTop = findViewById(com.android.internal.R.id.conversation_face_pile_top) + facePileBottom = findViewById(com.android.internal.R.id.conversation_face_pile_bottom) + facePileBottomBg = + findViewById(com.android.internal.R.id.conversation_face_pile_bottom_background) } } @@ -118,7 +125,10 @@ class NotificationConversationTemplateViewWrapper constructor( conversationIcon, conversationBadgeBg, expandButton, - importanceRing + importanceRing, + facePileTop, + facePileBottom, + facePileBottomBg ) } @@ -140,9 +150,9 @@ class NotificationConversationTemplateViewWrapper constructor( else super.getMinLayoutHeight() - private fun addTransformedViews(vararg vs: View) = - vs.forEach(mTransformationHelper::addTransformedView) + private fun addTransformedViews(vararg vs: View?) = + vs.forEach { view -> view?.let(mTransformationHelper::addTransformedView) } - private fun addViewsTransformingToSimilar(vararg vs: View) = - vs.forEach(mTransformationHelper::addViewTransformingToSimilar) + private fun addViewsTransformingToSimilar(vararg vs: View?) = + vs.forEach { view -> view?.let(mTransformationHelper::addViewTransformingToSimilar) } } |