Bouncer: Remove flicker of KeyguardMessageArea
SetBouncerVisible to be bouncerIsShown and not bouncerIsOrWillBeShowing. This prevents flickering on multiple cases when bouncer is about to show. Also rename SetBouncerVisible -> SetBouncerShown for consistency. Bug: 225182858, 225182858 Test: Manual on device Change-Id: Ia8e2c114b6cb9565304dd380430622a94400cd8a
This commit is contained in:
@@ -57,7 +57,7 @@ public class KeyguardMessageArea extends TextView implements SecurityMessageDisp
|
||||
private ColorStateList mDefaultColorState;
|
||||
private CharSequence mMessage;
|
||||
private ColorStateList mNextMessageColorState = ColorStateList.valueOf(DEFAULT_COLOR);
|
||||
private boolean mBouncerVisible;
|
||||
private boolean mBouncerShowing;
|
||||
private boolean mAltBouncerShowing;
|
||||
/**
|
||||
* Container that wraps the KeyguardMessageArea - may be null if current view hierarchy doesn't
|
||||
@@ -177,7 +177,7 @@ public class KeyguardMessageArea extends TextView implements SecurityMessageDisp
|
||||
|
||||
void update() {
|
||||
CharSequence status = mMessage;
|
||||
setVisibility(TextUtils.isEmpty(status) || (!mBouncerVisible && !mAltBouncerShowing)
|
||||
setVisibility(TextUtils.isEmpty(status) || (!mBouncerShowing && !mAltBouncerShowing)
|
||||
? INVISIBLE : VISIBLE);
|
||||
setText(status);
|
||||
ColorStateList colorState = mDefaultColorState;
|
||||
@@ -192,8 +192,14 @@ public class KeyguardMessageArea extends TextView implements SecurityMessageDisp
|
||||
setTextColor(colorState);
|
||||
}
|
||||
|
||||
public void setBouncerVisible(boolean bouncerVisible) {
|
||||
mBouncerVisible = bouncerVisible;
|
||||
/**
|
||||
* Set whether the bouncer is fully showing
|
||||
*/
|
||||
public void setBouncerShowing(boolean bouncerShowing) {
|
||||
if (mBouncerShowing != bouncerShowing) {
|
||||
mBouncerShowing = bouncerShowing;
|
||||
update();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -39,12 +39,6 @@ public class KeyguardMessageAreaController extends ViewController<KeyguardMessag
|
||||
public void onStartedWakingUp() {
|
||||
mView.setSelected(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onKeyguardBouncerChanged(boolean bouncer) {
|
||||
mView.setBouncerVisible(bouncer);
|
||||
mView.update();
|
||||
}
|
||||
};
|
||||
|
||||
private ConfigurationListener mConfigurationListener = new ConfigurationListener() {
|
||||
@@ -94,6 +88,13 @@ public class KeyguardMessageAreaController extends ViewController<KeyguardMessag
|
||||
mView.setAltBouncerShowing(showing);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set bouncer is fully showing
|
||||
*/
|
||||
public void setBouncerShowing(boolean showing) {
|
||||
mView.setBouncerShowing(showing);
|
||||
}
|
||||
|
||||
public void setMessage(CharSequence s) {
|
||||
mView.setMessage(s);
|
||||
}
|
||||
|
||||
@@ -1016,6 +1016,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
||||
if (bouncerShowing != mLastBouncerShowing || mFirstUpdate) {
|
||||
mNotificationShadeWindowController.setBouncerShowing(bouncerShowing);
|
||||
mCentralSurfaces.setBouncerShowing(bouncerShowing);
|
||||
mKeyguardMessageAreaController.setBouncerShowing(bouncerShowing);
|
||||
}
|
||||
|
||||
if (occluded != mLastOccluded || mFirstUpdate) {
|
||||
|
||||
@@ -84,4 +84,10 @@ public class KeyguardMessageAreaControllerTest extends SysuiTestCase {
|
||||
mMessageAreaController.setMessage("");
|
||||
verify(mKeyguardMessageArea).setMessage("");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetBouncerVisible() {
|
||||
mMessageAreaController.setBouncerShowing(true);
|
||||
verify(mKeyguardMessageArea).setBouncerShowing(true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ public class KeyguardMessageAreaTest extends SysuiTestCase {
|
||||
public void setUp() throws Exception {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mKeyguardMessageArea = new KeyguardMessageArea(mContext, null);
|
||||
mKeyguardMessageArea.setBouncerVisible(true);
|
||||
mKeyguardMessageArea.setBouncerShowing(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -53,7 +53,7 @@ public class KeyguardMessageAreaTest extends SysuiTestCase {
|
||||
|
||||
@Test
|
||||
public void testHiddenWhenBouncerHidden() {
|
||||
mKeyguardMessageArea.setBouncerVisible(false);
|
||||
mKeyguardMessageArea.setBouncerShowing(false);
|
||||
mKeyguardMessageArea.setVisibility(View.INVISIBLE);
|
||||
mKeyguardMessageArea.setMessage("oobleck");
|
||||
assertThat(mKeyguardMessageArea.getVisibility()).isEqualTo(View.INVISIBLE);
|
||||
|
||||
@@ -95,6 +95,8 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase {
|
||||
@Mock
|
||||
private KeyguardMessageAreaController.Factory mKeyguardMessageAreaFactory;
|
||||
@Mock
|
||||
private KeyguardMessageAreaController mKeyguardMessageAreaController;
|
||||
@Mock
|
||||
private KeyguardBouncer mBouncer;
|
||||
@Mock
|
||||
private StatusBarKeyguardViewManager.AlternateAuthInterceptor mAlternateAuthInterceptor;
|
||||
@@ -120,6 +122,8 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase {
|
||||
.thenReturn(mBouncer);
|
||||
when(mCentralSurfaces.getBouncerContainer()).thenReturn(mContainer);
|
||||
when(mContainer.findViewById(anyInt())).thenReturn(mKeyguardMessageArea);
|
||||
when(mKeyguardMessageAreaFactory.create(any(KeyguardMessageArea.class)))
|
||||
.thenReturn(mKeyguardMessageAreaController);
|
||||
mStatusBarKeyguardViewManager = new StatusBarKeyguardViewManager(
|
||||
getContext(),
|
||||
mViewMediatorCallback,
|
||||
|
||||
Reference in New Issue
Block a user