Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4069521d authored by Beverly's avatar Beverly
Browse files

Fix layout for lock icon when in landscape

In landscape, align the lock icon and KeyguardMessage area to the left
so it doesn't overlap the bouncer pin/pattern/password.

Test: atest StatusBarKeyguardViewManagerTest
Test: manual
Fixes: 173508546
Change-Id: I624a10b1c4dd8d6c4498996f001a18a96a0c969c
parent 687f5e16
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -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"
+41 −6
Original line number Diff line number Diff line
@@ -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);
+2 −0
Original line number Diff line number Diff line
@@ -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),