Merge "Fix layout for lock icon when in landscape"

This commit is contained in:
TreeHugger Robot
2020-11-19 21:32:48 +00:00
committed by Android (Google) Code Review
3 changed files with 45 additions and 7 deletions

View File

@@ -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"

View File

@@ -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);

View File

@@ -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),