From eb70e1310a3171ad6e4c5ca03037b1db78b7d70b Mon Sep 17 00:00:00 2001 From: Selim Cinek Date: Fri, 12 Jun 2020 19:04:42 -0700 Subject: Fixed an issue where the Device output chip lost its alpha Since the alpha is determined by the view state, the alpha we set on the view was dropped. We now set it on the constraintSet instead and ensure that the state is properly loaded from the layout when measuring. Fixes: 156875717 Test: Cast a player, observe device chip being faded Change-Id: If3f856390542113aaac668799d9b019e064ec909 --- .../src/com/android/systemui/media/MediaControlPanel.java | 11 +++++++---- .../com/android/systemui/util/animation/TransitionLayout.kt | 4 ++++ 2 files changed, 11 insertions(+), 4 deletions(-) (limited to 'packages/SystemUI/src') diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java index b8c1842a1780..a6bbf0b8082c 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java +++ b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java @@ -256,16 +256,18 @@ public class MediaControlPanel { rect.setColor(Color.TRANSPARENT); final MediaDeviceData device = data.getDevice(); + int seamlessId = mViewHolder.getSeamless().getId(); if (device != null && !device.getEnabled()) { mViewHolder.getSeamless().setEnabled(false); - // TODO(b/156875717): setEnabled should cause the alpha to change. - mViewHolder.getSeamless().setAlpha(0.38f); + expandedSet.setAlpha(seamlessId, 0.38f); + collapsedSet.setAlpha(seamlessId, 0.38f); iconView.setImageResource(R.drawable.ic_hardware_speaker); iconView.setVisibility(View.VISIBLE); deviceName.setText(R.string.media_seamless_remote_device); } else if (device != null) { mViewHolder.getSeamless().setEnabled(true); - mViewHolder.getSeamless().setAlpha(1f); + expandedSet.setAlpha(seamlessId, 1.0f); + collapsedSet.setAlpha(seamlessId, 1.0f); Drawable icon = device.getIcon(); iconView.setVisibility(View.VISIBLE); @@ -281,7 +283,8 @@ public class MediaControlPanel { // Reset to default Log.w(TAG, "device is null. Not binding output chip."); mViewHolder.getSeamless().setEnabled(true); - mViewHolder.getSeamless().setAlpha(1f); + expandedSet.setAlpha(seamlessId, 1.0f); + collapsedSet.setAlpha(seamlessId, 1.0f); iconView.setVisibility(View.GONE); deviceName.setText(com.android.internal.R.string.ext_media_seamless_action); } diff --git a/packages/SystemUI/src/com/android/systemui/util/animation/TransitionLayout.kt b/packages/SystemUI/src/com/android/systemui/util/animation/TransitionLayout.kt index 701ff5ecf8a1..806d9d8e158a 100644 --- a/packages/SystemUI/src/com/android/systemui/util/animation/TransitionLayout.kt +++ b/packages/SystemUI/src/com/android/systemui/util/animation/TransitionLayout.kt @@ -37,6 +37,7 @@ class TransitionLayout @JvmOverloads constructor( ) : ConstraintLayout(context, attrs, defStyleAttr) { private val originalGoneChildrenSet: MutableSet = mutableSetOf() + private val originalViewAlphas: MutableMap = mutableMapOf() private var measureAsConstraint: Boolean = false private var currentState: TransitionViewState = TransitionViewState() private var updateScheduled = false @@ -67,6 +68,7 @@ class TransitionLayout @JvmOverloads constructor( if (child.visibility == GONE) { originalGoneChildrenSet.add(child.id) } + originalViewAlphas[child.id] = child.alpha } } @@ -198,6 +200,8 @@ class TransitionLayout @JvmOverloads constructor( if (originalGoneChildrenSet.contains(child.id)) { child.visibility = View.GONE } + // Reset the alphas, to only have the alphas present from the constraintset + child.alpha = originalViewAlphas[child.id] ?: 1.0f } // Let's now apply the constraintSet to get the full state constraintSet.applyTo(this) -- cgit v1.2.3-59-g8ed1b