Merge "Fix layout for lock icon when in landscape"
This commit is contained in:
committed by
Android (Google) Code Review
commit
427046cb23
@@ -78,7 +78,8 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/status_bar_height"
|
||||
android:layout_gravity="top|center_horizontal">
|
||||
android:layout_gravity="top|center_horizontal"
|
||||
android:gravity="center_horizontal">
|
||||
<com.android.systemui.statusbar.phone.LockIcon
|
||||
android:id="@+id/lock_icon"
|
||||
android:layout_width="@dimen/keyguard_lock_width"
|
||||
|
||||
@@ -26,13 +26,17 @@ import static com.android.systemui.statusbar.phone.BiometricUnlockController.MOD
|
||||
import android.content.ComponentCallbacks2;
|
||||
import android.content.Context;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.content.res.Configuration;
|
||||
import android.os.Bundle;
|
||||
import android.os.SystemClock;
|
||||
import android.util.TypedValue;
|
||||
import android.view.Gravity;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.ViewRootImpl;
|
||||
import android.view.WindowManagerGlobal;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
|
||||
@@ -160,6 +164,8 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
||||
private boolean mPulsing;
|
||||
private boolean mGesturalNav;
|
||||
private boolean mIsDocked;
|
||||
private boolean mIsPortraitMode;
|
||||
private int mScreenWidthDp;
|
||||
|
||||
protected boolean mFirstUpdate = true;
|
||||
protected boolean mLastShowing;
|
||||
@@ -174,6 +180,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
||||
private boolean mLastPulsing;
|
||||
private int mLastBiometricMode;
|
||||
private boolean mLastLockVisible;
|
||||
private boolean mLastLockOrientationIsPortrait;
|
||||
|
||||
private OnDismissAction mAfterKeyguardGoneAction;
|
||||
private Runnable mKeyguardGoneCancelAction;
|
||||
@@ -263,6 +270,9 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
||||
mKeyguardUpdateManager.registerCallback(mUpdateMonitorCallback);
|
||||
mStatusBarStateController.addCallback(this);
|
||||
mConfigurationController.addCallback(this);
|
||||
mIsPortraitMode = mContext.getResources().getConfiguration().orientation
|
||||
== Configuration.ORIENTATION_PORTRAIT;
|
||||
mScreenWidthDp = mContext.getResources().getConfiguration().screenWidthDp;
|
||||
mGesturalNav = QuickStepContract.isGesturalMode(
|
||||
mNavigationModeController.addListener(this));
|
||||
if (mDockManager != null) {
|
||||
@@ -271,6 +281,18 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDensityOrFontScaleChanged() {
|
||||
hideBouncer(true /* destroyView */);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConfigChanged(Configuration newConfig) {
|
||||
mIsPortraitMode = newConfig.orientation == Configuration.ORIENTATION_PORTRAIT;
|
||||
mScreenWidthDp = newConfig.screenWidthDp;
|
||||
updateLockIcon();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPanelExpansionChanged(float expansion, boolean tracking) {
|
||||
// We don't want to translate the bounce when:
|
||||
@@ -317,14 +339,32 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
||||
if (mLockIconContainer == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
boolean keyguardWithoutQs = mStatusBarStateController.getState() == StatusBarState.KEYGUARD
|
||||
&& !mNotificationPanelViewController.isQsExpanded();
|
||||
boolean lockVisible = (mBouncer.isShowing() || keyguardWithoutQs)
|
||||
&& !mBouncer.isAnimatingAway() && !mKeyguardStateController.isKeyguardFadingAway();
|
||||
boolean orientationChange =
|
||||
lockVisible && (mLastLockOrientationIsPortrait != mIsPortraitMode);
|
||||
|
||||
if (mLastLockVisible != lockVisible) {
|
||||
if (mLastLockVisible != lockVisible || orientationChange) {
|
||||
mLastLockVisible = lockVisible;
|
||||
mLastLockOrientationIsPortrait = mIsPortraitMode;
|
||||
if (lockVisible) {
|
||||
FrameLayout.LayoutParams lp =
|
||||
(FrameLayout.LayoutParams) mLockIconContainer.getLayoutParams();
|
||||
if (mIsPortraitMode) {
|
||||
lp.gravity = Gravity.TOP | Gravity.CENTER_HORIZONTAL;
|
||||
} else {
|
||||
final int width = (int) TypedValue.applyDimension(
|
||||
TypedValue.COMPLEX_UNIT_DIP,
|
||||
mScreenWidthDp,
|
||||
mContext.getResources().getDisplayMetrics()) / 3;
|
||||
mLockIconContainer.setMinimumWidth(width);
|
||||
lp.gravity = Gravity.TOP | Gravity.LEFT;
|
||||
}
|
||||
mLockIconContainer.setLayoutParams(lp);
|
||||
|
||||
CrossFadeHelper.fadeIn(mLockIconContainer,
|
||||
AppearAnimationUtils.DEFAULT_APPEAR_DURATION /* duration */,
|
||||
0 /* delay */);
|
||||
@@ -684,11 +724,6 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
||||
&& mBypassController.getBypassEnabled();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDensityOrFontScaleChanged() {
|
||||
hideBouncer(true /* destroyView */);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNavigationModeChanged(int mode) {
|
||||
boolean gesturalNav = QuickStepContract.isGesturalMode(mode);
|
||||
|
||||
@@ -33,6 +33,7 @@ import android.testing.TestableLooper;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.ViewPropertyAnimator;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import androidx.test.filters.SmallTest;
|
||||
|
||||
@@ -103,6 +104,7 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase {
|
||||
when(mLockIconContainer.getParent()).thenReturn(mock(ViewGroup.class));
|
||||
when(mLockIconContainer.animate()).thenReturn(mock(ViewPropertyAnimator.class,
|
||||
RETURNS_DEEP_STUBS));
|
||||
when(mLockIconContainer.getLayoutParams()).thenReturn(mock(FrameLayout.LayoutParams.class));
|
||||
|
||||
when(mKeyguardBouncerFactory.create(
|
||||
any(ViewGroup.class),
|
||||
|
||||
Reference in New Issue
Block a user