Change fingerprint enrolling animation to 4 colors

This change includes two parts:
1. Change the scan animation from grey to 4 colors
2. Change the registered blink from blue to 4 colors

Bug: 75963029
Test: Manual
Change-Id: I0a0d68e82e8427bb46095461878502899f273bda
This commit is contained in:
Cyril Lee
2018-04-25 14:54:25 +08:00
parent 6fcce25b72
commit 1b72815e9b
12 changed files with 308 additions and 65 deletions

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2018 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.
-->
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="sequentially" >
<set
android:ordering="together" >
<objectAnimator
android:duration="300"
android:propertyName="fillColor"
android:valueFrom="#000000"
android:valueTo="#4285F4"
android:valueType="intType"
android:interpolator="@android:interpolator/linear_out_slow_in" />
<objectAnimator
android:duration="300"
android:propertyName="fillAlpha"
android:valueFrom="0.07f"
android:valueTo="0.65f"
android:valueType="floatType" />
</set>
<set
android:ordering="together" >
<objectAnimator
android:duration="300"
android:propertyName="fillColor"
android:valueFrom="#4285F4"
android:valueTo="#000000"
android:valueType="intType"
android:interpolator="@android:interpolator/fast_out_slow_in" />
<objectAnimator
android:duration="300"
android:propertyName="fillAlpha"
android:valueFrom="0.65f"
android:valueTo="0.07f"
android:valueType="floatType" />
</set>
</set>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2018 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.
-->
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="sequentially" >
<set
android:ordering="together" >
<objectAnimator
android:duration="300"
android:propertyName="fillColor"
android:valueFrom="#000000"
android:valueTo="#EA4335"
android:valueType="intType"
android:interpolator="@android:interpolator/linear_out_slow_in" />
<objectAnimator
android:duration="300"
android:propertyName="fillAlpha"
android:valueFrom="0.07f"
android:valueTo="0.65f"
android:valueType="floatType" />
</set>
<set
android:ordering="together" >
<objectAnimator
android:duration="300"
android:propertyName="fillColor"
android:valueFrom="#EA4335"
android:valueTo="#000000"
android:valueType="intType"
android:interpolator="@android:interpolator/fast_out_slow_in" />
<objectAnimator
android:duration="300"
android:propertyName="fillAlpha"
android:valueFrom="0.65f"
android:valueTo="0.07f"
android:valueType="floatType" />
</set>
</set>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2018 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.
-->
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="sequentially" >
<set
android:ordering="together" >
<objectAnimator
android:duration="300"
android:propertyName="fillColor"
android:valueFrom="#000000"
android:valueTo="#4285F4"
android:valueType="intType"
android:interpolator="@android:interpolator/linear_out_slow_in" />
<objectAnimator
android:duration="300"
android:propertyName="fillAlpha"
android:valueFrom="0.07f"
android:valueTo="0.65f"
android:valueType="floatType" />
</set>
<set
android:ordering="together" >
<objectAnimator
android:duration="300"
android:propertyName="fillColor"
android:valueFrom="#4285F4"
android:valueTo="#000000"
android:valueType="intType"
android:interpolator="@android:interpolator/fast_out_slow_in" />
<objectAnimator
android:duration="300"
android:propertyName="fillAlpha"
android:valueFrom="0.65f"
android:valueTo="0.07f"
android:valueType="floatType" />
</set>
</set>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2018 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.
-->
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="sequentially" >
<set
android:ordering="together" >
<objectAnimator
android:duration="300"
android:propertyName="fillColor"
android:valueFrom="#000000"
android:valueTo="#FBBC04"
android:valueType="intType"
android:interpolator="@android:interpolator/linear_out_slow_in" />
<objectAnimator
android:duration="300"
android:propertyName="fillAlpha"
android:valueFrom="0.07f"
android:valueTo="0.65f"
android:valueType="floatType" />
</set>
<set
android:ordering="together" >
<objectAnimator
android:duration="300"
android:propertyName="fillColor"
android:valueFrom="#FBBC04"
android:valueTo="#000000"
android:valueType="intType"
android:interpolator="@android:interpolator/fast_out_slow_in" />
<objectAnimator
android:duration="300"
android:propertyName="fillAlpha"
android:valueFrom="0.65f"
android:valueTo="0.07f"
android:valueType="floatType" />
</set>
</set>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2018 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.
-->
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="sequentially" >
<set
android:ordering="together" >
<objectAnimator
android:duration="300"
android:propertyName="fillColor"
android:valueFrom="#000000"
android:valueTo="#34A853"
android:valueType="intType"
android:interpolator="@android:interpolator/linear_out_slow_in" />
<objectAnimator
android:duration="300"
android:propertyName="fillAlpha"
android:valueFrom="0.07f"
android:valueTo="0.65f"
android:valueType="floatType" />
</set>
<set
android:ordering="together" >
<objectAnimator
android:duration="300"
android:propertyName="fillColor"
android:valueFrom="#34A853"
android:valueTo="#000000"
android:valueType="intType"
android:interpolator="@android:interpolator/fast_out_slow_in" />
<objectAnimator
android:duration="300"
android:propertyName="fillAlpha"
android:valueFrom="0.65f"
android:valueTo="0.07f"
android:valueType="floatType" />
</set>
</set>

View File

@@ -1,20 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2015 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:alpha="0.5" android:color="?android:attr/colorAccent" />
</selector>

View File

@@ -30,7 +30,7 @@
<path
android:name="ridge_5_path"
android:pathData="M 24.9488677979,32.3508300781 c -1.81059265137,0.338500976562 -3.58520507812,0.447387695312 -4.62879943848,0.447387695312 c -4.12730407715,0.0 -8.05894470215,-0.96842956543 -11.5207061768,-3.45275878906 c -5.33699035645,-3.830078125 -8.56369018555,-10.0885009766 -8.56369018555,-17.1589355469"
android:strokeColor="#19000000"
android:strokeColor="#4DEA4335"
android:strokeWidth="5"
android:strokeLineCap="round"
android:trimPathEnd="0" />
@@ -40,7 +40,7 @@
<path
android:name="ridge_7_path"
android:pathData="M -9.23379516602,40.8356933594 c -3.24549865723,-3.46032714844 -5.1540222168,-5.77195739746 -7.87710571289,-10.9068603516 c -2.76379394531,-5.21166992188 -4.04838562012,-11.3482666016 -4.04838562012,-17.6915283203 c 0.0,-11.6563720703 9.44940185547,-21.1059570312 21.1058959961,-21.1059570312 c 11.6564941406,0.0 21.1058959961,9.44958496094 21.1058959961,21.1059570312"
android:strokeColor="#19000000"
android:strokeColor="#4DFBBC04"
android:strokeWidth="5"
android:strokeLineCap="round"
android:trimPathEnd="0" />
@@ -50,7 +50,7 @@
<path
android:name="ridge_6_path"
android:pathData="M -28.8249053955,28.5169677734 c -2.41259765625,-6.82202148438 -2.85319519043,-12.3121337891 -2.85319519043,-16.3226318359 c 0.0,-4.64868164062 0.792999267578,-9.06323242188 2.59269714355,-13.0396728516 c 4.96929931641,-10.9801025391 16.0211029053,-18.619140625 28.857208252,-18.619140625 c 17.4846954346,0.0 31.6587982178,14.1740722656 31.6587982178,31.6588134766 c 0.0,5.82824707031 -4.72470092773,10.5529785156 -10.5529022217,10.5529785156 c -5.82820129395,0.0 -10.5529937744,-4.72473144531 -10.5529937744,-10.5529785156 c 0.0,-5.82824707031 -4.72470092773,-10.5529785156 -10.5529022217,-10.5529785156 c -5.82820129395,0.0 -10.5529022217,4.72473144531 -10.5529022217,10.5529785156 c 0.0,8.17932128906 3.10879516602,15.5925292969 8.25030517578,21.0004882812 c 3.88919067383,4.09069824219 7.77758789062,6.64123535156 14.2838897705,8.52136230469"
android:strokeColor="#19000000"
android:strokeColor="#4D4285F4"
android:strokeWidth="5"
android:strokeLineCap="round"
android:trimPathStart="1" />
@@ -60,7 +60,7 @@
<path
android:name="ridge_2_path"
android:pathData="M -34.4861907959,-11.6943359375 c 3.78790283203,-5.64636230469 8.36389160156,-9.94665527344 14.3594970703,-13.2164306641 c 5.99560546875,-3.26977539062 12.8716125488,-5.1279296875 20.1817016602,-5.1279296875 c 7.27980041504,0.0 14.129196167,1.84289550781 20.1071014404,5.08740234375 c 5.97790527344,3.24450683594 10.7957000732,7.759765625 14.5897064209,13.3666992188"
android:strokeColor="#19000000"
android:strokeColor="#4D34A853"
android:strokeWidth="5"
android:strokeLineCap="round"
android:trimPathStart="1" />
@@ -72,7 +72,7 @@
<path
android:name="ridge_1_path"
android:pathData="M 121.472564697,107.859741211 c -7.39790344238,-4.03979492188 -15.2462921143,-6.34167480469 -24.3116912842,-6.34167480469 c -9.06539916992,0.0 -16.2951049805,2.40405273438 -23.12550354,6.34167480469"
android:strokeColor="#19000000"
android:strokeColor="#4D4285F4"
android:strokeWidth="5"
android:strokeLineCap="round"
android:trimPathEnd="0" />

View File

@@ -19,7 +19,7 @@
<item
android:id="@+id/fingerprint_background"
android:drawable="@drawable/fp_illustration_enrollment" />
android:drawable="@drawable/fp_illustration_enrollment_animation" />
<item
android:id="@+id/fingerprint_animation"

View File

@@ -22,19 +22,24 @@ Copyright (C) 2015 The Android Open Source Project
android:translateX="44"
android:translateY="44">
<path
android:fillColor="#FF000000"
android:name="background_5_path"
android:fillColor="#12000000"
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:name="background_7_path"
android:fillColor="#12000000"
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:name="background_6_path"
android:fillColor="#12000000"
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:name="background_2_path"
android:fillColor="#12000000"
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:name="background_1_path"
android:fillColor="#12000000"
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>

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2018 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.
-->
<animated-vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/fp_illustration_enrollment" >
<target
android:name="background_5_path"
android:animation="@anim/enrollment_fingerprint_background_5_path_animation" />
<target
android:name="background_7_path"
android:animation="@anim/enrollment_fingerprint_background_7_path_animation" />
<target
android:name="background_6_path"
android:animation="@anim/enrollment_fingerprint_background_6_path_animation" />
<target
android:name="background_2_path"
android:animation="@anim/enrollment_fingerprint_background_2_path_animation" />
<target
android:name="background_1_path"
android:animation="@anim/enrollment_fingerprint_background_1_path_animation" />
</animated-vector>

View File

@@ -48,7 +48,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_indicator_background_resting">#12000000</color>
<color name="running_processes_system_ram">#ff384248</color>
<color name="running_processes_free_ram">#ffced7db</color>

View File

@@ -97,9 +97,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 AnimatedVectorDrawable mIconBackgroundBlinksDrawable;
private boolean mRestoring;
private Vibrator mVibrator;
@@ -120,7 +118,7 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase
final LayerDrawable fingerprintDrawable = (LayerDrawable) mProgressBar.getBackground();
mIconAnimationDrawable = (AnimatedVectorDrawable)
fingerprintDrawable.findDrawableByLayerId(R.id.fingerprint_animation);
mIconBackgroundDrawable =
mIconBackgroundBlinksDrawable = (AnimatedVectorDrawable)
fingerprintDrawable.findDrawableByLayerId(R.id.fingerprint_background);
mIconAnimationDrawable.registerAnimationCallback(mIconAnimationCallback);
mFastOutSlowInInterpolator = AnimationUtils.loadInterpolator(
@@ -147,11 +145,6 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase
return true;
}
});
mIndicatorBackgroundRestingColor
= getColor(R.color.fingerprint_indicator_background_resting);
mIndicatorBackgroundActivatedColor
= getColor(R.color.fingerprint_indicator_background_activated);
mIconBackgroundDrawable.setTint(mIndicatorBackgroundRestingColor);
mRestoring = savedInstanceState != null;
}
@@ -240,30 +233,7 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase
}
private void animateFlash() {
ValueAnimator anim = ValueAnimator.ofArgb(mIndicatorBackgroundRestingColor,
mIndicatorBackgroundActivatedColor);
final ValueAnimator.AnimatorUpdateListener listener =
new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
mIconBackgroundDrawable.setTint((Integer) animation.getAnimatedValue());
}
};
anim.addUpdateListener(listener);
anim.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
ValueAnimator anim = ValueAnimator.ofArgb(mIndicatorBackgroundActivatedColor,
mIndicatorBackgroundRestingColor);
anim.addUpdateListener(listener);
anim.setDuration(300);
anim.setInterpolator(mLinearOutSlowInInterpolator);
anim.start();
}
});
anim.setInterpolator(mFastOutSlowInInterpolator);
anim.setDuration(300);
anim.start();
mIconBackgroundBlinksDrawable.start();
}
private void launchFinish(byte[] token) {