diff options
Diffstat (limited to 'packages')
4 files changed, 32 insertions, 20 deletions
diff --git a/packages/SystemUI/res/anim/navbar_fade_in.xml b/packages/SystemUI/res/anim/navbar_fade_in.xml index e3429e6..7051730 100644 --- a/packages/SystemUI/res/anim/navbar_fade_in.xml +++ b/packages/SystemUI/res/anim/navbar_fade_in.xml @@ -19,4 +19,5 @@ android:fromAlpha="0.0" android:toAlpha="1.0" android:interpolator="@android:interpolator/linear_out_slow_in" + android:startDelay="32" android:duration="200"/> diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index 89f0071..649dad3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -3441,7 +3441,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, .alpha(0f) .setStartDelay(0) .setDuration(FADE_KEYGUARD_DURATION_PULSING) - .setInterpolator(ScrimController.KEYGUARD_FADE_OUT_INTERPOLATOR); + .setInterpolator(ScrimController.KEYGUARD_FADE_OUT_INTERPOLATOR) + .start(); } /** diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java index 5b009ee..cc6f396 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java @@ -22,7 +22,6 @@ import android.animation.PropertyValuesHolder; import android.animation.ValueAnimator; import android.content.Context; import android.graphics.Color; -import android.util.Log; import android.view.View; import android.view.ViewTreeObserver; import android.view.animation.DecelerateInterpolator; @@ -87,6 +86,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, private float mTopHeadsUpDragAmount; private View mDraggedHeadsUpView; private boolean mForceHideScrims; + private boolean mSkipFirstFrame; public ScrimController(ScrimView scrimBehind, ScrimView scrimInFront, View headsUpScrim, boolean scrimSrcEnabled) { @@ -134,14 +134,20 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, scheduleUpdate(); } - public void animateKeyguardFadingOut(long delay, long duration, Runnable onAnimationFinished) { + public void animateKeyguardFadingOut(long delay, long duration, Runnable onAnimationFinished, + boolean skipFirstFrame) { mWakeAndUnlocking = false; mAnimateKeyguardFadingOut = true; mDurationOverride = duration; mAnimationDelay = delay; mAnimateChange = true; + mSkipFirstFrame = skipFirstFrame; mOnAnimationFinished = onAnimationFinished; scheduleUpdate(); + + // No need to wait for the next frame to be drawn for this case - onPreDraw will execute + // the changes we just scheduled. + onPreDraw(); } public void abortKeyguardFadingOut() { @@ -339,6 +345,9 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, } }); anim.start(); + if (mSkipFirstFrame) { + anim.setCurrentPlayTime(16); + } scrim.setTag(TAG_KEY_ANIM, anim); scrim.setTag(TAG_KEY_ANIM_TARGET, target); } @@ -354,6 +363,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, updateScrims(); mDurationOverride = -1; mAnimationDelay = 0; + mSkipFirstFrame = false; // Make sure that we always call the listener even if we didn't start an animation. endAnimateKeyguardFadingOut(false /* force */); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java index 7e83f26..59ee5c5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java @@ -74,7 +74,6 @@ public class StatusBarKeyguardViewManager { private boolean mLastOccluded; private boolean mLastBouncerShowing; private boolean mLastBouncerDismissible; - private boolean mLastDeferScrimFadeOut; private OnDismissAction mAfterKeyguardGoneAction; private boolean mDeviceWillWakeUp; private boolean mDeferScrimFadeOut; @@ -184,7 +183,8 @@ public class StatusBarKeyguardViewManager { mScreenTurnedOn = true; if (mDeferScrimFadeOut) { mDeferScrimFadeOut = false; - animateScrimControllerKeyguardFadingOut(0, WAKE_AND_UNLOCK_SCRIM_FADEOUT_DURATION_MS); + animateScrimControllerKeyguardFadingOut(0, WAKE_AND_UNLOCK_SCRIM_FADEOUT_DURATION_MS, + true /* skipFirstFrame */); updateStates(); } mPhoneStatusBar.onScreenTurnedOn(); @@ -264,7 +264,8 @@ public class StatusBarKeyguardViewManager { updateStates(); mScrimController.animateKeyguardFadingOut( PhoneStatusBar.FADE_KEYGUARD_START_DELAY, - PhoneStatusBar.FADE_KEYGUARD_DURATION, null); + PhoneStatusBar.FADE_KEYGUARD_DURATION, null, + false /* skipFirstFrame */); } }, new Runnable() { @Override @@ -287,7 +288,7 @@ public class StatusBarKeyguardViewManager { public void run() { mPhoneStatusBar.hideKeyguard(); } - }); + }, false /* skipFirstFrame */); } else { mFingerprintUnlockController.startKeyguardFadingAway(); mPhoneStatusBar.setKeyguardFadingAway(startTime, delay, fadeoutDuration); @@ -302,10 +303,12 @@ public class StatusBarKeyguardViewManager { // Screen is already on, don't defer with fading out. animateScrimControllerKeyguardFadingOut(0, - WAKE_AND_UNLOCK_SCRIM_FADEOUT_DURATION_MS); + WAKE_AND_UNLOCK_SCRIM_FADEOUT_DURATION_MS, + true /* skipFirstFrame */); } } else { - animateScrimControllerKeyguardFadingOut(delay, fadeoutDuration); + animateScrimControllerKeyguardFadingOut(delay, fadeoutDuration, + false /* skipFirstFrame */); } } else { mScrimController.animateGoingToFullShade(delay, fadeoutDuration); @@ -320,12 +323,14 @@ public class StatusBarKeyguardViewManager { } } - private void animateScrimControllerKeyguardFadingOut(long delay, long duration) { - animateScrimControllerKeyguardFadingOut(delay, duration, null /* endRunnable */); + private void animateScrimControllerKeyguardFadingOut(long delay, long duration, + boolean skipFirstFrame) { + animateScrimControllerKeyguardFadingOut(delay, duration, null /* endRunnable */, + skipFirstFrame); } private void animateScrimControllerKeyguardFadingOut(long delay, long duration, - final Runnable endRunnable) { + final Runnable endRunnable, boolean skipFirstFrame) { Trace.asyncTraceBegin(Trace.TRACE_TAG_VIEW, "Fading out", 0); mScrimController.animateKeyguardFadingOut(delay, duration, new Runnable() { @Override @@ -340,7 +345,7 @@ public class StatusBarKeyguardViewManager { ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN); Trace.asyncTraceEnd(Trace.TRACE_TAG_VIEW, "Fading out", 0); } - }); + }, skipFirstFrame); } private void executeAfterKeyguardGoneAction() { @@ -414,7 +419,6 @@ public class StatusBarKeyguardViewManager { boolean occluded = mOccluded; boolean bouncerShowing = mBouncer.isShowing(); boolean bouncerDismissible = !mBouncer.isFullscreenBouncer(); - boolean deferScrimFadeOut = mDeferScrimFadeOut; if ((bouncerDismissible || !showing) != (mLastBouncerDismissible || !mLastShowing) || mFirstUpdate) { @@ -425,11 +429,8 @@ public class StatusBarKeyguardViewManager { } } - // Hide navigation bar on Keyguard but not on bouncer and also if we are deferring a scrim - // fade out, i.e. we are waiting for the screen to have turned on. - boolean navBarVisible = !deferScrimFadeOut && (!(showing && !occluded) || bouncerShowing); - boolean lastNavBarVisible = !mLastDeferScrimFadeOut && (!(mLastShowing && !mLastOccluded) - || mLastBouncerShowing); + boolean navBarVisible = (!(showing && !occluded) || bouncerShowing); + boolean lastNavBarVisible = (!(mLastShowing && !mLastOccluded) || mLastBouncerShowing); if (navBarVisible != lastNavBarVisible || mFirstUpdate) { if (mPhoneStatusBar.getNavigationBarView() != null) { if (navBarVisible) { @@ -464,7 +465,6 @@ public class StatusBarKeyguardViewManager { mFirstUpdate = false; mLastShowing = showing; mLastOccluded = occluded; - mLastDeferScrimFadeOut = deferScrimFadeOut; mLastBouncerShowing = bouncerShowing; mLastBouncerDismissible = bouncerDismissible; |