Merge "Update scrim controller directly with occlude animation status." into tm-qpr-dev am: e783cba9f7
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20454772 Change-Id: Ie5299777a33b730b3b47bb29fc3c75949eaba406 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -137,6 +137,7 @@ import com.android.systemui.statusbar.phone.CentralSurfaces;
|
|||||||
import com.android.systemui.statusbar.phone.DozeParameters;
|
import com.android.systemui.statusbar.phone.DozeParameters;
|
||||||
import com.android.systemui.statusbar.phone.KeyguardBypassController;
|
import com.android.systemui.statusbar.phone.KeyguardBypassController;
|
||||||
import com.android.systemui.statusbar.phone.ScreenOffAnimationController;
|
import com.android.systemui.statusbar.phone.ScreenOffAnimationController;
|
||||||
|
import com.android.systemui.statusbar.phone.ScrimController;
|
||||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||||
import com.android.systemui.statusbar.policy.UserSwitcherController;
|
import com.android.systemui.statusbar.policy.UserSwitcherController;
|
||||||
import com.android.systemui.util.DeviceConfigProxy;
|
import com.android.systemui.util.DeviceConfigProxy;
|
||||||
@@ -851,6 +852,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
|
|||||||
@Override
|
@Override
|
||||||
public void onLaunchAnimationStart(boolean isExpandingFullyAbove) {
|
public void onLaunchAnimationStart(boolean isExpandingFullyAbove) {
|
||||||
mOccludeAnimationPlaying = true;
|
mOccludeAnimationPlaying = true;
|
||||||
|
mScrimControllerLazy.get().setOccludeAnimationPlaying(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -861,6 +863,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
|
|||||||
|
|
||||||
// Ensure keyguard state is set correctly if we're cancelled.
|
// Ensure keyguard state is set correctly if we're cancelled.
|
||||||
mCentralSurfaces.updateIsKeyguard();
|
mCentralSurfaces.updateIsKeyguard();
|
||||||
|
mScrimControllerLazy.get().setOccludeAnimationPlaying(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -874,6 +877,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
|
|||||||
// Hide the keyguard now that we're done launching the occluding activity over
|
// Hide the keyguard now that we're done launching the occluding activity over
|
||||||
// it.
|
// it.
|
||||||
mCentralSurfaces.updateIsKeyguard();
|
mCentralSurfaces.updateIsKeyguard();
|
||||||
|
mScrimControllerLazy.get().setOccludeAnimationPlaying(false);
|
||||||
|
|
||||||
mInteractionJankMonitor.end(CUJ_LOCKSCREEN_OCCLUSION);
|
mInteractionJankMonitor.end(CUJ_LOCKSCREEN_OCCLUSION);
|
||||||
}
|
}
|
||||||
@@ -1138,6 +1142,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
|
|||||||
private ScreenOnCoordinator mScreenOnCoordinator;
|
private ScreenOnCoordinator mScreenOnCoordinator;
|
||||||
|
|
||||||
private Lazy<ActivityLaunchAnimator> mActivityLaunchAnimator;
|
private Lazy<ActivityLaunchAnimator> mActivityLaunchAnimator;
|
||||||
|
private Lazy<ScrimController> mScrimControllerLazy;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Injected constructor. See {@link KeyguardModule}.
|
* Injected constructor. See {@link KeyguardModule}.
|
||||||
@@ -1168,7 +1173,8 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
|
|||||||
DreamOverlayStateController dreamOverlayStateController,
|
DreamOverlayStateController dreamOverlayStateController,
|
||||||
Lazy<ShadeController> shadeControllerLazy,
|
Lazy<ShadeController> shadeControllerLazy,
|
||||||
Lazy<NotificationShadeWindowController> notificationShadeWindowControllerLazy,
|
Lazy<NotificationShadeWindowController> notificationShadeWindowControllerLazy,
|
||||||
Lazy<ActivityLaunchAnimator> activityLaunchAnimator) {
|
Lazy<ActivityLaunchAnimator> activityLaunchAnimator,
|
||||||
|
Lazy<ScrimController> scrimControllerLazy) {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mUserTracker = userTracker;
|
mUserTracker = userTracker;
|
||||||
mFalsingCollector = falsingCollector;
|
mFalsingCollector = falsingCollector;
|
||||||
@@ -1213,6 +1219,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
|
|||||||
mDreamOverlayStateController = dreamOverlayStateController;
|
mDreamOverlayStateController = dreamOverlayStateController;
|
||||||
|
|
||||||
mActivityLaunchAnimator = activityLaunchAnimator;
|
mActivityLaunchAnimator = activityLaunchAnimator;
|
||||||
|
mScrimControllerLazy = scrimControllerLazy;
|
||||||
|
|
||||||
mPowerButtonY = context.getResources().getDimensionPixelSize(
|
mPowerButtonY = context.getResources().getDimensionPixelSize(
|
||||||
R.dimen.physical_power_button_center_screen_location_y);
|
R.dimen.physical_power_button_center_screen_location_y);
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ import com.android.systemui.statusbar.NotificationShadeWindowController;
|
|||||||
import com.android.systemui.statusbar.SysuiStatusBarStateController;
|
import com.android.systemui.statusbar.SysuiStatusBarStateController;
|
||||||
import com.android.systemui.statusbar.phone.DozeParameters;
|
import com.android.systemui.statusbar.phone.DozeParameters;
|
||||||
import com.android.systemui.statusbar.phone.ScreenOffAnimationController;
|
import com.android.systemui.statusbar.phone.ScreenOffAnimationController;
|
||||||
|
import com.android.systemui.statusbar.phone.ScrimController;
|
||||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||||
import com.android.systemui.statusbar.policy.UserSwitcherController;
|
import com.android.systemui.statusbar.policy.UserSwitcherController;
|
||||||
import com.android.systemui.util.DeviceConfigProxy;
|
import com.android.systemui.util.DeviceConfigProxy;
|
||||||
@@ -113,7 +114,8 @@ public class KeyguardModule {
|
|||||||
DreamOverlayStateController dreamOverlayStateController,
|
DreamOverlayStateController dreamOverlayStateController,
|
||||||
Lazy<ShadeController> shadeController,
|
Lazy<ShadeController> shadeController,
|
||||||
Lazy<NotificationShadeWindowController> notificationShadeWindowController,
|
Lazy<NotificationShadeWindowController> notificationShadeWindowController,
|
||||||
Lazy<ActivityLaunchAnimator> activityLaunchAnimator) {
|
Lazy<ActivityLaunchAnimator> activityLaunchAnimator,
|
||||||
|
Lazy<ScrimController> scrimControllerLazy) {
|
||||||
return new KeyguardViewMediator(
|
return new KeyguardViewMediator(
|
||||||
context,
|
context,
|
||||||
userTracker,
|
userTracker,
|
||||||
@@ -142,7 +144,8 @@ public class KeyguardModule {
|
|||||||
dreamOverlayStateController,
|
dreamOverlayStateController,
|
||||||
shadeController,
|
shadeController,
|
||||||
notificationShadeWindowController,
|
notificationShadeWindowController,
|
||||||
activityLaunchAnimator);
|
activityLaunchAnimator,
|
||||||
|
scrimControllerLazy);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** */
|
/** */
|
||||||
|
|||||||
@@ -109,6 +109,12 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
|
|||||||
public static final int OPAQUE = 2;
|
public static final int OPAQUE = 2;
|
||||||
private boolean mClipsQsScrim;
|
private boolean mClipsQsScrim;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether an activity is launching over the lockscreen. During the launch animation, we want to
|
||||||
|
* delay certain scrim changes until after the animation ends.
|
||||||
|
*/
|
||||||
|
private boolean mOccludeAnimationPlaying = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The amount of progress we are currently in if we're transitioning to the full shade.
|
* The amount of progress we are currently in if we're transitioning to the full shade.
|
||||||
* 0.0f means we're not transitioning yet, while 1 means we're all the way in the full
|
* 0.0f means we're not transitioning yet, while 1 means we're all the way in the full
|
||||||
@@ -733,6 +739,11 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
|
|||||||
return mClipsQsScrim;
|
return mClipsQsScrim;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setOccludeAnimationPlaying(boolean occludeAnimationPlaying) {
|
||||||
|
mOccludeAnimationPlaying = occludeAnimationPlaying;
|
||||||
|
applyAndDispatchState();
|
||||||
|
}
|
||||||
|
|
||||||
private void setOrAdaptCurrentAnimation(@Nullable View scrim) {
|
private void setOrAdaptCurrentAnimation(@Nullable View scrim) {
|
||||||
if (scrim == null) {
|
if (scrim == null) {
|
||||||
return;
|
return;
|
||||||
@@ -772,11 +783,15 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (mState == ScrimState.UNLOCKED || mState == ScrimState.DREAMING) {
|
if (mState == ScrimState.UNLOCKED || mState == ScrimState.DREAMING) {
|
||||||
// Darken scrim as you pull down the shade when unlocked, unless the shade is expanding
|
final boolean occluding =
|
||||||
// because we're doing the screen off animation OR the shade is collapsing because
|
mOccludeAnimationPlaying || mState.mLaunchingAffordanceWithPreview;
|
||||||
// we're playing the unlock animation
|
|
||||||
|
// Darken scrim as it's pulled down while unlocked. If we're unlocked but playing the
|
||||||
|
// screen off/occlusion animations, ignore expansion changes while those animations
|
||||||
|
// play.
|
||||||
if (!mScreenOffAnimationController.shouldExpandNotifications()
|
if (!mScreenOffAnimationController.shouldExpandNotifications()
|
||||||
&& !mAnimatingPanelExpansionOnUnlock) {
|
&& !mAnimatingPanelExpansionOnUnlock
|
||||||
|
&& !occluding) {
|
||||||
float behindFraction = getInterpolatedFraction();
|
float behindFraction = getInterpolatedFraction();
|
||||||
behindFraction = (float) Math.pow(behindFraction, 0.8f);
|
behindFraction = (float) Math.pow(behindFraction, 0.8f);
|
||||||
if (mClipsQsScrim) {
|
if (mClipsQsScrim) {
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ import com.android.systemui.statusbar.SysuiStatusBarStateController;
|
|||||||
import com.android.systemui.statusbar.phone.CentralSurfaces;
|
import com.android.systemui.statusbar.phone.CentralSurfaces;
|
||||||
import com.android.systemui.statusbar.phone.DozeParameters;
|
import com.android.systemui.statusbar.phone.DozeParameters;
|
||||||
import com.android.systemui.statusbar.phone.ScreenOffAnimationController;
|
import com.android.systemui.statusbar.phone.ScreenOffAnimationController;
|
||||||
|
import com.android.systemui.statusbar.phone.ScrimController;
|
||||||
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
|
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
|
||||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||||
import com.android.systemui.statusbar.policy.UserSwitcherController;
|
import com.android.systemui.statusbar.policy.UserSwitcherController;
|
||||||
@@ -112,6 +113,7 @@ public class KeyguardViewMediatorTest extends SysuiTestCase {
|
|||||||
private @Mock Lazy<NotificationShadeWindowController> mNotificationShadeWindowControllerLazy;
|
private @Mock Lazy<NotificationShadeWindowController> mNotificationShadeWindowControllerLazy;
|
||||||
private @Mock DreamOverlayStateController mDreamOverlayStateController;
|
private @Mock DreamOverlayStateController mDreamOverlayStateController;
|
||||||
private @Mock ActivityLaunchAnimator mActivityLaunchAnimator;
|
private @Mock ActivityLaunchAnimator mActivityLaunchAnimator;
|
||||||
|
private @Mock ScrimController mScrimController;
|
||||||
private DeviceConfigProxy mDeviceConfig = new DeviceConfigProxyFake();
|
private DeviceConfigProxy mDeviceConfig = new DeviceConfigProxyFake();
|
||||||
private FakeExecutor mUiBgExecutor = new FakeExecutor(new FakeSystemClock());
|
private FakeExecutor mUiBgExecutor = new FakeExecutor(new FakeSystemClock());
|
||||||
|
|
||||||
@@ -314,7 +316,8 @@ public class KeyguardViewMediatorTest extends SysuiTestCase {
|
|||||||
mDreamOverlayStateController,
|
mDreamOverlayStateController,
|
||||||
() -> mShadeController,
|
() -> mShadeController,
|
||||||
mNotificationShadeWindowControllerLazy,
|
mNotificationShadeWindowControllerLazy,
|
||||||
() -> mActivityLaunchAnimator);
|
() -> mActivityLaunchAnimator,
|
||||||
|
() -> mScrimController);
|
||||||
mViewMediator.start();
|
mViewMediator.start();
|
||||||
|
|
||||||
mViewMediator.registerCentralSurfaces(mCentralSurfaces, null, null, null, null, null);
|
mViewMediator.registerCentralSurfaces(mCentralSurfaces, null, null, null, null, null);
|
||||||
|
|||||||
Reference in New Issue
Block a user