Merge "Fix status bar flickering" into qt-qpr1-dev
This commit is contained in:
@@ -96,6 +96,7 @@ import com.android.systemui.statusbar.notification.stack.AnimationProperties;
|
|||||||
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout;
|
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout;
|
||||||
import com.android.systemui.statusbar.notification.stack.StackStateAnimator;
|
import com.android.systemui.statusbar.notification.stack.StackStateAnimator;
|
||||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||||
|
import com.android.systemui.statusbar.policy.KeyguardMonitor;
|
||||||
import com.android.systemui.statusbar.policy.KeyguardUserSwitcher;
|
import com.android.systemui.statusbar.policy.KeyguardUserSwitcher;
|
||||||
import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener;
|
import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener;
|
||||||
import com.android.systemui.statusbar.policy.ZenModeController;
|
import com.android.systemui.statusbar.policy.ZenModeController;
|
||||||
@@ -169,12 +170,22 @@ public class NotificationPanelView extends PanelView implements
|
|||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
final KeyguardUpdateMonitorCallback mKeyguardUpdateCallback =
|
final KeyguardUpdateMonitorCallback mKeyguardUpdateCallback =
|
||||||
new KeyguardUpdateMonitorCallback() {
|
new KeyguardUpdateMonitorCallback() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBiometricAuthenticated(int userId,
|
||||||
|
BiometricSourceType biometricSourceType) {
|
||||||
|
if (mFirstBypassAttempt && mUpdateMonitor.isUnlockingWithBiometricAllowed()) {
|
||||||
|
mDelayShowingKeyguardStatusBar = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBiometricRunningStateChanged(boolean running,
|
public void onBiometricRunningStateChanged(boolean running,
|
||||||
BiometricSourceType biometricSourceType) {
|
BiometricSourceType biometricSourceType) {
|
||||||
boolean keyguardOrShadeLocked = mBarState == StatusBarState.KEYGUARD
|
boolean keyguardOrShadeLocked = mBarState == StatusBarState.KEYGUARD
|
||||||
|| mBarState == StatusBarState.SHADE_LOCKED;
|
|| mBarState == StatusBarState.SHADE_LOCKED;
|
||||||
if (!running && mFirstBypassAttempt && keyguardOrShadeLocked && !mDozing) {
|
if (!running && mFirstBypassAttempt && keyguardOrShadeLocked && !mDozing
|
||||||
|
&& !mDelayShowingKeyguardStatusBar) {
|
||||||
mFirstBypassAttempt = false;
|
mFirstBypassAttempt = false;
|
||||||
animateKeyguardStatusBarIn(StackStateAnimator.ANIMATION_DURATION_STANDARD);
|
animateKeyguardStatusBarIn(StackStateAnimator.ANIMATION_DURATION_STANDARD);
|
||||||
}
|
}
|
||||||
@@ -183,6 +194,17 @@ public class NotificationPanelView extends PanelView implements
|
|||||||
@Override
|
@Override
|
||||||
public void onFinishedGoingToSleep(int why) {
|
public void onFinishedGoingToSleep(int why) {
|
||||||
mFirstBypassAttempt = mKeyguardBypassController.getBypassEnabled();
|
mFirstBypassAttempt = mKeyguardBypassController.getBypassEnabled();
|
||||||
|
mDelayShowingKeyguardStatusBar = false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
private final KeyguardMonitor.Callback mKeyguardMonitorCallback =
|
||||||
|
new KeyguardMonitor.Callback() {
|
||||||
|
@Override
|
||||||
|
public void onKeyguardFadingAwayChanged() {
|
||||||
|
if (!mKeyguardMonitor.isKeyguardFadingAway()) {
|
||||||
|
mFirstBypassAttempt = false;
|
||||||
|
mDelayShowingKeyguardStatusBar = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -404,7 +426,17 @@ public class NotificationPanelView extends PanelView implements
|
|||||||
private boolean mShowingKeyguardHeadsUp;
|
private boolean mShowingKeyguardHeadsUp;
|
||||||
private boolean mAllowExpandForSmallExpansion;
|
private boolean mAllowExpandForSmallExpansion;
|
||||||
private Runnable mExpandAfterLayoutRunnable;
|
private Runnable mExpandAfterLayoutRunnable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If face auth with bypass is running for the first time after you turn on the screen.
|
||||||
|
* (From aod or screen off)
|
||||||
|
*/
|
||||||
private boolean mFirstBypassAttempt;
|
private boolean mFirstBypassAttempt;
|
||||||
|
/**
|
||||||
|
* If auth happens successfully during {@code mFirstBypassAttempt}, and we should wait until
|
||||||
|
* the keyguard is dismissed to show the status bar.
|
||||||
|
*/
|
||||||
|
private boolean mDelayShowingKeyguardStatusBar;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public NotificationPanelView(@Named(VIEW_CONTEXT) Context context, AttributeSet attrs,
|
public NotificationPanelView(@Named(VIEW_CONTEXT) Context context, AttributeSet attrs,
|
||||||
@@ -436,6 +468,7 @@ public class NotificationPanelView extends PanelView implements
|
|||||||
mKeyguardBypassController = bypassController;
|
mKeyguardBypassController = bypassController;
|
||||||
mUpdateMonitor = KeyguardUpdateMonitor.getInstance(mContext);
|
mUpdateMonitor = KeyguardUpdateMonitor.getInstance(mContext);
|
||||||
mFirstBypassAttempt = mKeyguardBypassController.getBypassEnabled();
|
mFirstBypassAttempt = mKeyguardBypassController.getBypassEnabled();
|
||||||
|
mKeyguardMonitor.addCallback(mKeyguardMonitorCallback);
|
||||||
dynamicPrivacyController.addListener(this);
|
dynamicPrivacyController.addListener(this);
|
||||||
|
|
||||||
mBottomAreaShadeAlphaAnimator = ValueAnimator.ofFloat(1f, 0);
|
mBottomAreaShadeAlphaAnimator = ValueAnimator.ofFloat(1f, 0);
|
||||||
@@ -2263,7 +2296,8 @@ public class NotificationPanelView extends PanelView implements
|
|||||||
* mKeyguardStatusBarAnimateAlpha;
|
* mKeyguardStatusBarAnimateAlpha;
|
||||||
newAlpha *= 1.0f - mKeyguardHeadsUpShowingAmount;
|
newAlpha *= 1.0f - mKeyguardHeadsUpShowingAmount;
|
||||||
mKeyguardStatusBar.setAlpha(newAlpha);
|
mKeyguardStatusBar.setAlpha(newAlpha);
|
||||||
boolean hideForBypass = mFirstBypassAttempt && mUpdateMonitor.shouldListenForFace();
|
boolean hideForBypass = mFirstBypassAttempt && mUpdateMonitor.shouldListenForFace()
|
||||||
|
|| mDelayShowingKeyguardStatusBar;
|
||||||
mKeyguardStatusBar.setVisibility(newAlpha != 0f && !mDozing && !hideForBypass
|
mKeyguardStatusBar.setVisibility(newAlpha != 0f && !mDozing && !hideForBypass
|
||||||
? VISIBLE : INVISIBLE);
|
? VISIBLE : INVISIBLE);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user