Loading packages/SystemUI/res/layout/media_session_view.xml +0 −1 Original line number Diff line number Diff line Loading @@ -42,7 +42,6 @@ android:adjustViewBounds="true" android:clipToOutline="true" android:background="@drawable/qs_media_outline_album_bg" android:foreground="@drawable/qs_media_scrim" /> <!-- Guideline for output switcher --> Loading packages/SystemUI/src/com/android/systemui/media/ColorSchemeTransition.kt +3 −41 Original line number Diff line number Diff line Loading @@ -17,20 +17,17 @@ package com.android.systemui.media import android.animation.ArgbEvaluator import android.animation.ValueAnimator.AnimatorUpdateListener import android.animation.ValueAnimator import android.animation.ValueAnimator.AnimatorUpdateListener import android.content.Context import android.content.res.ColorStateList import android.graphics.Color import android.graphics.drawable.GradientDrawable import android.graphics.drawable.RippleDrawable import android.content.res.Configuration import android.content.res.Configuration.UI_MODE_NIGHT_YES import android.graphics.drawable.RippleDrawable import com.android.internal.R import com.android.internal.annotations.VisibleForTesting import com.android.settingslib.Utils import com.android.systemui.monet.ColorScheme import com.android.systemui.util.getColorWithAlpha /** * A [ColorTransition] is an object that updates the colors of views each time [updateColorScheme] Loading Loading @@ -106,7 +103,6 @@ class ColorSchemeTransition internal constructor( constructor(context: Context, mediaViewHolder: MediaViewHolder) : this(context, mediaViewHolder, ::AnimatingColorTransition) private var isGradientEnabled = true val bgColor = context.getColor(com.android.systemui.R.color.material_dynamic_secondary95) val surfaceColor = animatingColorTransitionFactory( bgColor, Loading Loading @@ -187,16 +183,6 @@ class ColorSchemeTransition internal constructor( mediaViewHolder.seekBar.progressBackgroundTintList = ColorStateList.valueOf(textTertiary) } val bgGradientStart = animatingColorTransitionFactory( bgColor, albumGradientPicker(::backgroundStartFromScheme, 0.25f) ) { _ -> updateAlbumGradient() } val bgGradientEnd = animatingColorTransitionFactory( bgColor, albumGradientPicker(::backgroundEndFromScheme, 0.9f) ) { _ -> updateAlbumGradient() } val colorTransitions = arrayOf( surfaceColor, colorSeamless, Loading @@ -206,37 +192,13 @@ class ColorSchemeTransition internal constructor( textPrimaryInverse, textSecondary, textTertiary, bgGradientStart, bgGradientEnd ) private fun updateAlbumGradient() { val gradient = mediaViewHolder.albumView.foreground?.mutate() if (gradient is GradientDrawable) { gradient.colors = intArrayOf( bgGradientStart?.currentColor ?: 0, bgGradientEnd?.currentColor ?: 0) } } private fun albumGradientPicker( inner: (ColorScheme) -> Int, targetAlpha: Float ): (ColorScheme) -> Int { return { scheme -> if (isGradientEnabled) getColorWithAlpha(inner(scheme), targetAlpha) else Color.TRANSPARENT } } private fun loadDefaultColor(id: Int): Int { return Utils.getColorAttr(context, id).defaultColor } fun updateColorScheme(colorScheme: ColorScheme?, enableGradient: Boolean) { isGradientEnabled = enableGradient fun updateColorScheme(colorScheme: ColorScheme?) { colorTransitions.forEach { it.updateColorScheme(colorScheme) } colorScheme?.let { mediaViewHolder.gutsViewHolder.colorScheme = colorScheme } } Loading packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java +16 −2 Original line number Diff line number Diff line Loading @@ -38,7 +38,9 @@ import android.graphics.Rect; import android.graphics.drawable.Animatable; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; import android.graphics.drawable.Icon; import android.graphics.drawable.LayerDrawable; import android.graphics.drawable.TransitionDrawable; import android.media.session.MediaController; import android.media.session.MediaSession; Loading Loading @@ -82,6 +84,7 @@ import com.android.systemui.plugins.FalsingManager; import com.android.systemui.shared.system.SysUiStatsLog; import com.android.systemui.statusbar.NotificationLockscreenUserManager; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.util.ColorUtilKt; import com.android.systemui.util.animation.TransitionLayout; import com.android.systemui.util.time.SystemClock; Loading Loading @@ -683,7 +686,18 @@ public class MediaControlPanel { WallpaperColors wallpaperColors = WallpaperColors .fromBitmap(artworkIcon.getBitmap()); mutableColorScheme = new ColorScheme(wallpaperColors, true, Style.CONTENT); artwork = getScaledBackground(artworkIcon, width, height); Drawable albumArt = getScaledBackground(artworkIcon, width, height); GradientDrawable gradient = (GradientDrawable) mContext .getDrawable(R.drawable.qs_media_scrim); gradient.setColors(new int[] { ColorUtilKt.getColorWithAlpha( MediaColorSchemesKt.backgroundStartFromScheme(mutableColorScheme), 0.25f), ColorUtilKt.getColorWithAlpha( MediaColorSchemesKt.backgroundEndFromScheme(mutableColorScheme), 0.9f), }); artwork = new LayerDrawable(new Drawable[] { albumArt, gradient }); isArtworkBound = true; } else { // If there's no artwork, use colors from the app icon Loading Loading @@ -735,7 +749,7 @@ public class MediaControlPanel { } // Transition Colors to current color scheme mColorSchemeTransition.updateColorScheme(colorScheme, mIsArtworkBound); mColorSchemeTransition.updateColorScheme(colorScheme); // App icon - use notification icon ImageView appIconView = mMediaViewHolder.getAppIcon(); Loading packages/SystemUI/tests/src/com/android/systemui/media/ColorSchemeTransitionTest.kt +3 −3 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.systemui.media import org.mockito.Mockito.`when` as whenever import android.animation.ValueAnimator import android.graphics.Color import android.testing.AndroidTestingRunner Loading @@ -34,6 +33,7 @@ import org.mockito.Mock import org.mockito.Mockito.never import org.mockito.Mockito.times import org.mockito.Mockito.verify import org.mockito.Mockito.`when` as whenever import org.mockito.junit.MockitoJUnit private const val DEFAULT_COLOR = Color.RED Loading Loading @@ -147,8 +147,8 @@ class ColorSchemeTransitionTest : SysuiTestCase() { @Test fun testColorSchemeTransition_update() { colorSchemeTransition.updateColorScheme(colorScheme, true) verify(mockAnimatingTransition, times(10)).updateColorScheme(colorScheme) colorSchemeTransition.updateColorScheme(colorScheme) verify(mockAnimatingTransition, times(8)).updateColorScheme(colorScheme) verify(gutsViewHolder).colorScheme = colorScheme } } packages/SystemUI/tests/src/com/android/systemui/media/MediaControlPanelTest.kt +3 −2 Original line number Diff line number Diff line Loading @@ -21,7 +21,6 @@ import android.animation.AnimatorSet import android.app.PendingIntent import android.app.smartspace.SmartspaceAction import android.content.Context import org.mockito.Mockito.`when` as whenever import android.content.Intent import android.content.pm.ApplicationInfo import android.content.pm.PackageManager Loading Loading @@ -69,8 +68,8 @@ import com.android.systemui.statusbar.policy.KeyguardStateController import com.android.systemui.util.animation.TransitionLayout import com.android.systemui.util.concurrency.FakeExecutor import com.android.systemui.util.mockito.KotlinArgumentCaptor import com.android.systemui.util.mockito.argumentCaptor import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.argumentCaptor import com.android.systemui.util.mockito.eq import com.android.systemui.util.mockito.nullable import com.android.systemui.util.mockito.withArgCaptor Loading @@ -93,6 +92,7 @@ import org.mockito.Mockito.never import org.mockito.Mockito.reset import org.mockito.Mockito.times import org.mockito.Mockito.verify import org.mockito.Mockito.`when` as whenever import org.mockito.junit.MockitoJUnit private const val KEY = "TEST_KEY" Loading Loading @@ -355,6 +355,7 @@ public class MediaControlPanelTest : SysuiTestCase() { whenever(viewHolder.player).thenReturn(view) whenever(viewHolder.appIcon).thenReturn(appIcon) whenever(viewHolder.albumView).thenReturn(albumView) whenever(albumView.foreground).thenReturn(mock(Drawable::class.java)) whenever(viewHolder.titleText).thenReturn(titleText) whenever(viewHolder.artistText).thenReturn(artistText) whenever(seamlessBackground.getDrawable(0)).thenReturn(mock(GradientDrawable::class.java)) Loading Loading
packages/SystemUI/res/layout/media_session_view.xml +0 −1 Original line number Diff line number Diff line Loading @@ -42,7 +42,6 @@ android:adjustViewBounds="true" android:clipToOutline="true" android:background="@drawable/qs_media_outline_album_bg" android:foreground="@drawable/qs_media_scrim" /> <!-- Guideline for output switcher --> Loading
packages/SystemUI/src/com/android/systemui/media/ColorSchemeTransition.kt +3 −41 Original line number Diff line number Diff line Loading @@ -17,20 +17,17 @@ package com.android.systemui.media import android.animation.ArgbEvaluator import android.animation.ValueAnimator.AnimatorUpdateListener import android.animation.ValueAnimator import android.animation.ValueAnimator.AnimatorUpdateListener import android.content.Context import android.content.res.ColorStateList import android.graphics.Color import android.graphics.drawable.GradientDrawable import android.graphics.drawable.RippleDrawable import android.content.res.Configuration import android.content.res.Configuration.UI_MODE_NIGHT_YES import android.graphics.drawable.RippleDrawable import com.android.internal.R import com.android.internal.annotations.VisibleForTesting import com.android.settingslib.Utils import com.android.systemui.monet.ColorScheme import com.android.systemui.util.getColorWithAlpha /** * A [ColorTransition] is an object that updates the colors of views each time [updateColorScheme] Loading Loading @@ -106,7 +103,6 @@ class ColorSchemeTransition internal constructor( constructor(context: Context, mediaViewHolder: MediaViewHolder) : this(context, mediaViewHolder, ::AnimatingColorTransition) private var isGradientEnabled = true val bgColor = context.getColor(com.android.systemui.R.color.material_dynamic_secondary95) val surfaceColor = animatingColorTransitionFactory( bgColor, Loading Loading @@ -187,16 +183,6 @@ class ColorSchemeTransition internal constructor( mediaViewHolder.seekBar.progressBackgroundTintList = ColorStateList.valueOf(textTertiary) } val bgGradientStart = animatingColorTransitionFactory( bgColor, albumGradientPicker(::backgroundStartFromScheme, 0.25f) ) { _ -> updateAlbumGradient() } val bgGradientEnd = animatingColorTransitionFactory( bgColor, albumGradientPicker(::backgroundEndFromScheme, 0.9f) ) { _ -> updateAlbumGradient() } val colorTransitions = arrayOf( surfaceColor, colorSeamless, Loading @@ -206,37 +192,13 @@ class ColorSchemeTransition internal constructor( textPrimaryInverse, textSecondary, textTertiary, bgGradientStart, bgGradientEnd ) private fun updateAlbumGradient() { val gradient = mediaViewHolder.albumView.foreground?.mutate() if (gradient is GradientDrawable) { gradient.colors = intArrayOf( bgGradientStart?.currentColor ?: 0, bgGradientEnd?.currentColor ?: 0) } } private fun albumGradientPicker( inner: (ColorScheme) -> Int, targetAlpha: Float ): (ColorScheme) -> Int { return { scheme -> if (isGradientEnabled) getColorWithAlpha(inner(scheme), targetAlpha) else Color.TRANSPARENT } } private fun loadDefaultColor(id: Int): Int { return Utils.getColorAttr(context, id).defaultColor } fun updateColorScheme(colorScheme: ColorScheme?, enableGradient: Boolean) { isGradientEnabled = enableGradient fun updateColorScheme(colorScheme: ColorScheme?) { colorTransitions.forEach { it.updateColorScheme(colorScheme) } colorScheme?.let { mediaViewHolder.gutsViewHolder.colorScheme = colorScheme } } Loading
packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java +16 −2 Original line number Diff line number Diff line Loading @@ -38,7 +38,9 @@ import android.graphics.Rect; import android.graphics.drawable.Animatable; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; import android.graphics.drawable.Icon; import android.graphics.drawable.LayerDrawable; import android.graphics.drawable.TransitionDrawable; import android.media.session.MediaController; import android.media.session.MediaSession; Loading Loading @@ -82,6 +84,7 @@ import com.android.systemui.plugins.FalsingManager; import com.android.systemui.shared.system.SysUiStatsLog; import com.android.systemui.statusbar.NotificationLockscreenUserManager; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.util.ColorUtilKt; import com.android.systemui.util.animation.TransitionLayout; import com.android.systemui.util.time.SystemClock; Loading Loading @@ -683,7 +686,18 @@ public class MediaControlPanel { WallpaperColors wallpaperColors = WallpaperColors .fromBitmap(artworkIcon.getBitmap()); mutableColorScheme = new ColorScheme(wallpaperColors, true, Style.CONTENT); artwork = getScaledBackground(artworkIcon, width, height); Drawable albumArt = getScaledBackground(artworkIcon, width, height); GradientDrawable gradient = (GradientDrawable) mContext .getDrawable(R.drawable.qs_media_scrim); gradient.setColors(new int[] { ColorUtilKt.getColorWithAlpha( MediaColorSchemesKt.backgroundStartFromScheme(mutableColorScheme), 0.25f), ColorUtilKt.getColorWithAlpha( MediaColorSchemesKt.backgroundEndFromScheme(mutableColorScheme), 0.9f), }); artwork = new LayerDrawable(new Drawable[] { albumArt, gradient }); isArtworkBound = true; } else { // If there's no artwork, use colors from the app icon Loading Loading @@ -735,7 +749,7 @@ public class MediaControlPanel { } // Transition Colors to current color scheme mColorSchemeTransition.updateColorScheme(colorScheme, mIsArtworkBound); mColorSchemeTransition.updateColorScheme(colorScheme); // App icon - use notification icon ImageView appIconView = mMediaViewHolder.getAppIcon(); Loading
packages/SystemUI/tests/src/com/android/systemui/media/ColorSchemeTransitionTest.kt +3 −3 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.systemui.media import org.mockito.Mockito.`when` as whenever import android.animation.ValueAnimator import android.graphics.Color import android.testing.AndroidTestingRunner Loading @@ -34,6 +33,7 @@ import org.mockito.Mock import org.mockito.Mockito.never import org.mockito.Mockito.times import org.mockito.Mockito.verify import org.mockito.Mockito.`when` as whenever import org.mockito.junit.MockitoJUnit private const val DEFAULT_COLOR = Color.RED Loading Loading @@ -147,8 +147,8 @@ class ColorSchemeTransitionTest : SysuiTestCase() { @Test fun testColorSchemeTransition_update() { colorSchemeTransition.updateColorScheme(colorScheme, true) verify(mockAnimatingTransition, times(10)).updateColorScheme(colorScheme) colorSchemeTransition.updateColorScheme(colorScheme) verify(mockAnimatingTransition, times(8)).updateColorScheme(colorScheme) verify(gutsViewHolder).colorScheme = colorScheme } }
packages/SystemUI/tests/src/com/android/systemui/media/MediaControlPanelTest.kt +3 −2 Original line number Diff line number Diff line Loading @@ -21,7 +21,6 @@ import android.animation.AnimatorSet import android.app.PendingIntent import android.app.smartspace.SmartspaceAction import android.content.Context import org.mockito.Mockito.`when` as whenever import android.content.Intent import android.content.pm.ApplicationInfo import android.content.pm.PackageManager Loading Loading @@ -69,8 +68,8 @@ import com.android.systemui.statusbar.policy.KeyguardStateController import com.android.systemui.util.animation.TransitionLayout import com.android.systemui.util.concurrency.FakeExecutor import com.android.systemui.util.mockito.KotlinArgumentCaptor import com.android.systemui.util.mockito.argumentCaptor import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.argumentCaptor import com.android.systemui.util.mockito.eq import com.android.systemui.util.mockito.nullable import com.android.systemui.util.mockito.withArgCaptor Loading @@ -93,6 +92,7 @@ import org.mockito.Mockito.never import org.mockito.Mockito.reset import org.mockito.Mockito.times import org.mockito.Mockito.verify import org.mockito.Mockito.`when` as whenever import org.mockito.junit.MockitoJUnit private const val KEY = "TEST_KEY" Loading Loading @@ -355,6 +355,7 @@ public class MediaControlPanelTest : SysuiTestCase() { whenever(viewHolder.player).thenReturn(view) whenever(viewHolder.appIcon).thenReturn(appIcon) whenever(viewHolder.albumView).thenReturn(albumView) whenever(albumView.foreground).thenReturn(mock(Drawable::class.java)) whenever(viewHolder.titleText).thenReturn(titleText) whenever(viewHolder.artistText).thenReturn(artistText) whenever(seamlessBackground.getDrawable(0)).thenReturn(mock(GradientDrawable::class.java)) Loading