Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit eb70e131 authored by Selim Cinek's avatar Selim Cinek
Browse files

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
parent 7d284a29
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -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);
        }
+4 −0
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ class TransitionLayout @JvmOverloads constructor(
) : ConstraintLayout(context, attrs, defStyleAttr) {

    private val originalGoneChildrenSet: MutableSet<Int> = mutableSetOf()
    private val originalViewAlphas: MutableMap<Int, Float> = 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)