diff options
author | Haamed Gheibi <haamed@google.com> | 2022-03-09 12:05:14 -0800 |
---|---|---|
committer | Weijie Wang <quic_weijiew@quicinc.com> | 2022-03-15 15:38:25 +0800 |
commit | 12bb6d3cbf05cea529a165917c7430af607056f2 (patch) | |
tree | ff322630f9716306236ca70ecae1f265ae2aa2c6 /packages/SystemUI/src/com/android/keyguard/KeyguardPINView.java | |
parent | a42412b7fc93a0eb852d8bf1a4d001f7df7f43b3 (diff) |
Merge SP2A.220305.013
Bug: 220074017
Change-Id: Idfdd94e902f656ac65a2a75dfdd199f6f85ba472
Diffstat (limited to 'packages/SystemUI/src/com/android/keyguard/KeyguardPINView.java')
-rw-r--r-- | packages/SystemUI/src/com/android/keyguard/KeyguardPINView.java | 90 |
1 files changed, 53 insertions, 37 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPINView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPINView.java index 8fc4240e1054..1efda7edee2f 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardPINView.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPINView.java @@ -16,20 +16,23 @@ 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.res.Configuration; import android.util.AttributeSet; import android.view.View; -import android.view.ViewGroup; import android.view.animation.AnimationUtils; -import android.widget.LinearLayout; + +import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.constraintlayout.widget.ConstraintSet; import com.android.internal.jank.InteractionJankMonitor; import com.android.settingslib.animation.AppearAnimationUtils; import com.android.settingslib.animation.DisappearAnimationUtils; import com.android.systemui.R; - -import java.util.List; +import com.android.systemui.statusbar.policy.DevicePostureController.DevicePostureInt; /** * Displays a PIN pad for unlocking. @@ -39,13 +42,10 @@ public class KeyguardPINView extends KeyguardPinBasedInputView { private final AppearAnimationUtils mAppearAnimationUtils; private final DisappearAnimationUtils mDisappearAnimationUtils; private final DisappearAnimationUtils mDisappearAnimationUtilsLocked; - private ViewGroup mContainer; - private ViewGroup mRow0; - private ViewGroup mRow1; - private ViewGroup mRow2; - private ViewGroup mRow3; + private ConstraintLayout mContainer; private int mDisappearYTranslation; private View[][] mViews; + @DevicePostureInt private int mLastDevicePosture = DEVICE_POSTURE_UNKNOWN; public KeyguardPINView(Context context) { this(context, null); @@ -72,6 +72,11 @@ public class KeyguardPINView extends KeyguardPinBasedInputView { updateMargins(); } + void onDevicePostureChanged(@DevicePostureInt int posture) { + mLastDevicePosture = posture; + updateMargins(); + } + @Override protected void resetState() { } @@ -82,30 +87,48 @@ public class KeyguardPINView extends KeyguardPinBasedInputView { } private void updateMargins() { + // Re-apply everything to the keys... int bottomMargin = mContext.getResources().getDimensionPixelSize( - R.dimen.num_pad_row_margin_bottom); - - for (ViewGroup vg : List.of(mRow1, mRow2, mRow3)) { - ((LinearLayout.LayoutParams) vg.getLayoutParams()).setMargins(0, 0, 0, bottomMargin); - } - - bottomMargin = mContext.getResources().getDimensionPixelSize( R.dimen.num_pad_entry_row_margin_bottom); - ((LinearLayout.LayoutParams) mRow0.getLayoutParams()).setMargins(0, 0, 0, bottomMargin); - - if (mEcaView != null) { - int ecaTopMargin = mContext.getResources().getDimensionPixelSize( - R.dimen.keyguard_eca_top_margin); - int ecaBottomMargin = mContext.getResources().getDimensionPixelSize( - R.dimen.keyguard_eca_bottom_margin); - ((LinearLayout.LayoutParams) mEcaView.getLayoutParams()).setMargins(0, ecaTopMargin, - 0, ecaBottomMargin); + int rightMargin = mContext.getResources().getDimensionPixelSize( + R.dimen.num_pad_key_margin_end); + String ratio = mContext.getResources().getString(R.string.num_pad_key_ratio); + + // mView contains all Views that make up the PIN pad; row0 = the entry test field, then + // rows 1-4 contain the buttons. Iterate over all views that make up the buttons in the pad, + // and re-set all the margins. + for (int row = 1; row < 5; row++) { + for (int column = 0; column < 3; column++) { + View key = mViews[row][column]; + + ConstraintLayout.LayoutParams lp = + (ConstraintLayout.LayoutParams) key.getLayoutParams(); + + lp.dimensionRatio = ratio; + + // Don't set any margins on the last row of buttons. + if (row != 4) { + lp.bottomMargin = bottomMargin; + } + + // Don't set margins on the rightmost buttons. + if (column != 2) { + lp.rightMargin = rightMargin; + } + + key.setLayoutParams(lp); + } } - View entryView = findViewById(R.id.pinEntry); - ViewGroup.LayoutParams lp = entryView.getLayoutParams(); - lp.height = mContext.getResources().getDimensionPixelSize(R.dimen.keyguard_password_height); - entryView.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 @@ -113,13 +136,9 @@ public class KeyguardPINView extends KeyguardPinBasedInputView { super.onFinishInflate(); mContainer = findViewById(R.id.pin_container); - mRow0 = findViewById(R.id.row0); - mRow1 = findViewById(R.id.row1); - mRow2 = findViewById(R.id.row2); - mRow3 = findViewById(R.id.row3); mViews = new View[][]{ new View[]{ - mRow0, null, null + findViewById(R.id.row0), null, null }, new View[]{ findViewById(R.id.key1), findViewById(R.id.key2), @@ -188,9 +207,6 @@ public class KeyguardPINView extends KeyguardPinBasedInputView { private void enableClipping(boolean enable) { mContainer.setClipToPadding(enable); mContainer.setClipChildren(enable); - mRow1.setClipToPadding(enable); - mRow2.setClipToPadding(enable); - mRow3.setClipToPadding(enable); setClipChildren(enable); } |