1 package com.android.systemui.statusbar.phone 2 3 import com.android.systemui.animation.ActivityLaunchAnimator 4 import com.android.systemui.animation.LaunchAnimator 5 6 /** 7 * A [ActivityLaunchAnimator.Controller] that takes care of collapsing the status bar at the right 8 * time. 9 */ 10 class StatusBarLaunchAnimatorController( 11 private val delegate: ActivityLaunchAnimator.Controller, 12 private val statusBar: StatusBar, 13 private val isLaunchForActivity: Boolean = true 14 ) : ActivityLaunchAnimator.Controller by delegate { 15 override fun onIntentStarted(willAnimate: Boolean) { 16 delegate.onIntentStarted(willAnimate) 17 if (!willAnimate) { 18 statusBar.collapsePanelOnMainThread() 19 } 20 } 21 22 override fun onLaunchAnimationStart(isExpandingFullyAbove: Boolean) { 23 delegate.onLaunchAnimationStart(isExpandingFullyAbove) 24 statusBar.notificationPanelViewController.setIsLaunchAnimationRunning(true) 25 if (!isExpandingFullyAbove) { 26 statusBar.collapsePanelWithDuration( 27 ActivityLaunchAnimator.TIMINGS.totalDuration.toInt()) 28 } 29 } 30 31 override fun onLaunchAnimationEnd(isExpandingFullyAbove: Boolean) { 32 delegate.onLaunchAnimationEnd(isExpandingFullyAbove) 33 statusBar.notificationPanelViewController.setIsLaunchAnimationRunning(false) 34 statusBar.onLaunchAnimationEnd(isExpandingFullyAbove) 35 } 36 37 override fun onLaunchAnimationProgress( 38 state: LaunchAnimator.State, 39 progress: Float, 40 linearProgress: Float 41 ) { 42 delegate.onLaunchAnimationProgress(state, progress, linearProgress) 43 statusBar.notificationPanelViewController.applyLaunchAnimationProgress(linearProgress) 44 } 45 46 override fun onLaunchAnimationCancelled() { 47 delegate.onLaunchAnimationCancelled() 48 statusBar.onLaunchAnimationCancelled(isLaunchForActivity) 49 } 50 }