Merge "[Fingerprint] Make enroll progress bar scalable"
This commit is contained in:
20
res/color/white_disabled.xml
Normal file
20
res/color/white_disabled.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2016 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.
|
||||
-->
|
||||
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:color="@android:color/white"
|
||||
android:alpha="?android:attr/disabledAlpha" />
|
||||
</selector>
|
@@ -17,14 +17,14 @@
|
||||
<vector
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:name="enrollment_fingerprint_isolated"
|
||||
android:width="75dp"
|
||||
android:viewportWidth="75"
|
||||
android:width="88dp"
|
||||
android:height="88dp"
|
||||
android:viewportHeight="88" >
|
||||
android:viewportWidth="176"
|
||||
android:viewportHeight="176" >
|
||||
<group
|
||||
android:name="fingerprint_ridges_2"
|
||||
android:translateX="37.5835"
|
||||
android:translateY="43.66685" >
|
||||
android:translateX="88"
|
||||
android:translateY="87.66685" >
|
||||
<group
|
||||
android:name="ridge_5" >
|
||||
<path
|
||||
|
28
res/drawable/fp_illustration.xml
Normal file
28
res/drawable/fp_illustration.xml
Normal file
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
~ Copyright (C) 2016 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
|
||||
-->
|
||||
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<item
|
||||
android:id="@+id/fingerprint_background"
|
||||
android:drawable="@drawable/fp_illustration_enrollment" />
|
||||
|
||||
<item
|
||||
android:id="@+id/fingerprint_animation"
|
||||
android:drawable="@drawable/enrollment_fingerprint_isolated_animation" />
|
||||
|
||||
</layer-list>
|
@@ -16,21 +16,25 @@ Copyright (C) 2015 The Android Open Source Project
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="88.0dp"
|
||||
android:height="88.0dp"
|
||||
android:viewportWidth="88.0"
|
||||
android:viewportHeight="88.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M67.74,11.59c-0.41,0.0 -0.82,-0.1 -1.2,-0.31c-7.44,-4.06 -15.0,-6.04 -23.11,-6.04c-7.92,0.0 -14.67,1.85 -21.88,6.01c-1.2,0.69 -2.73,0.28 -3.42,-0.92s-0.28,-2.72 0.92,-3.41c7.9,-4.55 15.65,-6.68 24.37,-6.68c8.97,0.0 17.32,2.17 25.51,6.65c1.21,0.66 1.66,2.18 1.0,3.39C69.48,11.12 68.62,11.59 67.74,11.59z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M9.25,34.74c-0.48,0.0 -0.96,-0.14 -1.39,-0.42c-1.15,-0.77 -1.45,-2.32 -0.68,-3.47c4.09,-6.09 9.3,-10.89 15.49,-14.27c6.52,-3.55 13.91,-5.43 21.38,-5.43c7.44,0.0 14.8,1.86 21.3,5.39c6.17,3.35 11.38,8.12 15.47,14.16c0.77,1.14 0.47,2.7 -0.67,3.47c-1.14,0.77 -2.7,0.47 -3.47,-0.67c-3.64,-5.38 -8.25,-9.61 -13.71,-12.57c-5.77,-3.13 -12.31,-4.78 -18.92,-4.78c-6.63,0.0 -13.2,1.67 -18.98,4.82c-5.48,2.99 -10.1,7.25 -13.73,12.66C10.85,34.35 10.06,34.74 9.25,34.74z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M34.76,86.82c-0.67,0.0 -1.33,-0.27 -1.82,-0.79c-3.49,-3.72 -5.51,-6.25 -8.26,-11.45c-2.84,-5.35 -4.34,-11.88 -4.34,-18.86c0.0,-13.02 10.59,-23.61 23.61,-23.61c13.02,0.0 23.61,10.59 23.61,23.61c0.0,1.38 -1.12,2.5 -2.5,2.5s-2.5,-1.12 -2.5,-2.5c0.0,-10.26 -8.35,-18.61 -18.61,-18.61c-10.26,0.0 -18.61,8.35 -18.61,18.61c0.0,6.17 1.3,11.89 3.76,16.52c2.62,4.94 4.37,7.04 7.49,10.37c0.94,1.01 0.89,2.59 -0.11,3.53C35.99,86.6 35.38,86.82 34.76,86.82z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M64.28,78.84c-4.99,0.0 -9.35,-1.32 -12.98,-3.92c-6.17,-4.43 -9.86,-11.6 -9.86,-19.19c0.0,-1.38 1.12,-2.5 2.5,-2.5s2.5,1.12 2.5,2.5c0.0,5.98 2.91,11.64 7.77,15.13c2.8,2.01 6.09,2.98 10.06,2.98c0.97,0.0 2.57,-0.11 4.17,-0.4c1.36,-0.25 2.66,0.64 2.92,2.0c0.25,1.36 -0.64,2.66 -2.0,2.92C66.93,78.8 64.86,78.84 64.28,78.84z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M55.92,87.75c-0.23,0.0 -0.46,-0.03 -0.7,-0.1c-6.6,-1.91 -10.92,-4.49 -15.4,-9.2c-5.76,-6.06 -8.94,-14.13 -8.94,-22.72c0.0,-7.2 5.86,-13.05 13.05,-13.05c7.2,0.0 13.05,5.86 13.05,13.05c0.0,4.44 3.61,8.05 8.05,8.05s8.05,-3.61 8.05,-8.05c0.0,-16.08 -13.08,-29.16 -29.16,-29.16c-11.43,0.0 -21.86,6.73 -26.58,17.15c-1.57,3.48 -2.37,7.52 -2.37,12.01c0.0,3.36 0.28,8.62 2.71,15.49c0.46,1.3 -0.22,2.73 -1.52,3.19c-1.3,0.46 -2.73,-0.22 -3.19,-1.52c-2.02,-5.7 -3.0,-11.31 -3.0,-17.16c0.0,-5.21 0.95,-9.94 2.82,-14.07c5.52,-12.2 17.74,-20.09 31.13,-20.09c18.83,0.0 34.16,15.32 34.16,34.16c0.0,7.2 -5.86,13.05 -13.05,13.05S52.0,62.92 52.0,55.73c0.0,-4.44 -3.61,-8.05 -8.05,-8.05s-8.05,3.61 -8.05,8.05c0.0,7.3 2.69,14.15 7.56,19.28c3.86,4.06 7.43,6.18 13.17,7.84c1.33,0.38 2.09,1.77 1.71,3.1C58.01,87.04 57.01,87.75 55.92,87.75z"/>
|
||||
android:viewportWidth="176.0"
|
||||
android:viewportHeight="176.0">
|
||||
<group
|
||||
android:translateX="44"
|
||||
android:translateY="44">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M67.74,11.59c-0.41,0.0 -0.82,-0.1 -1.2,-0.31c-7.44,-4.06 -15.0,-6.04 -23.11,-6.04c-7.92,0.0 -14.67,1.85 -21.88,6.01c-1.2,0.69 -2.73,0.28 -3.42,-0.92s-0.28,-2.72 0.92,-3.41c7.9,-4.55 15.65,-6.68 24.37,-6.68c8.97,0.0 17.32,2.17 25.51,6.65c1.21,0.66 1.66,2.18 1.0,3.39C69.48,11.12 68.62,11.59 67.74,11.59z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M9.25,34.74c-0.48,0.0 -0.96,-0.14 -1.39,-0.42c-1.15,-0.77 -1.45,-2.32 -0.68,-3.47c4.09,-6.09 9.3,-10.89 15.49,-14.27c6.52,-3.55 13.91,-5.43 21.38,-5.43c7.44,0.0 14.8,1.86 21.3,5.39c6.17,3.35 11.38,8.12 15.47,14.16c0.77,1.14 0.47,2.7 -0.67,3.47c-1.14,0.77 -2.7,0.47 -3.47,-0.67c-3.64,-5.38 -8.25,-9.61 -13.71,-12.57c-5.77,-3.13 -12.31,-4.78 -18.92,-4.78c-6.63,0.0 -13.2,1.67 -18.98,4.82c-5.48,2.99 -10.1,7.25 -13.73,12.66C10.85,34.35 10.06,34.74 9.25,34.74z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M34.76,86.82c-0.67,0.0 -1.33,-0.27 -1.82,-0.79c-3.49,-3.72 -5.51,-6.25 -8.26,-11.45c-2.84,-5.35 -4.34,-11.88 -4.34,-18.86c0.0,-13.02 10.59,-23.61 23.61,-23.61c13.02,0.0 23.61,10.59 23.61,23.61c0.0,1.38 -1.12,2.5 -2.5,2.5s-2.5,-1.12 -2.5,-2.5c0.0,-10.26 -8.35,-18.61 -18.61,-18.61c-10.26,0.0 -18.61,8.35 -18.61,18.61c0.0,6.17 1.3,11.89 3.76,16.52c2.62,4.94 4.37,7.04 7.49,10.37c0.94,1.01 0.89,2.59 -0.11,3.53C35.99,86.6 35.38,86.82 34.76,86.82z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M64.28,78.84c-4.99,0.0 -9.35,-1.32 -12.98,-3.92c-6.17,-4.43 -9.86,-11.6 -9.86,-19.19c0.0,-1.38 1.12,-2.5 2.5,-2.5s2.5,1.12 2.5,2.5c0.0,5.98 2.91,11.64 7.77,15.13c2.8,2.01 6.09,2.98 10.06,2.98c0.97,0.0 2.57,-0.11 4.17,-0.4c1.36,-0.25 2.66,0.64 2.92,2.0c0.25,1.36 -0.64,2.66 -2.0,2.92C66.93,78.8 64.86,78.84 64.28,78.84z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M55.92,87.75c-0.23,0.0 -0.46,-0.03 -0.7,-0.1c-6.6,-1.91 -10.92,-4.49 -15.4,-9.2c-5.76,-6.06 -8.94,-14.13 -8.94,-22.72c0.0,-7.2 5.86,-13.05 13.05,-13.05c7.2,0.0 13.05,5.86 13.05,13.05c0.0,4.44 3.61,8.05 8.05,8.05s8.05,-3.61 8.05,-8.05c0.0,-16.08 -13.08,-29.16 -29.16,-29.16c-11.43,0.0 -21.86,6.73 -26.58,17.15c-1.57,3.48 -2.37,7.52 -2.37,12.01c0.0,3.36 0.28,8.62 2.71,15.49c0.46,1.3 -0.22,2.73 -1.52,3.19c-1.3,0.46 -2.73,-0.22 -3.19,-1.52c-2.02,-5.7 -3.0,-11.31 -3.0,-17.16c0.0,-5.21 0.95,-9.94 2.82,-14.07c5.52,-12.2 17.74,-20.09 31.13,-20.09c18.83,0.0 34.16,15.32 34.16,34.16c0.0,7.2 -5.86,13.05 -13.05,13.05S52.0,62.92 52.0,55.73c0.0,-4.44 -3.61,-8.05 -8.05,-8.05s-8.05,3.61 -8.05,8.05c0.0,7.3 2.69,14.15 7.56,19.28c3.86,4.06 7.43,6.18 13.17,7.84c1.33,0.38 2.09,1.77 1.71,3.1C58.01,87.04 57.01,87.75 55.92,87.75z"/>
|
||||
</group>
|
||||
</vector>
|
||||
|
@@ -17,23 +17,27 @@
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:id="@android:id/background">
|
||||
<shape
|
||||
android:innerRadius="?attr/fingerprint_ring_radius"
|
||||
android:innerRadiusRatio="2.2"
|
||||
android:shape="ring"
|
||||
android:thickness="@dimen/fingerprint_ring_thickness"
|
||||
android:useLevel="false">
|
||||
<solid android:color="@color/fingerprint_progress_ring_bg" />
|
||||
android:thickness="@dimen/ring_progress_bar_thickness"
|
||||
android:useLevel="false"
|
||||
android:tint="?android:colorControlNormal">
|
||||
<solid android:color="@color/white_disabled" />
|
||||
</shape>
|
||||
</item>
|
||||
<item android:id="@android:id/progress">
|
||||
<shape
|
||||
android:innerRadius="?attr/fingerprint_ring_radius"
|
||||
android:shape="ring"
|
||||
android:thickness="@dimen/fingerprint_ring_thickness">
|
||||
<gradient
|
||||
android:startColor="@color/fingerprint_progress_ring"
|
||||
android:endColor="@color/fingerprint_progress_ring"
|
||||
android:angle="0"
|
||||
/>
|
||||
</shape>
|
||||
<rotate
|
||||
android:fromDegrees="270"
|
||||
android:pivotX="50%"
|
||||
android:pivotY="50%"
|
||||
android:toDegrees="270">
|
||||
<shape
|
||||
android:innerRadiusRatio="2.2"
|
||||
android:shape="ring"
|
||||
android:thickness="@dimen/ring_progress_bar_thickness"
|
||||
android:tint="?android:attr/colorControlActivated">
|
||||
<solid android:color="@android:color/white" />
|
||||
</shape>
|
||||
</rotate>
|
||||
</item>
|
||||
</layer-list>
|
@@ -49,7 +49,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="0dp"
|
||||
android:layout_marginEnd="0dp"
|
||||
android:src="@drawable/ic_lock" />
|
||||
android:src="@drawable/ic_fingerprint_header" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/suw_layout_title"
|
||||
@@ -97,8 +97,8 @@
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<include layout="@layout/fingerprint_enroll_enrolling_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center"/>
|
||||
|
||||
<TextView
|
||||
|
@@ -50,7 +50,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="0dp"
|
||||
android:layout_marginEnd="0dp"
|
||||
android:src="@drawable/ic_lock" />
|
||||
android:src="@drawable/ic_fingerprint_header" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/suw_layout_title"
|
||||
|
@@ -55,8 +55,9 @@
|
||||
</FrameLayout>
|
||||
|
||||
<include layout="@layout/fingerprint_enroll_enrolling_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="@dimen/fingerprint_progress_bar_max_size"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginTop="@dimen/fingerprint_enrolling_content_margin_top"/>
|
||||
|
||||
|
@@ -15,32 +15,11 @@
|
||||
~ limitations under the License
|
||||
-->
|
||||
|
||||
<RelativeLayout
|
||||
<com.android.settings.widget.RingProgressBar
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/fingerprint_progress_bar"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/fingerprint_animator"
|
||||
android:layout_width="@dimen/fingerprint_animation_size"
|
||||
android:layout_height="@dimen/fingerprint_animation_size"
|
||||
android:layout_centerInParent="true"
|
||||
android:background="@drawable/fp_illustration_enrollment"
|
||||
android:backgroundTint="@color/fingerprint_indicator_background_resting"
|
||||
android:src="@drawable/enrollment_fingerprint_isolated_animation"/>
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/fingerprint_progress_bar"
|
||||
android:layout_width="?attr/fingerprint_progress_bar_size"
|
||||
android:layout_height="?attr/fingerprint_progress_bar_size"
|
||||
android:layout_centerInParent="true"
|
||||
style="?android:attr/progressBarStyleHorizontal"
|
||||
android:max="10000"
|
||||
android:mirrorForRtl="false"
|
||||
android:progress="0"
|
||||
android:indeterminate="false"
|
||||
android:progressDrawable="@drawable/fingerprint_progress_ring"
|
||||
android:rotation="-90"/>
|
||||
|
||||
</RelativeLayout>
|
||||
android:background="@drawable/fp_illustration"
|
||||
android:minHeight="@dimen/fingerprint_progress_bar_min_size"
|
||||
android:progress="0" />
|
||||
|
@@ -16,16 +16,10 @@
|
||||
-->
|
||||
|
||||
<resources>
|
||||
<dimen name="fingerprint_ring_radius">106dp</dimen>
|
||||
<dimen name="fingerprint_animation_size">100dp</dimen>
|
||||
<dimen name="fingerprint_progress_bar_size">220dp</dimen>
|
||||
<dimen name="fingerprint_enrolling_content_margin_top">56dp</dimen>
|
||||
<dimen name="fingerprint_in_app_indicator_size">176dp</dimen>
|
||||
<dimen name="fingerprint_find_sensor_graphic_size">240dp</dimen>
|
||||
|
||||
<dimen name="setup_fingerprint_ring_radius">92dp</dimen>
|
||||
<dimen name="setup_fingerprint_progress_bar_size">192dp</dimen>
|
||||
|
||||
<dimen name="support_escalation_card_padding_start">56dp</dimen>
|
||||
<dimen name="support_escalation_card_padding_end">56dp</dimen>
|
||||
</resources>
|
||||
|
@@ -53,8 +53,6 @@
|
||||
<color name="fingerprint_title_area_bg">?android:attr/colorAccent</color>
|
||||
<color name="fingerprint_title_color">#ffffffff</color>
|
||||
<color name="fingerprint_message_color">#de000000</color>
|
||||
<color name="fingerprint_progress_ring">?android:attr/colorAccent</color>
|
||||
<color name="fingerprint_progress_ring_bg">#20000000</color>
|
||||
<color name="fingerprint_indicator_background_resting">#12000000</color>
|
||||
|
||||
<color name="running_processes_system_ram">#ff384248</color>
|
||||
|
@@ -67,6 +67,7 @@
|
||||
|
||||
<dimen name="captioning_preview_height">200dp</dimen>
|
||||
|
||||
<dimen name="ring_progress_bar_thickness">4dp</dimen>
|
||||
<dimen name="settings_side_margin">0dip</dimen>
|
||||
|
||||
<!-- Weight of the left pane in a multi-pane preference layout. -->
|
||||
@@ -221,8 +222,6 @@
|
||||
<dimen name="redaction_vertical_margins">8dp</dimen>
|
||||
|
||||
<!-- Fingerprint -->
|
||||
<dimen name="fingerprint_ring_radius">92dip</dimen>
|
||||
<dimen name="fingerprint_ring_thickness">4dip</dimen>
|
||||
<dimen name="fingerprint_dot_radius">8dp</dimen>
|
||||
<dimen name="fingerprint_pulse_radius">50dp</dimen>
|
||||
<item name="fingerprint_sensor_location_fraction_x" type="fraction">50%</item>
|
||||
@@ -233,15 +232,13 @@
|
||||
<dimen name="fingerprint_error_text_appear_distance">16dp</dimen>
|
||||
<dimen name="fingerprint_error_text_disappear_distance">-8dp</dimen>
|
||||
<dimen name="fingerprint_animation_size">88dp</dimen>
|
||||
<dimen name="fingerprint_progress_bar_size">192dp</dimen>
|
||||
<dimen name="fingerprint_progress_bar_max_size">220dp</dimen>
|
||||
<dimen name="fingerprint_progress_bar_min_size">120dp</dimen>
|
||||
<dimen name="fingerprint_enrolling_content_margin_top">36dp</dimen>
|
||||
<dimen name="fingerprint_in_app_indicator_size">124dp</dimen>
|
||||
<dimen name="fingerprint_in_app_indicator_min_size">124dp</dimen>
|
||||
<dimen name="fingerprint_in_app_indicator_max_size">264dp</dimen>
|
||||
|
||||
<dimen name="setup_fingerprint_ring_radius">80dip</dimen>
|
||||
<dimen name="setup_fingerprint_progress_bar_size">168dp</dimen>
|
||||
|
||||
<dimen name="confirm_credentials_security_method_margin">48dp</dimen>
|
||||
<dimen name="confirm_credentials_layout_width">@dimen/match_parent</dimen>
|
||||
<dimen name="confirm_credentials_top_padding">0dp</dimen>
|
||||
|
@@ -445,4 +445,11 @@
|
||||
<item name="android:lineSpacingMultiplier">1.2</item>
|
||||
</style>
|
||||
|
||||
<style name="RingProgressBarStyle" parent="android:style/Widget.Material.ProgressBar.Horizontal">
|
||||
<item name="android:indeterminate">false</item>
|
||||
<item name="android:max">10000</item>
|
||||
<item name="android:mirrorForRtl">false</item>
|
||||
<item name="android:progressDrawable">@drawable/ring_progress</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
||||
|
@@ -16,8 +16,6 @@
|
||||
|
||||
<resources>
|
||||
<attr name="fingerprint_layout_theme" format="reference" />
|
||||
<attr name="fingerprint_progress_bar_size" format="reference|dimension" />
|
||||
<attr name="fingerprint_ring_radius" format="reference|dimension" />
|
||||
<attr name="ic_menu_moreoverflow" format="reference" />
|
||||
<attr name="ic_wps" format="reference" />
|
||||
<attr name="setup_divider_color" format="reference" />
|
||||
@@ -38,8 +36,6 @@
|
||||
<item name="android:windowBackground">?android:attr/colorBackground</item>
|
||||
<item name="*android:preferencePanelStyle">@*android:style/PreferencePanel.Dialog</item>
|
||||
<item name="fingerprint_layout_theme">@style/FingerprintLayoutTheme</item>
|
||||
<item name="fingerprint_progress_bar_size">@dimen/setup_fingerprint_progress_bar_size</item>
|
||||
<item name="fingerprint_ring_radius">@dimen/setup_fingerprint_ring_radius</item>
|
||||
<item name="ic_menu_moreoverflow">@*android:drawable/ic_menu_moreoverflow_material</item>
|
||||
<item name="ic_wps">@drawable/ic_wps_dark</item>
|
||||
<item name="setup_divider_color">@color/setup_divider_color_dark</item>
|
||||
@@ -62,8 +58,6 @@
|
||||
<item name="android:windowBackground">?android:attr/colorBackground</item>
|
||||
<item name="*android:preferencePanelStyle">@*android:style/PreferencePanel.Dialog</item>
|
||||
<item name="fingerprint_layout_theme">@style/FingerprintLayoutTheme</item>
|
||||
<item name="fingerprint_progress_bar_size">@dimen/setup_fingerprint_progress_bar_size</item>
|
||||
<item name="fingerprint_ring_radius">@dimen/setup_fingerprint_ring_radius</item>
|
||||
<item name="ic_menu_moreoverflow">@*android:drawable/ic_menu_moreoverflow_material</item>
|
||||
<item name="ic_wps">@drawable/ic_wps_light</item>
|
||||
<item name="setup_divider_color">@color/setup_divider_color_light</item>
|
||||
@@ -141,8 +135,6 @@
|
||||
<item name="*android:preferenceFragmentPaddingSide">@dimen/settings_side_margin</item>
|
||||
|
||||
<item name="fingerprint_layout_theme">@style/FingerprintLayoutTheme</item>
|
||||
<item name="fingerprint_progress_bar_size">@dimen/fingerprint_progress_bar_size</item>
|
||||
<item name="fingerprint_ring_radius">@dimen/fingerprint_ring_radius</item>
|
||||
<item name="ic_menu_moreoverflow">@*android:drawable/ic_menu_moreoverflow_holo_dark</item>
|
||||
<item name="ic_wps">@drawable/ic_wps_light</item>
|
||||
<item name="wifi_signal">@drawable/wifi_signal</item>
|
||||
|
@@ -23,13 +23,12 @@ import android.animation.ValueAnimator;
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.Dialog;
|
||||
import android.app.DialogFragment;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.graphics.drawable.Animatable2;
|
||||
import android.graphics.drawable.AnimatedVectorDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.graphics.drawable.LayerDrawable;
|
||||
import android.hardware.fingerprint.FingerprintManager;
|
||||
import android.os.Bundle;
|
||||
import android.os.UserHandle;
|
||||
@@ -37,7 +36,6 @@ import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.animation.AnimationUtils;
|
||||
import android.view.animation.Interpolator;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
@@ -75,7 +73,6 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase
|
||||
private static final int ICON_TOUCH_COUNT_SHOW_UNTIL_DIALOG_SHOWN = 3;
|
||||
|
||||
private ProgressBar mProgressBar;
|
||||
private ImageView mFingerprintAnimator;
|
||||
private ObjectAnimator mProgressAnim;
|
||||
private TextView mStartMessage;
|
||||
private TextView mRepeatMessage;
|
||||
@@ -87,6 +84,7 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase
|
||||
private FingerprintEnrollSidecar mSidecar;
|
||||
private boolean mAnimationCancelled;
|
||||
private AnimatedVectorDrawable mIconAnimationDrawable;
|
||||
private Drawable mIconBackgroundDrawable;
|
||||
private int mIndicatorBackgroundRestingColor;
|
||||
private int mIndicatorBackgroundActivatedColor;
|
||||
private boolean mRestoring;
|
||||
@@ -100,8 +98,11 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase
|
||||
mRepeatMessage = (TextView) findViewById(R.id.repeat_message);
|
||||
mErrorText = (TextView) findViewById(R.id.error_text);
|
||||
mProgressBar = (ProgressBar) findViewById(R.id.fingerprint_progress_bar);
|
||||
mFingerprintAnimator = (ImageView) findViewById(R.id.fingerprint_animator);
|
||||
mIconAnimationDrawable = (AnimatedVectorDrawable) mFingerprintAnimator.getDrawable();
|
||||
final LayerDrawable fingerprintDrawable = (LayerDrawable) mProgressBar.getBackground();
|
||||
mIconAnimationDrawable = (AnimatedVectorDrawable)
|
||||
fingerprintDrawable.findDrawableByLayerId(R.id.fingerprint_animation);
|
||||
mIconBackgroundDrawable =
|
||||
fingerprintDrawable.findDrawableByLayerId(R.id.fingerprint_background);
|
||||
mIconAnimationDrawable.registerAnimationCallback(mIconAnimationCallback);
|
||||
mFastOutSlowInInterpolator = AnimationUtils.loadInterpolator(
|
||||
this, android.R.interpolator.fast_out_slow_in);
|
||||
@@ -109,7 +110,7 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase
|
||||
this, android.R.interpolator.linear_out_slow_in);
|
||||
mFastOutLinearInInterpolator = AnimationUtils.loadInterpolator(
|
||||
this, android.R.interpolator.fast_out_linear_in);
|
||||
mFingerprintAnimator.setOnTouchListener(new View.OnTouchListener() {
|
||||
mProgressBar.setOnTouchListener(new View.OnTouchListener() {
|
||||
@Override
|
||||
public boolean onTouch(View v, MotionEvent event) {
|
||||
if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
|
||||
@@ -117,12 +118,12 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase
|
||||
if (mIconTouchCount == ICON_TOUCH_COUNT_SHOW_UNTIL_DIALOG_SHOWN) {
|
||||
showIconTouchDialog();
|
||||
} else {
|
||||
mFingerprintAnimator.postDelayed(mShowDialogRunnable,
|
||||
mProgressBar.postDelayed(mShowDialogRunnable,
|
||||
ICON_TOUCH_DURATION_UNTIL_DIALOG_SHOWN);
|
||||
}
|
||||
} else if (event.getActionMasked() == MotionEvent.ACTION_CANCEL
|
||||
|| event.getActionMasked() == MotionEvent.ACTION_UP) {
|
||||
mFingerprintAnimator.removeCallbacks(mShowDialogRunnable);
|
||||
mProgressBar.removeCallbacks(mShowDialogRunnable);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -131,6 +132,7 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase
|
||||
= getColor(R.color.fingerprint_indicator_background_resting);
|
||||
mIndicatorBackgroundActivatedColor
|
||||
= getColor(R.color.fingerprint_indicator_background_activated);
|
||||
mIconBackgroundDrawable.setTint(mIndicatorBackgroundRestingColor);
|
||||
mRestoring = savedInstanceState != null;
|
||||
}
|
||||
|
||||
@@ -213,8 +215,7 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase
|
||||
new ValueAnimator.AnimatorUpdateListener() {
|
||||
@Override
|
||||
public void onAnimationUpdate(ValueAnimator animation) {
|
||||
mFingerprintAnimator.setBackgroundTintList(ColorStateList.valueOf(
|
||||
(Integer) animation.getAnimatedValue()));
|
||||
mIconBackgroundDrawable.setTint((Integer) animation.getAnimatedValue());
|
||||
}
|
||||
};
|
||||
anim.addUpdateListener(listener);
|
||||
@@ -400,7 +401,7 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase
|
||||
}
|
||||
|
||||
// Start animation after it has ended.
|
||||
mFingerprintAnimator.post(new Runnable() {
|
||||
mProgressBar.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
startIconAnimation();
|
||||
|
57
src/com/android/settings/widget/RingProgressBar.java
Normal file
57
src/com/android/settings/widget/RingProgressBar.java
Normal file
@@ -0,0 +1,57 @@
|
||||
/*
|
||||
* Copyright (C) 2016 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.
|
||||
*/
|
||||
|
||||
package com.android.settings.widget;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import android.widget.ProgressBar;
|
||||
|
||||
import com.android.settings.R;
|
||||
|
||||
/**
|
||||
* A (determinate) progress bar in the form of a ring. The progress bar goes clockwise starting
|
||||
* from the 12 o'clock position. This view maintain equal width and height using a strategy similar
|
||||
* to "centerInside" for ImageView.
|
||||
*/
|
||||
public class RingProgressBar extends ProgressBar {
|
||||
|
||||
public RingProgressBar(Context context) {
|
||||
this(context, null);
|
||||
}
|
||||
|
||||
public RingProgressBar(Context context, AttributeSet attrs) {
|
||||
this(context, attrs, 0);
|
||||
}
|
||||
|
||||
public RingProgressBar(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
this(context, attrs, defStyleAttr, R.style.RingProgressBarStyle);
|
||||
}
|
||||
|
||||
public RingProgressBar(Context context, AttributeSet attrs, int defStyleAttr,
|
||||
int defStyleRes) {
|
||||
super(context, attrs, defStyleAttr, defStyleRes);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
||||
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
|
||||
final int measuredHeight = getMeasuredHeight();
|
||||
final int measuredWidth = getMeasuredWidth();
|
||||
final int shortSide = Math.min(measuredHeight, measuredWidth);
|
||||
setMeasuredDimension(shortSide, shortSide);
|
||||
}
|
||||
}
|
@@ -0,0 +1,70 @@
|
||||
/*
|
||||
* Copyright (C) 2016 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.
|
||||
*/
|
||||
|
||||
package com.android.settings.widget;
|
||||
|
||||
import static junit.framework.Assert.assertEquals;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.View.MeasureSpec;
|
||||
|
||||
import com.android.settings.TestConfig;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
import org.robolectric.annotation.Config;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
||||
public class RingProgressBarTest {
|
||||
|
||||
private Context mContext = RuntimeEnvironment.application;
|
||||
|
||||
private RingProgressBar mProgressBar;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
mProgressBar = new RingProgressBar(mContext);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMeasurePortrait() {
|
||||
mProgressBar.measure(
|
||||
MeasureSpec.makeMeasureSpec(100, MeasureSpec.EXACTLY),
|
||||
MeasureSpec.makeMeasureSpec(200, MeasureSpec.EXACTLY));
|
||||
assertEquals(100, mProgressBar.getMeasuredHeight());
|
||||
assertEquals(100, mProgressBar.getMeasuredWidth());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMeasureLandscape() {
|
||||
mProgressBar.measure(
|
||||
MeasureSpec.makeMeasureSpec(200, MeasureSpec.EXACTLY),
|
||||
MeasureSpec.makeMeasureSpec(100, MeasureSpec.EXACTLY));
|
||||
assertEquals(100, mProgressBar.getMeasuredHeight());
|
||||
assertEquals(100, mProgressBar.getMeasuredWidth());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDefaultAttributes() {
|
||||
assertEquals(false, mProgressBar.isIndeterminate());
|
||||
assertEquals(0, mProgressBar.getProgress());
|
||||
assertEquals(10000, mProgressBar.getMax());
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user