diff options
| author | 2020-07-01 23:10:54 +0000 | |
|---|---|---|
| committer | 2020-07-01 23:10:54 +0000 | |
| commit | 6455510f710d232e3328bd10ed058e8fee49b4cc (patch) | |
| tree | 7fdd5d6f2a957dba5edfbfd3689cf0b6d4c42f41 | |
| parent | 299d544b6601c0161e9b876ae33a0969a2701108 (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: I4c67d68500f22473df038437f17dbaf34cbabdd7
| -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) { |