Apply root task for launch activity animation.
When launch task embedded, the opening targets will includes the root task and other TaskFragments, so the animation should choose the root task as the animating target. Bug: 279542263 Test: manual, launch task embedded task from notification shade several times. Change-Id: I90278e22580b9afb356ab68057bd187f9d59dbc7
This commit is contained in:
@@ -508,6 +508,26 @@ class ActivityLaunchAnimator(
|
||||
startAnimation(apps, nonApps, callback)
|
||||
}
|
||||
|
||||
private fun findRootTaskIfPossible(
|
||||
apps: Array<out RemoteAnimationTarget>?
|
||||
): RemoteAnimationTarget? {
|
||||
if (apps == null) {
|
||||
return null
|
||||
}
|
||||
var candidate: RemoteAnimationTarget? = null
|
||||
for (it in apps) {
|
||||
if (it.mode == RemoteAnimationTarget.MODE_OPENING) {
|
||||
if (it.taskInfo != null && !it.hasAnimatingParent) {
|
||||
return it
|
||||
}
|
||||
if (candidate == null) {
|
||||
candidate = it
|
||||
}
|
||||
}
|
||||
}
|
||||
return candidate
|
||||
}
|
||||
|
||||
private fun startAnimation(
|
||||
apps: Array<out RemoteAnimationTarget>?,
|
||||
nonApps: Array<out RemoteAnimationTarget>?,
|
||||
@@ -517,8 +537,7 @@ class ActivityLaunchAnimator(
|
||||
Log.d(TAG, "Remote animation started")
|
||||
}
|
||||
|
||||
val window = apps?.firstOrNull { it.mode == RemoteAnimationTarget.MODE_OPENING }
|
||||
|
||||
val window = findRootTaskIfPossible(apps)
|
||||
if (window == null) {
|
||||
Log.i(TAG, "Aborting the animation as no window is opening")
|
||||
removeTimeout()
|
||||
|
||||
Reference in New Issue
Block a user