[Media TTT] Add the background back to the receiver chip.

Fixes: 245979191
Test: manual: See video commented on bug
Test: media.taptotransfer tests
Change-Id: I13c60b3b950ac5081766664582490e5b46283c5e
This commit is contained in:
Caitlin Shkuratov
2022-09-28 20:32:32 +00:00
parent 3fe093556f
commit f701928157
7 changed files with 29 additions and 108 deletions

View File

@@ -29,6 +29,7 @@
<com.android.internal.widget.CachingIconView
android:id="@+id/app_icon"
android:background="@drawable/media_ttt_chip_background_receiver"
android:layout_width="@dimen/media_ttt_icon_size_receiver"
android:layout_height="@dimen/media_ttt_icon_size_receiver"
android:layout_gravity="center|bottom"

View File

@@ -1056,9 +1056,8 @@
<!-- Media tap-to-transfer chip for receiver device -->
<dimen name="media_ttt_chip_size_receiver">100dp</dimen>
<dimen name="media_ttt_icon_size_receiver">95dp</dimen>
<!-- Since the generic icon isn't circular, we need to scale it down so it still fits within
the circular chip. -->
<dimen name="media_ttt_generic_icon_size_receiver">70dp</dimen>
<!-- Add some padding for the generic icon so it doesn't go all the way to the border. -->
<dimen name="media_ttt_generic_icon_padding">12dp</dimen>
<dimen name="media_ttt_receiver_vert_translation">20dp</dimen>
<!-- Window magnification -->

View File

@@ -19,7 +19,6 @@ package com.android.systemui.media.taptotransfer.common
import android.content.Context
import android.content.pm.PackageManager
import android.graphics.drawable.Drawable
import com.android.internal.widget.CachingIconView
import com.android.settingslib.Utils
import com.android.systemui.R
@@ -76,29 +75,6 @@ class MediaTttUtils {
isAppIcon = false
)
}
/**
* Sets an icon to be displayed by the given view.
*
* @param iconSize the size in pixels that the icon should be. If null, the size of
* [appIconView] will not be adjusted.
*/
fun setIcon(
appIconView: CachingIconView,
icon: Drawable,
iconContentDescription: CharSequence,
iconSize: Int? = null,
) {
iconSize?.let { size ->
val lp = appIconView.layoutParams
lp.width = size
lp.height = size
appIconView.layoutParams = lp
}
appIconView.contentDescription = iconContentDescription
appIconView.setImageDrawable(icon)
}
}
}

View File

@@ -30,6 +30,7 @@ import android.view.View
import android.view.ViewGroup
import android.view.WindowManager
import android.view.accessibility.AccessibilityManager
import com.android.internal.widget.CachingIconView
import com.android.settingslib.Utils
import com.android.systemui.R
import com.android.systemui.dagger.SysUISingleton
@@ -146,20 +147,17 @@ class MediaTttChipControllerReceiver @Inject constructor(
)
val iconDrawable = newInfo.appIconDrawableOverride ?: iconInfo.drawable
val iconContentDescription = newInfo.appNameOverride ?: iconInfo.contentDescription
val iconSize = context.resources.getDimensionPixelSize(
val iconPadding =
if (iconInfo.isAppIcon) {
R.dimen.media_ttt_icon_size_receiver
0
} else {
R.dimen.media_ttt_generic_icon_size_receiver
context.resources.getDimensionPixelSize(R.dimen.media_ttt_generic_icon_padding)
}
)
MediaTttUtils.setIcon(
currentView.requireViewById(R.id.app_icon),
iconDrawable,
iconContentDescription,
iconSize,
)
val iconView = currentView.requireViewById<CachingIconView>(R.id.app_icon)
iconView.setPadding(iconPadding, iconPadding, iconPadding, iconPadding)
iconView.setImageDrawable(iconDrawable)
iconView.contentDescription = iconContentDescription
}
override fun animateViewIn(view: ViewGroup) {

View File

@@ -29,6 +29,7 @@ import android.view.WindowManager
import android.view.accessibility.AccessibilityManager
import android.widget.TextView
import com.android.internal.statusbar.IUndoMediaTransferCallback
import com.android.internal.widget.CachingIconView
import com.android.systemui.Gefingerpoken
import com.android.systemui.R
import com.android.systemui.animation.Interpolators
@@ -145,11 +146,9 @@ class MediaTttChipControllerSender @Inject constructor(
val iconInfo = MediaTttUtils.getIconInfoFromPackageName(
context, newInfo.routeInfo.clientPackageName, logger
)
MediaTttUtils.setIcon(
currentView.requireViewById(R.id.app_icon),
iconInfo.drawable,
iconInfo.contentDescription
)
val iconView = currentView.requireViewById<CachingIconView>(R.id.app_icon)
iconView.setImageDrawable(iconInfo.drawable)
iconView.contentDescription = iconInfo.contentDescription
// Text
val otherDeviceName = newInfo.routeInfo.name.toString()

View File

@@ -19,9 +19,7 @@ package com.android.systemui.media.taptotransfer.common
import android.content.pm.ApplicationInfo
import android.content.pm.PackageManager
import android.graphics.drawable.Drawable
import android.widget.FrameLayout
import androidx.test.filters.SmallTest
import com.android.internal.widget.CachingIconView
import com.android.systemui.R
import com.android.systemui.SysuiTestCase
import com.android.systemui.util.mockito.any
@@ -90,48 +88,6 @@ class MediaTttUtilsTest : SysuiTestCase() {
assertThat(iconInfo.drawable).isEqualTo(appIconFromPackageName)
assertThat(iconInfo.contentDescription).isEqualTo(APP_NAME)
}
@Test
fun setIcon_viewHasIconAndContentDescription() {
val view = CachingIconView(context)
val icon = context.getDrawable(R.drawable.ic_celebration)!!
val contentDescription = "Happy birthday!"
MediaTttUtils.setIcon(view, icon, contentDescription)
assertThat(view.drawable).isEqualTo(icon)
assertThat(view.contentDescription).isEqualTo(contentDescription)
}
@Test
fun setIcon_iconSizeNull_viewSizeDoesNotChange() {
val view = CachingIconView(context)
val size = 456
view.layoutParams = FrameLayout.LayoutParams(size, size)
MediaTttUtils.setIcon(view, context.getDrawable(R.drawable.ic_cake)!!, "desc")
assertThat(view.layoutParams.width).isEqualTo(size)
assertThat(view.layoutParams.height).isEqualTo(size)
}
@Test
fun setIcon_iconSizeProvided_viewSizeUpdates() {
val view = CachingIconView(context)
val size = 456
view.layoutParams = FrameLayout.LayoutParams(size, size)
val newSize = 40
MediaTttUtils.setIcon(
view,
context.getDrawable(R.drawable.ic_cake)!!,
"desc",
iconSize = newSize
)
assertThat(view.layoutParams.width).isEqualTo(newSize)
assertThat(view.layoutParams.height).isEqualTo(newSize)
}
}
private const val PACKAGE_NAME = "com.android.systemui"

View File

@@ -212,35 +212,27 @@ class MediaTttChipControllerReceiverTest : SysuiTestCase() {
}
@Test
fun updateView_isAppIcon_usesAppIconSize() {
fun updateView_isAppIcon_usesAppIconPadding() {
controllerReceiver.displayView(getChipReceiverInfo(packageName = PACKAGE_NAME))
val chipView = getChipView()
chipView.measure(
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)
)
val expectedSize =
context.resources.getDimensionPixelSize(R.dimen.media_ttt_icon_size_receiver)
assertThat(chipView.getAppIconView().measuredWidth).isEqualTo(expectedSize)
assertThat(chipView.getAppIconView().measuredHeight).isEqualTo(expectedSize)
assertThat(chipView.getAppIconView().paddingLeft).isEqualTo(0)
assertThat(chipView.getAppIconView().paddingRight).isEqualTo(0)
assertThat(chipView.getAppIconView().paddingTop).isEqualTo(0)
assertThat(chipView.getAppIconView().paddingBottom).isEqualTo(0)
}
@Test
fun updateView_notAppIcon_usesGenericIconSize() {
fun updateView_notAppIcon_usesGenericIconPadding() {
controllerReceiver.displayView(getChipReceiverInfo(packageName = null))
val chipView = getChipView()
chipView.measure(
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)
)
val expectedSize =
context.resources.getDimensionPixelSize(R.dimen.media_ttt_generic_icon_size_receiver)
assertThat(chipView.getAppIconView().measuredWidth).isEqualTo(expectedSize)
assertThat(chipView.getAppIconView().measuredHeight).isEqualTo(expectedSize)
val expectedPadding =
context.resources.getDimensionPixelSize(R.dimen.media_ttt_generic_icon_padding)
assertThat(chipView.getAppIconView().paddingLeft).isEqualTo(expectedPadding)
assertThat(chipView.getAppIconView().paddingRight).isEqualTo(expectedPadding)
assertThat(chipView.getAppIconView().paddingTop).isEqualTo(expectedPadding)
assertThat(chipView.getAppIconView().paddingBottom).isEqualTo(expectedPadding)
}
@Test