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

Commit 3c20d895 authored by Selim Cinek's avatar Selim Cinek
Browse files

Fixed an issue where the media would reappear animated

View.isShown doesn't take into account if a view is
faded away so we assumed that we should animate
the transition. We're now excluding those views.
This was reproducible when unlocking from the
bouncer with media present.

Fixes: 160217095
Test: add media, swipe up, unlock with pin or fingerprint
Change-Id: I3b3e65ebefc4f1f11b357cf9a4e5c00dbd4b6723
parent a0447977
Loading
Loading
Loading
Loading
+23 −1
Original line number Diff line number Diff line
@@ -39,6 +39,28 @@ import com.android.systemui.util.animation.UniqueObjectHostView
import javax.inject.Inject
import javax.inject.Singleton

/**
 * Similarly to isShown but also excludes views that have 0 alpha
 */
val View.isShownNotFaded: Boolean
    get() {
        var current: View = this
        while (true) {
            if (current.visibility != View.VISIBLE) {
                return false
            }
            if (current.alpha == 0.0f) {
                return false
            }
            val parent = current.parent ?: return false // We are not attached to the view root
            if (parent !is View) {
                // we reached the viewroot, hurray
                return true
            }
            current = parent
        }
    }

/**
 * This manager is responsible for placement of the unique media view between the different hosts
 * and animate the positions of the views to achieve seamless transitions.
@@ -368,7 +390,7 @@ class MediaHierarchyManager @Inject constructor(
            // non-trivial reattaching logic happening that will make the view not-shown earlier
            return true
        }
        return mediaFrame.isShown || animator.isRunning || animationPending
        return mediaFrame.isShownNotFaded || animator.isRunning || animationPending
    }

    private fun adjustAnimatorForTransition(desiredLocation: Int, previousLocation: Int) {