Merge "Update FingerprintDialog UI for landscape orientation" into pi-dev
This commit is contained in:
@@ -26,116 +26,138 @@
|
||||
<View
|
||||
android:id="@+id/space"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/dialog"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:elevation="2dp"
|
||||
android:background="@drawable/fingerprint_dialog_bg">
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/title"
|
||||
android:fontFamily="@*android:string/config_headlineFontFamilyMedium"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="24dp"
|
||||
android:layout_marginStart="24dp"
|
||||
android:layout_marginTop="24dp"
|
||||
android:gravity="@integer/fingerprint_dialog_text_gravity"
|
||||
android:textSize="20sp"
|
||||
android:maxLines="1"
|
||||
android:singleLine="true"
|
||||
android:ellipsize="marquee"
|
||||
android:marqueeRepeatLimit="marquee_forever"
|
||||
android:textColor="@color/fingerprint_dialog_text_dark_color"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/subtitle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginStart="24dp"
|
||||
android:layout_marginEnd="24dp"
|
||||
android:gravity="@integer/fingerprint_dialog_text_gravity"
|
||||
android:textSize="16sp"
|
||||
android:maxLines="1"
|
||||
android:singleLine="true"
|
||||
android:ellipsize="marquee"
|
||||
android:marqueeRepeatLimit="marquee_forever"
|
||||
android:textColor="@color/fingerprint_dialog_text_dark_color"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/description"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="24dp"
|
||||
android:layout_marginStart="24dp"
|
||||
android:gravity="@integer/fingerprint_dialog_text_gravity"
|
||||
android:paddingTop="8dp"
|
||||
android:textSize="16sp"
|
||||
android:maxLines="4"
|
||||
android:textColor="@color/fingerprint_dialog_text_dark_color"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/fingerprint_icon"
|
||||
android:layout_width="@dimen/fingerprint_dialog_fp_icon_size"
|
||||
android:layout_height="@dimen/fingerprint_dialog_fp_icon_size"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginTop="48dp"
|
||||
android:scaleType="fitXY"
|
||||
android:contentDescription="@string/accessibility_fingerprint_dialog_fingerprint_icon" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/error"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="24dp"
|
||||
android:layout_marginStart="24dp"
|
||||
android:paddingTop="16dp"
|
||||
android:paddingBottom="24dp"
|
||||
android:textSize="12sp"
|
||||
android:gravity="center_horizontal"
|
||||
android:accessibilityLiveRegion="polite"
|
||||
android:text="@string/fingerprint_dialog_touch_sensor"
|
||||
android:contentDescription="@string/accessibility_fingerprint_dialog_help_area"
|
||||
android:textColor="@color/fingerprint_dialog_text_light_color"/>
|
||||
<!-- This is not a Space since Spaces cannot be clicked. The width of this changes depending
|
||||
on horizontal/portrait orientation -->
|
||||
<View
|
||||
android:id="@+id/left_space"
|
||||
android:layout_weight="1"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="72dip"
|
||||
android:paddingTop="24dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
style="?android:attr/buttonBarStyle"
|
||||
android:orientation="horizontal"
|
||||
android:measureWithLargestChild="true">
|
||||
<Space android:id="@+id/leftSpacer"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="match_parent"
|
||||
android:visibility="visible" />
|
||||
<!-- Negative Button -->
|
||||
<Button android:id="@+id/button2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
style="@*android:style/Widget.DeviceDefault.Button.Borderless.Colored"
|
||||
android:layout_marginStart="-12dp"
|
||||
android:gravity="start|center_vertical"
|
||||
android:maxLines="2" />
|
||||
<!-- Positive Button -->
|
||||
<Button android:id="@+id/button1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
style="@*android:style/Widget.DeviceDefault.Button.Borderless.Colored"
|
||||
android:layout_marginEnd="12dp"
|
||||
android:maxLines="2" />
|
||||
<Space android:id="@+id/rightSpacer"
|
||||
android:layout_width="24dip"
|
||||
android:layout_height="match_parent"
|
||||
android:visibility="gone" />
|
||||
android:id="@+id/dialog"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:elevation="2dp"
|
||||
android:background="@drawable/fingerprint_dialog_bg">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/title"
|
||||
android:fontFamily="@*android:string/config_headlineFontFamilyMedium"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="24dp"
|
||||
android:layout_marginStart="24dp"
|
||||
android:layout_marginTop="24dp"
|
||||
android:gravity="@integer/fingerprint_dialog_text_gravity"
|
||||
android:textSize="20sp"
|
||||
android:maxLines="1"
|
||||
android:singleLine="true"
|
||||
android:ellipsize="marquee"
|
||||
android:marqueeRepeatLimit="marquee_forever"
|
||||
android:textColor="@color/fingerprint_dialog_text_dark_color"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/subtitle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginStart="24dp"
|
||||
android:layout_marginEnd="24dp"
|
||||
android:gravity="@integer/fingerprint_dialog_text_gravity"
|
||||
android:textSize="16sp"
|
||||
android:maxLines="1"
|
||||
android:singleLine="true"
|
||||
android:ellipsize="marquee"
|
||||
android:marqueeRepeatLimit="marquee_forever"
|
||||
android:textColor="@color/fingerprint_dialog_text_dark_color"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/description"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="24dp"
|
||||
android:layout_marginStart="24dp"
|
||||
android:gravity="@integer/fingerprint_dialog_text_gravity"
|
||||
android:paddingTop="8dp"
|
||||
android:textSize="16sp"
|
||||
android:maxLines="4"
|
||||
android:textColor="@color/fingerprint_dialog_text_dark_color"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/fingerprint_icon"
|
||||
android:layout_width="@dimen/fingerprint_dialog_fp_icon_size"
|
||||
android:layout_height="@dimen/fingerprint_dialog_fp_icon_size"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginTop="48dp"
|
||||
android:scaleType="fitXY"
|
||||
android:contentDescription="@string/accessibility_fingerprint_dialog_fingerprint_icon" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/error"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="24dp"
|
||||
android:layout_marginStart="24dp"
|
||||
android:paddingTop="16dp"
|
||||
android:paddingBottom="24dp"
|
||||
android:textSize="12sp"
|
||||
android:gravity="center_horizontal"
|
||||
android:accessibilityLiveRegion="polite"
|
||||
android:text="@string/fingerprint_dialog_touch_sensor"
|
||||
android:contentDescription="@string/accessibility_fingerprint_dialog_help_area"
|
||||
android:textColor="@color/fingerprint_dialog_text_light_color"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="72dip"
|
||||
android:paddingTop="24dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
style="?android:attr/buttonBarStyle"
|
||||
android:orientation="horizontal"
|
||||
android:measureWithLargestChild="true">
|
||||
<Space android:id="@+id/leftSpacer"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="match_parent"
|
||||
android:visibility="visible" />
|
||||
<!-- Negative Button -->
|
||||
<Button android:id="@+id/button2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
style="@*android:style/Widget.DeviceDefault.Button.Borderless.Colored"
|
||||
android:layout_marginStart="-12dp"
|
||||
android:gravity="start|center_vertical"
|
||||
android:maxLines="2" />
|
||||
<!-- Positive Button -->
|
||||
<Button android:id="@+id/button1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
style="@*android:style/Widget.DeviceDefault.Button.Borderless.Colored"
|
||||
android:layout_marginEnd="12dp"
|
||||
android:maxLines="2" />
|
||||
<Space android:id="@+id/rightSpacer"
|
||||
android:layout_width="24dip"
|
||||
android:layout_height="match_parent"
|
||||
android:visibility="gone" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<!-- This is not a Space since Spaces cannot be clicked. The width of this changes depending
|
||||
on horizontal/portrait orientation -->
|
||||
<View
|
||||
android:id="@+id/right_space"
|
||||
android:layout_weight="1"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
@@ -17,6 +17,7 @@
|
||||
package com.android.systemui.fingerprint;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Configuration;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.PixelFormat;
|
||||
import android.graphics.PorterDuff;
|
||||
@@ -27,6 +28,7 @@ import android.os.Binder;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.IBinder;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.Log;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.LayoutInflater;
|
||||
@@ -42,6 +44,7 @@ import android.widget.TextView;
|
||||
|
||||
import com.android.systemui.Interpolators;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.util.leak.RotationUtils;
|
||||
|
||||
/**
|
||||
* This class loads the view for the system-provided dialog. The view consists of:
|
||||
@@ -74,6 +77,8 @@ public class FingerprintDialogView extends LinearLayout {
|
||||
private final LinearLayout mDialog;
|
||||
private int mLastState;
|
||||
|
||||
private final float mDisplayWidth;
|
||||
|
||||
public FingerprintDialogView(Context context, Handler handler) {
|
||||
super(context);
|
||||
mHandler = handler;
|
||||
@@ -88,6 +93,10 @@ public class FingerprintDialogView extends LinearLayout {
|
||||
mFingerprintColor = Color.parseColor(
|
||||
getResources().getString(R.color.fingerprint_dialog_fingerprint_color));
|
||||
|
||||
DisplayMetrics metrics = new DisplayMetrics();
|
||||
mWindowManager.getDefaultDisplay().getMetrics(metrics);
|
||||
mDisplayWidth = metrics.widthPixels;
|
||||
|
||||
// Create the dialog
|
||||
LayoutInflater factory = LayoutInflater.from(getContext());
|
||||
mLayout = (ViewGroup) factory.inflate(R.layout.fingerprint_dialog, this, false);
|
||||
@@ -117,15 +126,14 @@ public class FingerprintDialogView extends LinearLayout {
|
||||
});
|
||||
|
||||
final View space = mLayout.findViewById(R.id.space);
|
||||
final View leftSpace = mLayout.findViewById(R.id.left_space);
|
||||
final View rightSpace = mLayout.findViewById(R.id.right_space);
|
||||
final Button negative = mLayout.findViewById(R.id.button2);
|
||||
final Button positive = mLayout.findViewById(R.id.button1);
|
||||
|
||||
space.setClickable(true);
|
||||
space.setOnTouchListener((View view, MotionEvent event) -> {
|
||||
mHandler.obtainMessage(FingerprintDialogImpl.MSG_HIDE_DIALOG, true /* userCanceled */)
|
||||
.sendToTarget();
|
||||
return true;
|
||||
});
|
||||
setDismissesDialog(space);
|
||||
setDismissesDialog(leftSpace);
|
||||
setDismissesDialog(rightSpace);
|
||||
|
||||
negative.setOnClickListener((View v) -> {
|
||||
mHandler.obtainMessage(FingerprintDialogImpl.MSG_BUTTON_NEGATIVE).sendToTarget();
|
||||
@@ -149,6 +157,8 @@ public class FingerprintDialogView extends LinearLayout {
|
||||
final Button negative = mLayout.findViewById(R.id.button2);
|
||||
final Button positive = mLayout.findViewById(R.id.button1);
|
||||
|
||||
mDialog.getLayoutParams().width = (int) mDisplayWidth;
|
||||
|
||||
mLastState = STATE_NONE;
|
||||
updateFingerprintIcon(STATE_FINGERPRINT);
|
||||
|
||||
@@ -189,6 +199,15 @@ public class FingerprintDialogView extends LinearLayout {
|
||||
});
|
||||
}
|
||||
|
||||
private void setDismissesDialog(View v) {
|
||||
v.setClickable(true);
|
||||
v.setOnTouchListener((View view, MotionEvent event) -> {
|
||||
mHandler.obtainMessage(FingerprintDialogImpl.MSG_HIDE_DIALOG, true /* userCanceled */)
|
||||
.sendToTarget();
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
public void startDismiss() {
|
||||
final Runnable endActionRunnable = new Runnable() {
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user