Merge "MediaPlayer will now transition the background with color scheme" into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
bd92f05e66
@@ -34,7 +34,7 @@ import com.android.systemui.monet.ColorScheme
|
||||
* is triggered.
|
||||
*/
|
||||
interface ColorTransition {
|
||||
fun updateColorScheme(scheme: ColorScheme?)
|
||||
fun updateColorScheme(scheme: ColorScheme?): Boolean
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -64,14 +64,16 @@ open class AnimatingColorTransition(
|
||||
applyColor(currentColor)
|
||||
}
|
||||
|
||||
override fun updateColorScheme(scheme: ColorScheme?) {
|
||||
override fun updateColorScheme(scheme: ColorScheme?): Boolean {
|
||||
val newTargetColor = if (scheme == null) defaultColor else extractColor(scheme)
|
||||
if (newTargetColor != targetColor) {
|
||||
sourceColor = currentColor
|
||||
targetColor = newTargetColor
|
||||
valueAnimator.cancel()
|
||||
valueAnimator.start()
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
init {
|
||||
@@ -198,8 +200,10 @@ class ColorSchemeTransition internal constructor(
|
||||
return Utils.getColorAttr(context, id).defaultColor
|
||||
}
|
||||
|
||||
fun updateColorScheme(colorScheme: ColorScheme?) {
|
||||
colorTransitions.forEach { it.updateColorScheme(colorScheme) }
|
||||
fun updateColorScheme(colorScheme: ColorScheme?): Boolean {
|
||||
var anyChanged = false
|
||||
colorTransitions.forEach { anyChanged = it.updateColorScheme(colorScheme) || anyChanged }
|
||||
colorScheme?.let { mediaViewHolder.gutsViewHolder.colorScheme = colorScheme }
|
||||
return anyChanged
|
||||
}
|
||||
}
|
||||
|
||||
@@ -741,10 +741,14 @@ public class MediaControlPanel {
|
||||
}
|
||||
mArtworkBoundId = reqId;
|
||||
|
||||
// Transition Colors to current color scheme
|
||||
boolean colorSchemeChanged = mColorSchemeTransition.updateColorScheme(colorScheme);
|
||||
|
||||
// Bind the album view to the artwork or a transition drawable
|
||||
ImageView albumView = mMediaViewHolder.getAlbumView();
|
||||
albumView.setPadding(0, 0, 0, 0);
|
||||
if (updateBackground || (!mIsArtworkBound && isArtworkBound)) {
|
||||
if (updateBackground || colorSchemeChanged
|
||||
|| (!mIsArtworkBound && isArtworkBound)) {
|
||||
if (mPrevArtwork == null) {
|
||||
albumView.setImageDrawable(artwork);
|
||||
} else {
|
||||
@@ -767,9 +771,6 @@ public class MediaControlPanel {
|
||||
mIsArtworkBound = isArtworkBound;
|
||||
}
|
||||
|
||||
// Transition Colors to current color scheme
|
||||
mColorSchemeTransition.updateColorScheme(colorScheme);
|
||||
|
||||
// App icon - use notification icon
|
||||
ImageView appIconView = mMediaViewHolder.getAppIcon();
|
||||
appIconView.clearColorFilter();
|
||||
|
||||
@@ -591,14 +591,20 @@ public class MediaControlPanelTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun bindAlbumView_bitmapInLaterStates_setAfterExecutors() {
|
||||
val bmp = Bitmap.createBitmap(10, 10, Bitmap.Config.ARGB_8888)
|
||||
val canvas = Canvas(bmp)
|
||||
canvas.drawColor(Color.RED)
|
||||
val albumArt = Icon.createWithBitmap(bmp)
|
||||
val redBmp = Bitmap.createBitmap(10, 10, Bitmap.Config.ARGB_8888)
|
||||
val redCanvas = Canvas(redBmp)
|
||||
redCanvas.drawColor(Color.RED)
|
||||
val redArt = Icon.createWithBitmap(redBmp)
|
||||
|
||||
val greenBmp = Bitmap.createBitmap(10, 10, Bitmap.Config.ARGB_8888)
|
||||
val greenCanvas = Canvas(greenBmp)
|
||||
greenCanvas.drawColor(Color.GREEN)
|
||||
val greenArt = Icon.createWithBitmap(greenBmp)
|
||||
|
||||
val state0 = mediaData.copy(artwork = null)
|
||||
val state1 = mediaData.copy(artwork = albumArt)
|
||||
val state2 = mediaData.copy(artwork = albumArt)
|
||||
val state1 = mediaData.copy(artwork = redArt)
|
||||
val state2 = mediaData.copy(artwork = redArt)
|
||||
val state3 = mediaData.copy(artwork = greenArt)
|
||||
player.attachPlayer(viewHolder)
|
||||
|
||||
// First binding sets (empty) drawable
|
||||
@@ -627,6 +633,12 @@ public class MediaControlPanelTest : SysuiTestCase() {
|
||||
bgExecutor.runAllReady()
|
||||
mainExecutor.runAllReady()
|
||||
verify(albumView, times(2)).setImageDrawable(any(Drawable::class.java))
|
||||
|
||||
// Fourth binding to new image runs transition due to color scheme change
|
||||
player.bindPlayer(state3, PACKAGE)
|
||||
bgExecutor.runAllReady()
|
||||
mainExecutor.runAllReady()
|
||||
verify(albumView, times(3)).setImageDrawable(any(Drawable::class.java))
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user