Speedup unlock when authenticating with fingerprint
Change-Id: Ib76ff7a2a42cf6fc77848ef799c2a13b77cfebb2
This commit is contained in:
@@ -171,6 +171,11 @@ public class KeyguardViewMediator extends SystemUI {
|
||||
*/
|
||||
private static final String KEYGUARD_ANALYTICS_SETTING = "keyguard_analytics";
|
||||
|
||||
/**
|
||||
* How much faster we collapse the lockscreen when authenticating with fingerprint.
|
||||
*/
|
||||
private static final float FINGERPRINT_COLLAPSE_SPEEDUP_FACTOR = 1.3f;
|
||||
|
||||
/** The stream type that the lock sounds are tied to. */
|
||||
private int mUiSoundsStreamType;
|
||||
|
||||
@@ -441,7 +446,8 @@ public class KeyguardViewMediator extends SystemUI {
|
||||
if (mStatusBarKeyguardViewManager.isBouncerShowing()) {
|
||||
mViewMediatorCallback.keyguardDone(true);
|
||||
} else {
|
||||
mStatusBarKeyguardViewManager.animateCollapsePanels();
|
||||
mStatusBarKeyguardViewManager.animateCollapsePanels(
|
||||
FINGERPRINT_COLLAPSE_SPEEDUP_FACTOR);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -511,9 +511,10 @@ public class NotificationPanelView extends PanelView implements
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void flingToHeight(float vel, boolean expand, float target) {
|
||||
protected void flingToHeight(float vel, boolean expand, float target,
|
||||
float collapseSpeedUpFactor) {
|
||||
mHeadsUpTouchHelper.notifyFling(!expand);
|
||||
super.flingToHeight(vel, expand, target);
|
||||
super.flingToHeight(vel, expand, target, collapseSpeedUpFactor);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -140,7 +140,7 @@ public class PanelBar extends FrameLayout {
|
||||
mPanelHolder.setSelectedPanel(mTouchingPanel);
|
||||
for (PanelView pv : mPanels) {
|
||||
if (pv != panel) {
|
||||
pv.collapse(false /* delayed */);
|
||||
pv.collapse(false /* delayed */, 1.0f /* speedUpFactor */);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -186,11 +186,11 @@ public class PanelBar extends FrameLayout {
|
||||
(fullyOpenedPanel!=null)?" fullyOpened":"", fullyClosed?" fullyClosed":"");
|
||||
}
|
||||
|
||||
public void collapseAllPanels(boolean animate, boolean delayed) {
|
||||
public void collapseAllPanels(boolean animate, boolean delayed, float speedUpFactor) {
|
||||
boolean waiting = false;
|
||||
for (PanelView pv : mPanels) {
|
||||
if (animate && !pv.isFullyCollapsed()) {
|
||||
pv.collapse(delayed);
|
||||
pv.collapse(delayed, speedUpFactor);
|
||||
waiting = true;
|
||||
} else {
|
||||
pv.resetViews();
|
||||
|
||||
@@ -101,6 +101,12 @@ public abstract class PanelView extends FrameLayout {
|
||||
|
||||
private boolean mPeekPending;
|
||||
private boolean mCollapseAfterPeek;
|
||||
|
||||
/**
|
||||
* Speed-up factor to be used when {@link #mFlingCollapseRunnable} runs the next time.
|
||||
*/
|
||||
private float mNextCollapseSpeedUpFactor = 1.0f;
|
||||
|
||||
private boolean mExpanding;
|
||||
private boolean mGestureWaitForTouchSlop;
|
||||
private Runnable mPeekRunnable = new Runnable() {
|
||||
@@ -164,7 +170,7 @@ public abstract class PanelView extends FrameLayout {
|
||||
postOnAnimation(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
collapse(false /* delayed */);
|
||||
collapse(false /* delayed */, 1.0f /* speedUpFactor */);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -563,12 +569,17 @@ public abstract class PanelView extends FrameLayout {
|
||||
}
|
||||
|
||||
protected void fling(float vel, boolean expand) {
|
||||
cancelPeek();
|
||||
float target = expand ? getMaxPanelHeight() : 0.0f;
|
||||
flingToHeight(vel, expand, target);
|
||||
fling(vel, expand, 1.0f /* collapseSpeedUpFactor */);
|
||||
}
|
||||
|
||||
protected void flingToHeight(float vel, boolean expand, float target) {
|
||||
protected void fling(float vel, boolean expand, float collapseSpeedUpFactor) {
|
||||
cancelPeek();
|
||||
float target = expand ? getMaxPanelHeight() : 0.0f;
|
||||
flingToHeight(vel, expand, target, collapseSpeedUpFactor);
|
||||
}
|
||||
|
||||
protected void flingToHeight(float vel, boolean expand, float target,
|
||||
float collapseSpeedUpFactor) {
|
||||
// Hack to make the expand transition look nice when clear all button is visible - we make
|
||||
// the animation only to the last notification, and then jump to the maximum panel height so
|
||||
// clear all just fades in and the decelerating motion is towards the last notification.
|
||||
@@ -600,7 +611,8 @@ public abstract class PanelView extends FrameLayout {
|
||||
// Make it shorter if we run a canned animation
|
||||
if (vel == 0) {
|
||||
animator.setDuration((long)
|
||||
(animator.getDuration() * getCannedFlingDurationFactor()));
|
||||
(animator.getDuration() * getCannedFlingDurationFactor()
|
||||
/ collapseSpeedUpFactor));
|
||||
}
|
||||
}
|
||||
animator.addListener(new AnimatorListenerAdapter() {
|
||||
@@ -745,7 +757,7 @@ public abstract class PanelView extends FrameLayout {
|
||||
mBar = panelBar;
|
||||
}
|
||||
|
||||
public void collapse(boolean delayed) {
|
||||
public void collapse(boolean delayed, float speedUpFactor) {
|
||||
if (DEBUG) logf("collapse: " + this);
|
||||
if (mPeekPending || mPeekAnimator != null) {
|
||||
mCollapseAfterPeek = true;
|
||||
@@ -761,9 +773,10 @@ public abstract class PanelView extends FrameLayout {
|
||||
mClosing = true;
|
||||
notifyExpandingStarted();
|
||||
if (delayed) {
|
||||
mNextCollapseSpeedUpFactor = speedUpFactor;
|
||||
postDelayed(mFlingCollapseRunnable, 120);
|
||||
} else {
|
||||
fling(0, false /* expand */);
|
||||
fling(0, false /* expand */, speedUpFactor);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -771,7 +784,7 @@ public abstract class PanelView extends FrameLayout {
|
||||
private final Runnable mFlingCollapseRunnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
fling(0, false /* expand */);
|
||||
fling(0, false /* expand */, mNextCollapseSpeedUpFactor);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -975,7 +988,7 @@ public abstract class PanelView extends FrameLayout {
|
||||
protected final Runnable mPostCollapseRunnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
collapse(false /* delayed */);
|
||||
collapse(false /* delayed */, 1.0f /* speedUpFactor */);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -1981,14 +1981,20 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
|
||||
}
|
||||
|
||||
public void animateCollapsePanels(int flags) {
|
||||
animateCollapsePanels(flags, false /* force */, false /* delayed */);
|
||||
animateCollapsePanels(flags, false /* force */, false /* delayed */,
|
||||
1.0f /* speedUpFactor */);
|
||||
}
|
||||
|
||||
public void animateCollapsePanels(int flags, boolean force) {
|
||||
animateCollapsePanels(flags, force, false /* delayed*/);
|
||||
animateCollapsePanels(flags, force, false /* delayed */, 1.0f /* speedUpFactor */);
|
||||
}
|
||||
|
||||
public void animateCollapsePanels(int flags, boolean force, boolean delayed) {
|
||||
animateCollapsePanels(flags, force, delayed, 1.0f /* speedUpFactor */);
|
||||
}
|
||||
|
||||
public void animateCollapsePanels(int flags, boolean force, boolean delayed,
|
||||
float speedUpFactor) {
|
||||
if (!force &&
|
||||
(mState == StatusBarState.KEYGUARD || mState == StatusBarState.SHADE_LOCKED)) {
|
||||
runPostCollapseRunnables();
|
||||
@@ -2012,7 +2018,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
|
||||
mStatusBarWindowManager.setStatusBarFocusable(false);
|
||||
|
||||
mStatusBarWindow.cancelExpandHelper();
|
||||
mStatusBarView.collapseAllPanels(true /* animate */, delayed);
|
||||
mStatusBarView.collapseAllPanels(true /* animate */, delayed, speedUpFactor);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2055,7 +2061,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
|
||||
|
||||
public void animateCollapseQuickSettings() {
|
||||
if (mState == StatusBarState.SHADE) {
|
||||
mStatusBarView.collapseAllPanels(true, false /* delayed */);
|
||||
mStatusBarView.collapseAllPanels(true, false /* delayed */, 1.0f /* speedUpFactor */);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2068,7 +2074,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
|
||||
}
|
||||
|
||||
// Ensure the panel is fully collapsed (just in case; bug 6765842, 7260868)
|
||||
mStatusBarView.collapseAllPanels(/*animate=*/ false, false /* delayed*/);
|
||||
mStatusBarView.collapseAllPanels(/*animate=*/ false, false /* delayed*/,
|
||||
1.0f /* speedUpFactor */);
|
||||
|
||||
mNotificationPanel.closeQs();
|
||||
|
||||
@@ -2158,7 +2165,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
|
||||
mStatusBarWindowState = state;
|
||||
if (DEBUG_WINDOW_STATE) Log.d(TAG, "Status bar " + windowStateToString(state));
|
||||
if (!showing && mState == StatusBarState.SHADE) {
|
||||
mStatusBarView.collapseAllPanels(false /* animate */, false /* delayed */);
|
||||
mStatusBarView.collapseAllPanels(false /* animate */, false /* delayed */,
|
||||
1.0f /* speedUpFactor */);
|
||||
}
|
||||
}
|
||||
if (mNavigationBarView != null
|
||||
|
||||
@@ -441,7 +441,8 @@ public class StatusBarKeyguardViewManager {
|
||||
mPhoneStatusBar.keyguardGoingAway();
|
||||
}
|
||||
|
||||
public void animateCollapsePanels() {
|
||||
mPhoneStatusBar.animateCollapsePanels(CommandQueue.FLAG_EXCLUDE_NONE, true /* force */);
|
||||
public void animateCollapsePanels(float speedUpFactor) {
|
||||
mPhoneStatusBar.animateCollapsePanels(CommandQueue.FLAG_EXCLUDE_NONE, true /* force */,
|
||||
false /* delayed */, speedUpFactor);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user