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

Commit 76e024fe authored by Jamie Garside's avatar Jamie Garside Committed by Automerger Merge Worker
Browse files

Merge "Resize PIN pad when the device is half folded." into sc-v2-dev am: 7b13bb8e am: 69b6d121

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15346905

Change-Id: I85339f5e383a19567adcbed031494de19b57fce5
parents f5d96e0f 69b6d121
Loading
Loading
Loading
Loading
+13 −5
Original line number Original line Diff line number Diff line
@@ -47,11 +47,11 @@
            android:layout_width="match_parent"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_height="wrap_content"
            android:paddingBottom="@dimen/num_pad_entry_row_margin_bottom"
            android:paddingBottom="@dimen/num_pad_entry_row_margin_bottom"
            androidprv:layout_constraintBottom_toTopOf="@id/key1"
            androidprv:layout_constraintEnd_toEndOf="parent"
            androidprv:layout_constraintEnd_toEndOf="parent"
            androidprv:layout_constraintStart_toStartOf="parent"
            androidprv:layout_constraintStart_toStartOf="parent"


            androidprv:layout_constraintTop_toTopOf="parent"
            androidprv:layout_constraintTop_toTopOf="parent"
            androidprv:layout_constraintBottom_toTopOf="@id/key1"
            androidprv:layout_constraintVertical_bias="1.0">
            androidprv:layout_constraintVertical_bias="1.0">


            <com.android.keyguard.PasswordTextView
            <com.android.keyguard.PasswordTextView
@@ -65,6 +65,15 @@
                androidprv:scaledTextSize="@integer/scaled_password_text_size" />
                androidprv:scaledTextSize="@integer/scaled_password_text_size" />
        </com.android.keyguard.AlphaOptimizedRelativeLayout>
        </com.android.keyguard.AlphaOptimizedRelativeLayout>


        <!-- Guideline used to place the top row of keys relative to the screen height. This will be
             updated in KeyguardPINView to reduce the height of the PIN pad. -->
        <androidx.constraintlayout.widget.Guideline
            android:id="@+id/pin_pad_top_guideline"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            androidprv:layout_constraintGuide_percent="0"
            android:orientation="horizontal" />

        <androidx.constraintlayout.helper.widget.Flow
        <androidx.constraintlayout.helper.widget.Flow
            android:id="@+id/flow1"
            android:id="@+id/flow1"
            android:layout_width="0dp"
            android:layout_width="0dp"
@@ -78,16 +87,15 @@
            androidprv:flow_horizontalStyle="packed"
            androidprv:flow_horizontalStyle="packed"
            androidprv:flow_maxElementsWrap="3"
            androidprv:flow_maxElementsWrap="3"


            androidprv:flow_verticalBias="1.0"
            androidprv:flow_verticalGap="@dimen/num_pad_entry_row_margin_bottom"
            androidprv:flow_verticalGap="@dimen/num_pad_entry_row_margin_bottom"
            androidprv:flow_verticalStyle="packed"
            androidprv:flow_verticalStyle="packed"
            androidprv:flow_verticalBias="1.0"


            androidprv:flow_wrapMode="aligned"
            androidprv:flow_wrapMode="aligned"

            androidprv:layout_constraintTop_toTopOf="parent"
            androidprv:layout_constraintBottom_toBottomOf="parent"
            androidprv:layout_constraintBottom_toBottomOf="parent"
            androidprv:layout_constraintEnd_toEndOf="parent"
            androidprv:layout_constraintEnd_toEndOf="parent"
            androidprv:layout_constraintStart_toStartOf="parent" />
            androidprv:layout_constraintStart_toStartOf="parent"
            androidprv:layout_constraintTop_toBottomOf="@id/pin_pad_top_guideline" />


        <com.android.keyguard.NumPadKey
        <com.android.keyguard.NumPadKey
            android:id="@+id/key1"
            android:id="@+id/key1"
+6 −0
Original line number Original line Diff line number Diff line
@@ -98,4 +98,10 @@
    <dimen name="below_clock_padding_start">32dp</dimen>
    <dimen name="below_clock_padding_start">32dp</dimen>
    <dimen name="below_clock_padding_end">16dp</dimen>
    <dimen name="below_clock_padding_end">16dp</dimen>
    <dimen name="below_clock_padding_start_icons">28dp</dimen>
    <dimen name="below_clock_padding_start_icons">28dp</dimen>

    <!-- Proportion of the screen height to use to set the maximum height of the bouncer to when
         the device is in the DEVICE_POSTURE_HALF_OPENED posture, for the PIN/pattern entry. 0 will
         allow it to use the whole screen space, 0.6 will allow it to use just under half of the
         screen. -->
    <item name="half_opened_bouncer_height_ratio" type="dimen" format="float">0.0</item>
</resources>
</resources>
+7 −2
Original line number Original line Diff line number Diff line
@@ -28,6 +28,7 @@ import com.android.keyguard.KeyguardSecurityModel.SecurityMode;
import com.android.systemui.R;
import com.android.systemui.R;
import com.android.systemui.classifier.FalsingCollector;
import com.android.systemui.classifier.FalsingCollector;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.statusbar.policy.DevicePostureController;
import com.android.systemui.util.ViewController;
import com.android.systemui.util.ViewController;
import com.android.systemui.util.concurrency.DelayableExecutor;
import com.android.systemui.util.concurrency.DelayableExecutor;


@@ -166,6 +167,7 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView>
        private final TelephonyManager mTelephonyManager;
        private final TelephonyManager mTelephonyManager;
        private final EmergencyButtonController.Factory mEmergencyButtonControllerFactory;
        private final EmergencyButtonController.Factory mEmergencyButtonControllerFactory;
        private final FalsingCollector mFalsingCollector;
        private final FalsingCollector mFalsingCollector;
        private final DevicePostureController mDevicePostureController;


        @Inject
        @Inject
        public Factory(KeyguardUpdateMonitor keyguardUpdateMonitor,
        public Factory(KeyguardUpdateMonitor keyguardUpdateMonitor,
@@ -175,7 +177,8 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView>
                InputMethodManager inputMethodManager, @Main DelayableExecutor mainExecutor,
                InputMethodManager inputMethodManager, @Main DelayableExecutor mainExecutor,
                @Main Resources resources, LiftToActivateListener liftToActivateListener,
                @Main Resources resources, LiftToActivateListener liftToActivateListener,
                TelephonyManager telephonyManager, FalsingCollector falsingCollector,
                TelephonyManager telephonyManager, FalsingCollector falsingCollector,
                EmergencyButtonController.Factory emergencyButtonControllerFactory) {
                EmergencyButtonController.Factory emergencyButtonControllerFactory,
                DevicePostureController devicePostureController) {
            mKeyguardUpdateMonitor = keyguardUpdateMonitor;
            mKeyguardUpdateMonitor = keyguardUpdateMonitor;
            mLockPatternUtils = lockPatternUtils;
            mLockPatternUtils = lockPatternUtils;
            mLatencyTracker = latencyTracker;
            mLatencyTracker = latencyTracker;
@@ -187,6 +190,7 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView>
            mTelephonyManager = telephonyManager;
            mTelephonyManager = telephonyManager;
            mEmergencyButtonControllerFactory = emergencyButtonControllerFactory;
            mEmergencyButtonControllerFactory = emergencyButtonControllerFactory;
            mFalsingCollector = falsingCollector;
            mFalsingCollector = falsingCollector;
            mDevicePostureController = devicePostureController;
        }
        }


        /** Create a new {@link KeyguardInputViewController}. */
        /** Create a new {@link KeyguardInputViewController}. */
@@ -212,7 +216,8 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView>
                return new KeyguardPinViewController((KeyguardPINView) keyguardInputView,
                return new KeyguardPinViewController((KeyguardPINView) keyguardInputView,
                        mKeyguardUpdateMonitor, securityMode, mLockPatternUtils,
                        mKeyguardUpdateMonitor, securityMode, mLockPatternUtils,
                        keyguardSecurityCallback, mMessageAreaControllerFactory, mLatencyTracker,
                        keyguardSecurityCallback, mMessageAreaControllerFactory, mLatencyTracker,
                        mLiftToActivateListener, emergencyButtonController, mFalsingCollector);
                        mLiftToActivateListener, emergencyButtonController, mFalsingCollector,
                        mDevicePostureController);
            } else if (keyguardInputView instanceof KeyguardSimPinView) {
            } else if (keyguardInputView instanceof KeyguardSimPinView) {
                return new KeyguardSimPinViewController((KeyguardSimPinView) keyguardInputView,
                return new KeyguardSimPinViewController((KeyguardSimPinView) keyguardInputView,
                        mKeyguardUpdateMonitor, securityMode, mLockPatternUtils,
                        mKeyguardUpdateMonitor, securityMode, mLockPatternUtils,
+22 −2
Original line number Original line Diff line number Diff line
@@ -16,19 +16,23 @@


package com.android.keyguard;
package com.android.keyguard;


import static com.android.systemui.statusbar.policy.DevicePostureController.DEVICE_POSTURE_HALF_OPENED;
import static com.android.systemui.statusbar.policy.DevicePostureController.DEVICE_POSTURE_UNKNOWN;

import android.content.Context;
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Configuration;
import android.util.AttributeSet;
import android.util.AttributeSet;
import android.view.View;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AnimationUtils;
import android.view.animation.AnimationUtils;


import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.constraintlayout.widget.ConstraintSet;


import com.android.internal.jank.InteractionJankMonitor;
import com.android.internal.jank.InteractionJankMonitor;
import com.android.settingslib.animation.AppearAnimationUtils;
import com.android.settingslib.animation.AppearAnimationUtils;
import com.android.settingslib.animation.DisappearAnimationUtils;
import com.android.settingslib.animation.DisappearAnimationUtils;
import com.android.systemui.R;
import com.android.systemui.R;
import com.android.systemui.statusbar.policy.DevicePostureController.DevicePostureInt;


/**
/**
 * Displays a PIN pad for unlocking.
 * Displays a PIN pad for unlocking.
@@ -38,9 +42,10 @@ public class KeyguardPINView extends KeyguardPinBasedInputView {
    private final AppearAnimationUtils mAppearAnimationUtils;
    private final AppearAnimationUtils mAppearAnimationUtils;
    private final DisappearAnimationUtils mDisappearAnimationUtils;
    private final DisappearAnimationUtils mDisappearAnimationUtils;
    private final DisappearAnimationUtils mDisappearAnimationUtilsLocked;
    private final DisappearAnimationUtils mDisappearAnimationUtilsLocked;
    private ViewGroup mContainer;
    private ConstraintLayout mContainer;
    private int mDisappearYTranslation;
    private int mDisappearYTranslation;
    private View[][] mViews;
    private View[][] mViews;
    @DevicePostureInt private int mLastDevicePosture = DEVICE_POSTURE_UNKNOWN;


    public KeyguardPINView(Context context) {
    public KeyguardPINView(Context context) {
        this(context, null);
        this(context, null);
@@ -67,6 +72,11 @@ public class KeyguardPINView extends KeyguardPinBasedInputView {
        updateMargins();
        updateMargins();
    }
    }


    void onDevicePostureChanged(@DevicePostureInt int posture) {
        mLastDevicePosture = posture;
        updateMargins();
    }

    @Override
    @Override
    protected void resetState() {
    protected void resetState() {
    }
    }
@@ -109,6 +119,16 @@ public class KeyguardPINView extends KeyguardPinBasedInputView {
                key.setLayoutParams(lp);
                key.setLayoutParams(lp);
            }
            }
        }
        }

        // Update the guideline based on the device posture...
        float halfOpenPercentage =
                mContext.getResources().getFloat(R.dimen.half_opened_bouncer_height_ratio);

        ConstraintSet cs = new ConstraintSet();
        cs.clone(mContainer);
        cs.setGuidelinePercent(R.id.pin_pad_top_guideline,
                mLastDevicePosture == DEVICE_POSTURE_HALF_OPENED ? halfOpenPercentage : 0.0f);
        cs.applyTo(mContainer);
    }
    }


    @Override
    @Override
+15 −1
Original line number Original line Diff line number Diff line
@@ -23,10 +23,14 @@ import com.android.internal.widget.LockPatternUtils;
import com.android.keyguard.KeyguardSecurityModel.SecurityMode;
import com.android.keyguard.KeyguardSecurityModel.SecurityMode;
import com.android.systemui.R;
import com.android.systemui.R;
import com.android.systemui.classifier.FalsingCollector;
import com.android.systemui.classifier.FalsingCollector;
import com.android.systemui.statusbar.policy.DevicePostureController;


public class KeyguardPinViewController
public class KeyguardPinViewController
        extends KeyguardPinBasedInputViewController<KeyguardPINView> {
        extends KeyguardPinBasedInputViewController<KeyguardPINView> {
    private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
    private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
    private final DevicePostureController mPostureController;
    private final DevicePostureController.Callback mPostureCallback = posture ->
            mView.onDevicePostureChanged(posture);


    protected KeyguardPinViewController(KeyguardPINView view,
    protected KeyguardPinViewController(KeyguardPINView view,
            KeyguardUpdateMonitor keyguardUpdateMonitor,
            KeyguardUpdateMonitor keyguardUpdateMonitor,
@@ -35,11 +39,13 @@ public class KeyguardPinViewController
            KeyguardMessageAreaController.Factory messageAreaControllerFactory,
            KeyguardMessageAreaController.Factory messageAreaControllerFactory,
            LatencyTracker latencyTracker, LiftToActivateListener liftToActivateListener,
            LatencyTracker latencyTracker, LiftToActivateListener liftToActivateListener,
            EmergencyButtonController emergencyButtonController,
            EmergencyButtonController emergencyButtonController,
            FalsingCollector falsingCollector) {
            FalsingCollector falsingCollector,
            DevicePostureController postureController) {
        super(view, keyguardUpdateMonitor, securityMode, lockPatternUtils, keyguardSecurityCallback,
        super(view, keyguardUpdateMonitor, securityMode, lockPatternUtils, keyguardSecurityCallback,
                messageAreaControllerFactory, latencyTracker, liftToActivateListener,
                messageAreaControllerFactory, latencyTracker, liftToActivateListener,
                emergencyButtonController, falsingCollector);
                emergencyButtonController, falsingCollector);
        mKeyguardUpdateMonitor = keyguardUpdateMonitor;
        mKeyguardUpdateMonitor = keyguardUpdateMonitor;
        mPostureController = postureController;
    }
    }


    @Override
    @Override
@@ -53,6 +59,14 @@ public class KeyguardPinViewController
                getKeyguardSecurityCallback().onCancelClicked();
                getKeyguardSecurityCallback().onCancelClicked();
            });
            });
        }
        }

        mPostureController.addCallback(mPostureCallback);
    }

    @Override
    protected void onViewDetached() {
        super.onViewDetached();
        mPostureController.removeCallback(mPostureCallback);
    }
    }


    @Override
    @Override