diff options
| author | 2020-07-01 23:11:45 +0000 | |
|---|---|---|
| committer | 2020-07-01 23:11:45 +0000 | |
| commit | c3eaaa9b2c70e1ab25174043b080b58b27f70261 (patch) | |
| tree | c80d35d35d4ba0412c1217c1d1caa0d19ee8f14b | |
| parent | d2f6974ca7cb0cd1b9eafc356d2f9ea3ccd015dd (diff) | |
| parent | 93920d3b10e2d1bd30e996c76205529156bbb600 (diff) | |
Merge "Fixed an issue where the media would reappear animated" into rvc-dev am: 93920d3b10
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12051979
Change-Id: I4d3b8ece97fbcf5a61bc80c3a8085706e04c3d5b
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/media/MediaHierarchyManager.kt | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaHierarchyManager.kt b/packages/SystemUI/src/com/android/systemui/media/MediaHierarchyManager.kt index 3d2b72d8fd83..fc33391a9ad1 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaHierarchyManager.kt +++ b/packages/SystemUI/src/com/android/systemui/media/MediaHierarchyManager.kt @@ -40,6 +40,28 @@ 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) { |