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