summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ioana Alexandru <aioana@google.com> 2024-10-09 15:19:09 +0200
committer Ioana Alexandru <aioana@google.com> 2024-10-18 16:31:23 +0200
commitd4ca0f536133517db83c74eb86d13c3fb4d7dc32 (patch)
tree125417fda1abc38e5f41f6705c89e9ecd12dffcf
parent08ff158a5b847b2e3aef87f463eb88027fbe8847 (diff)
Notif redesign: reduce conversation icon margin
Bug: 371174789 Test: visually checked that the notification has the smaller margin Flag: android.app.notifications_redesign_app_icons Change-Id: I50e9806abba4da17cf6c4021a73cffb2e525d873
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationConversationTemplateViewWrapperTest.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationConversationTemplateViewWrapper.kt102
2 files changed, 58 insertions, 48 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationConversationTemplateViewWrapperTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationConversationTemplateViewWrapperTest.kt
index 9d990b1d7edf..9a6a6997b96f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationConversationTemplateViewWrapperTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationConversationTemplateViewWrapperTest.kt
@@ -26,6 +26,7 @@ import com.android.internal.widget.ConversationLayout
import com.android.internal.widget.MessagingGroup
import com.android.internal.widget.MessagingImageMessage
import com.android.internal.widget.MessagingLinearLayout
+import com.android.internal.widget.NotificationRowIconView
import com.android.systemui.SysuiTestCase
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
import com.android.systemui.statusbar.notification.row.NotificationTestHelper
@@ -90,7 +91,7 @@ class NotificationConversationTemplateViewWrapperTest : SysuiTestCase() {
private fun fakeConversationLayout(
mockDrawableGroupMessage: AnimatedImageDrawable,
- mockDrawableImageMessage: AnimatedImageDrawable
+ mockDrawableImageMessage: AnimatedImageDrawable,
): View {
val mockMessagingImageMessage: MessagingImageMessage =
mock<MessagingImageMessage>().apply {
@@ -126,6 +127,7 @@ class NotificationConversationTemplateViewWrapperTest : SysuiTestCase() {
whenever(requireViewById<CachingIconView>(R.id.conversation_icon))
.thenReturn(mock())
whenever(findViewById<CachingIconView>(R.id.icon)).thenReturn(mock())
+ whenever(requireViewById<NotificationRowIconView>(R.id.icon)).thenReturn(mock())
whenever(requireViewById<View>(R.id.conversation_icon_badge_bg)).thenReturn(mock())
whenever(requireViewById<View>(R.id.expand_button)).thenReturn(mock())
whenever(requireViewById<View>(R.id.expand_button_container)).thenReturn(mock())
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 b4411f1a33a5..f8aff69f0531 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
@@ -16,15 +16,18 @@
package com.android.systemui.statusbar.notification.row.wrapper
+import android.app.Flags
import android.content.Context
import android.graphics.drawable.AnimatedImageDrawable
import android.view.View
import android.view.ViewGroup
+import android.view.ViewGroup.MarginLayoutParams
import com.android.internal.widget.CachingIconView
import com.android.internal.widget.ConversationLayout
import com.android.internal.widget.MessagingGroup
import com.android.internal.widget.MessagingImageMessage
import com.android.internal.widget.MessagingLinearLayout
+import com.android.internal.widget.NotificationRowIconView
import com.android.systemui.res.R
import com.android.systemui.statusbar.notification.NotificationFadeAware
import com.android.systemui.statusbar.notification.NotificationUtils
@@ -32,23 +35,23 @@ import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
import com.android.systemui.statusbar.notification.row.wrapper.NotificationMessagingTemplateViewWrapper.setCustomImageMessageTransform
import com.android.systemui.util.children
-/**
- * Wraps a notification containing a conversation template
- */
-class NotificationConversationTemplateViewWrapper constructor(
+/** Wraps a notification containing a conversation template */
+class NotificationConversationTemplateViewWrapper(
ctx: Context,
view: View,
- row: ExpandableNotificationRow
+ row: ExpandableNotificationRow,
) : NotificationTemplateViewWrapper(ctx, view, row) {
- private val minHeightWithActions: Int = NotificationUtils.getFontScaledHeight(
+ private val minHeightWithActions: Int =
+ NotificationUtils.getFontScaledHeight(
ctx,
- R.dimen.notification_messaging_actions_min_height
- )
+ R.dimen.notification_messaging_actions_min_height,
+ )
private val conversationLayout: ConversationLayout = view as ConversationLayout
private lateinit var conversationIconContainer: View
private lateinit var conversationIconView: CachingIconView
+ private lateinit var badgeIconView: NotificationRowIconView
private lateinit var conversationBadgeBg: View
private lateinit var expandBtn: View
private lateinit var expandBtnContainer: View
@@ -68,10 +71,13 @@ class NotificationConversationTemplateViewWrapper constructor(
messageContainers = conversationLayout.messagingGroups
with(conversationLayout) {
conversationIconContainer =
- requireViewById(com.android.internal.R.id.conversation_icon_container)
+ requireViewById(com.android.internal.R.id.conversation_icon_container)
conversationIconView = requireViewById(com.android.internal.R.id.conversation_icon)
+ if (Flags.notificationsRedesignAppIcons()) {
+ badgeIconView = requireViewById(com.android.internal.R.id.icon)
+ }
conversationBadgeBg =
- requireViewById(com.android.internal.R.id.conversation_icon_badge_bg)
+ requireViewById(com.android.internal.R.id.conversation_icon_badge_bg)
expandBtn = requireViewById(com.android.internal.R.id.expand_button)
expandBtnContainer = requireViewById(com.android.internal.R.id.expand_button_container)
importanceRing = requireViewById(com.android.internal.R.id.conversation_icon_badge_ring)
@@ -80,7 +86,7 @@ class NotificationConversationTemplateViewWrapper constructor(
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)
+ findViewById(com.android.internal.R.id.conversation_face_pile_bottom_background)
}
}
@@ -88,6 +94,13 @@ class NotificationConversationTemplateViewWrapper constructor(
// Reinspect the notification. Before the super call, because the super call also updates
// the transformation types and we need to have our values set by then.
resolveViews()
+ if (Flags.notificationsRedesignAppIcons() && row.isShowingAppIcon) {
+ // Override the margins to be 2dp instead of 4dp according to the new design if we're
+ // showing the app icon.
+ val lp = badgeIconView.layoutParams as MarginLayoutParams
+ lp.setMargins(2, 2, 2, 2)
+ badgeIconView.layoutParams = lp
+ }
super.onContentUpdated(row)
}
@@ -96,56 +109,50 @@ class NotificationConversationTemplateViewWrapper constructor(
super.updateTransformedTypes()
mTransformationHelper.addTransformedView(TRANSFORMING_VIEW_TITLE, conversationTitleView)
- addTransformedViews(
- messagingLinearLayout,
- appName
- )
+ addTransformedViews(messagingLinearLayout, appName)
setCustomImageMessageTransform(mTransformationHelper, imageMessageContainer)
addViewsTransformingToSimilar(
- conversationIconView,
- conversationBadgeBg,
- expandBtn,
- importanceRing,
- facePileTop,
- facePileBottom,
- facePileBottomBg
+ conversationIconView,
+ conversationBadgeBg,
+ expandBtn,
+ importanceRing,
+ facePileTop,
+ facePileBottom,
+ facePileBottomBg,
)
}
override fun getShelfTransformationTarget(): View? =
- if (conversationLayout.isImportantConversation)
- if (conversationIconView.visibility != View.GONE)
- conversationIconView
- else
- // A notification with a fallback icon was set to important. Currently
- // the transformation doesn't work for these and needs to be fixed.
- // In the meantime those are using the icon.
- super.getShelfTransformationTarget()
+ if (conversationLayout.isImportantConversation)
+ if (conversationIconView.visibility != View.GONE) conversationIconView
else
- super.getShelfTransformationTarget()
+ // A notification with a fallback icon was set to important. Currently
+ // the transformation doesn't work for these and needs to be fixed.
+ // In the meantime those are using the icon.
+ super.getShelfTransformationTarget()
+ else super.getShelfTransformationTarget()
override fun setRemoteInputVisible(visible: Boolean) =
- conversationLayout.showHistoricMessages(visible)
+ conversationLayout.showHistoricMessages(visible)
override fun updateExpandability(
expandable: Boolean,
onClickListener: View.OnClickListener,
- requestLayout: Boolean
+ requestLayout: Boolean,
) = conversationLayout.updateExpandability(expandable, onClickListener)
override fun disallowSingleClick(x: Float, y: Float): Boolean {
- val isOnExpandButton = expandBtnContainer.visibility == View.VISIBLE &&
- isOnView(expandBtnContainer, x, y)
+ val isOnExpandButton =
+ expandBtnContainer.visibility == View.VISIBLE && isOnView(expandBtnContainer, x, y)
return isOnExpandButton || super.disallowSingleClick(x, y)
}
override fun getMinLayoutHeight(): Int =
- if (mActionsContainer != null && mActionsContainer.visibility != View.GONE)
- minHeightWithActions
- else
- super.getMinLayoutHeight()
+ if (mActionsContainer != null && mActionsContainer.visibility != View.GONE)
+ minHeightWithActions
+ else super.getMinLayoutHeight()
override fun setNotificationFaded(faded: Boolean) {
// Do not call super
@@ -157,16 +164,17 @@ class NotificationConversationTemplateViewWrapper constructor(
override fun setAnimationsRunning(running: Boolean) {
// We apply to both the child message containers in a conversation group,
// and the top level image message container.
- val containers = messageContainers.asSequence().map { it.messageContainer } +
+ val containers =
+ messageContainers.asSequence().map { it.messageContainer } +
sequenceOf(imageMessageContainer)
val drawables =
- containers
- .flatMap { it.children }
- .mapNotNull { child ->
- (child as? MessagingImageMessage)?.let { imageMessage ->
- imageMessage.drawable as? AnimatedImageDrawable
- }
- }
+ containers
+ .flatMap { it.children }
+ .mapNotNull { child ->
+ (child as? MessagingImageMessage)?.let { imageMessage ->
+ imageMessage.drawable as? AnimatedImageDrawable
+ }
+ }
drawables.toSet().forEach {
when {
running -> it.start()