Merge "PIN bouncer - basic landscape support" into sc-dev

This commit is contained in:
Matt Pietal
2021-06-30 19:05:20 +00:00
committed by Android (Google) Code Review
6 changed files with 88 additions and 6 deletions

View File

@@ -44,7 +44,7 @@
android:id="@+id/row0"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="16dp"
android:paddingBottom="@dimen/num_pad_entry_row_margin_bottom"
>
<com.android.keyguard.PasswordTextView
android:id="@+id/pinEntry"
@@ -192,7 +192,7 @@
android:orientation="vertical"
android:layout_gravity="bottom|center_horizontal"
android:layout_marginTop="@dimen/keyguard_eca_top_margin"
android:layout_marginBottom="12dp"
android:layout_marginBottom="@dimen/keyguard_eca_bottom_margin"
android:gravity="center_horizontal"/>
</com.android.keyguard.KeyguardPINView>

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
**
** Copyright 2021, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->
<resources>
<dimen name="num_pad_row_margin_bottom">4dp</dimen>
<dimen name="keyguard_eca_top_margin">4dp</dimen>
<dimen name="keyguard_eca_bottom_margin">4dp</dimen>
<dimen name="keyguard_password_height">50dp</dimen>
<dimen name="num_pad_entry_row_margin_bottom">4dp</dimen>
</resources>

View File

@@ -41,6 +41,7 @@
<dimen name="keyguard_security_view_lateral_margin">20dp</dimen>
<dimen name="keyguard_eca_top_margin">18dp</dimen>
<dimen name="keyguard_eca_bottom_margin">12dp</dimen>
<!-- EmergencyCarrierArea overlap - amount to overlap the emergency button and carrier text.
Should be 0 on devices with plenty of room (e.g. tablets) -->
@@ -88,6 +89,7 @@
<!-- Spacing around each button used for PIN view -->
<dimen name="num_pad_key_width">72dp</dimen>
<dimen name="num_pad_entry_row_margin_bottom">16dp</dimen>
<dimen name="num_pad_row_margin_bottom">6dp</dimen>
<dimen name="num_pad_key_margin_end">12dp</dimen>

View File

@@ -17,16 +17,20 @@
package com.android.keyguard;
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 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;
/**
* Displays a PIN pad for unlocking.
*/
@@ -63,6 +67,11 @@ public class KeyguardPINView extends KeyguardPinBasedInputView {
R.dimen.disappear_y_translation);
}
@Override
protected void onConfigurationChanged(Configuration newConfig) {
updateMargins();
}
@Override
protected void resetState() {
}
@@ -72,6 +81,33 @@ public class KeyguardPINView extends KeyguardPinBasedInputView {
return R.id.pinEntry;
}
private void updateMargins() {
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);
}
View entryView = findViewById(R.id.pinEntry);
ViewGroup.LayoutParams lp = entryView.getLayoutParams();
lp.height = mContext.getResources().getDimensionPixelSize(R.dimen.keyguard_password_height);
entryView.setLayoutParams(lp);
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();

View File

@@ -17,6 +17,7 @@ package com.android.keyguard;
import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.Configuration;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.RippleDrawable;
import android.graphics.drawable.VectorDrawable;
@@ -26,7 +27,6 @@ import android.view.MotionEvent;
import androidx.annotation.Nullable;
import com.android.settingslib.Utils;
import com.android.systemui.R;
/**
* Similar to the {@link NumPadKey}, but displays an image.
@@ -35,6 +35,7 @@ public class NumPadButton extends AlphaOptimizedImageButton {
@Nullable
private NumPadAnimator mAnimator;
private int mOrientation;
public NumPadButton(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -48,6 +49,11 @@ public class NumPadButton extends AlphaOptimizedImageButton {
}
}
@Override
protected void onConfigurationChanged(Configuration newConfig) {
mOrientation = newConfig.orientation;
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
@@ -55,7 +61,10 @@ public class NumPadButton extends AlphaOptimizedImageButton {
// Set width/height to the same value to ensure a smooth circle for the bg, but shrink
// the height to match the old pin bouncer
int width = getMeasuredWidth();
int height = mAnimator == null ? (int) (width * .75f) : width;
boolean shortenHeight = mAnimator == null
|| mOrientation == Configuration.ORIENTATION_LANDSCAPE;
int height = shortenHeight ? (int) (width * .66f) : width;
setMeasuredDimension(getMeasuredWidth(), height);
}

View File

@@ -13,10 +13,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.keyguard;
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.RippleDrawable;
@@ -52,6 +52,7 @@ public class NumPadKey extends ViewGroup {
@Nullable
private NumPadAnimator mAnimator;
private int mOrientation;
private View.OnClickListener mListener = new View.OnClickListener() {
@Override
@@ -139,6 +140,11 @@ public class NumPadKey extends ViewGroup {
}
}
@Override
protected void onConfigurationChanged(Configuration newConfig) {
mOrientation = newConfig.orientation;
}
/**
* Reload colors from resources.
**/
@@ -171,7 +177,10 @@ public class NumPadKey extends ViewGroup {
// Set width/height to the same value to ensure a smooth circle for the bg, but shrink
// the height to match the old pin bouncer
int width = getMeasuredWidth();
int height = mAnimator == null ? (int) (width * .75f) : width;
boolean shortenHeight = mAnimator == null
|| mOrientation == Configuration.ORIENTATION_LANDSCAPE;
int height = shortenHeight ? (int) (width * .66f) : width;
setMeasuredDimension(getMeasuredWidth(), height);
}