diff options
| -rw-r--r-- | packages/SystemUI/res/layout/fingerprint_dialog.xml | 218 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/fingerprint/FingerprintDialogView.java | 31 |
2 files changed, 145 insertions, 104 deletions
diff --git a/packages/SystemUI/res/layout/fingerprint_dialog.xml b/packages/SystemUI/res/layout/fingerprint_dialog.xml index 1b47489418be..1bdaf6e33544 100644 --- a/packages/SystemUI/res/layout/fingerprint_dialog.xml +++ b/packages/SystemUI/res/layout/fingerprint_dialog.xml @@ -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"/> + <!-- 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"/> - <TextView - android:id="@+id/subtitle" - android:layout_width="match_parent" + <LinearLayout + android:id="@+id/dialog" + android:layout_width="0dp" 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"/> + android:orientation="vertical" + android:elevation="2dp" + android:background="@drawable/fingerprint_dialog_bg"> - <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"/> + <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"/> - <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/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/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"/> + <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"/> - <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" /> + <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>
\ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/fingerprint/FingerprintDialogView.java b/packages/SystemUI/src/com/android/systemui/fingerprint/FingerprintDialogView.java index 37e193654f44..ebdc70339d22 100644 --- a/packages/SystemUI/src/com/android/systemui/fingerprint/FingerprintDialogView.java +++ b/packages/SystemUI/src/com/android/systemui/fingerprint/FingerprintDialogView.java @@ -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 |