diff options
| author | 2019-06-27 04:41:42 +0000 | |
|---|---|---|
| committer | 2019-06-27 04:41:42 +0000 | |
| commit | 8eccd076fab430b80c3566f045d05ab4f2f6746e (patch) | |
| tree | fb9d337964659cae8f3b08b377a478a2c05f3f8b | |
| parent | 6e9eedb96388215587881992d0dec9f958b024da (diff) | |
| parent | ad2577e1c050b7b9dfdf2a5ae2595341b72b631f (diff) | |
Merge "LockIcon fixes" into qt-r1-dev
6 files changed, 93 insertions, 1169 deletions
diff --git a/packages/SystemUI/res/anim/lock_in.xml b/packages/SystemUI/res/anim/lock_in.xml deleted file mode 100644 index c7014e80d33e..000000000000 --- a/packages/SystemUI/res/anim/lock_in.xml +++ /dev/null @@ -1,227 +0,0 @@ -<!-- Copyright (C) 2019 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" - xmlns:aapt="http://schemas.android.com/aapt"> - <aapt:attr name="android:drawable"> - <vector android:height="42dp" android:width="32dp" android:viewportHeight="42" - android:viewportWidth="32"> - <group android:name="_R_G"> - <group android:name="_R_G_L_2_G" android:translateX="1.6669999999999998" - android:translateY="11.992999999999999" android:pivotX="14.333" - android:pivotY="13" android:scaleX="0" android:scaleY="0"> - <path android:name="_R_G_L_2_G_D_0_P_0" android:strokeColor="#ffffff" - android:strokeLineCap="round" android:strokeLineJoin="round" - android:strokeWidth="2" android:strokeAlpha="1" - android:pathData=" M22.33 21 C22.33,21 6.33,21 6.33,21 C5.6,21 5,20.4 5,19.67 C5,19.67 5,6.33 5,6.33 C5,5.6 5.6,5 6.33,5 C6.33,5 22.33,5 22.33,5 C23.07,5 23.67,5.6 23.67,6.33 C23.67,6.33 23.67,19.67 23.67,19.67 C23.67,20.4 23.07,21 22.33,21c "/> - </group> - <group android:name="_R_G_L_1_G_N_4_T_0" android:translateX="1.6669999999999998" - android:translateY="11.992999999999999" android:pivotX="14.333" - android:pivotY="13" android:scaleX="0" android:scaleY="0"> - <group android:name="_R_G_L_1_G" android:translateX="11.583" - android:translateY="10.257"> - <path android:name="_R_G_L_1_G_D_0_P_0" android:fillColor="#ffffff" - android:fillAlpha="1" android:fillType="nonZero" - android:pathData=" M2.75 0.25 C4.13,0.25 5.25,1.37 5.25,2.75 C5.25,4.13 4.13,5.25 2.75,5.25 C1.37,5.25 0.25,4.13 0.25,2.75 C0.25,1.37 1.37,0.25 2.75,0.25c "/> - </group> - </group> - <group android:name="_R_G_L_0_G_N_4_T_0" android:translateX="1.6669999999999998" - android:translateY="11.992999999999999" android:pivotX="14.333" - android:pivotY="13" android:scaleX="0" android:scaleY="0"> - <group android:name="_R_G_L_0_G_T_1" android:translateX="14.333" - android:translateY="3.172"> - <group android:name="_R_G_L_0_G" android:translateX="-9.667" - android:translateY="-9.667"> - <path android:name="_R_G_L_0_G_D_0_P_0" android:strokeColor="#ffffff" - android:strokeLineCap="round" android:strokeLineJoin="round" - android:strokeWidth="2" android:strokeAlpha="1" - android:trimPathStart="0.14" android:trimPathEnd="0.89" - android:trimPathOffset="0" - android:pathData=" M14.33 14.33 C14.33,14.33 14.33,9.67 14.33,9.67 C14.33,7.09 12.24,5 9.67,5 C7.09,5 5,7.09 5,9.67 C5,9.67 5,14.33 5,14.33 "/> - </group> - </group> - </group> - </group> - <group android:name="time_group"/> - </vector> - </aapt:attr> - <target android:name="_R_G_L_2_G"> - <aapt:attr name="android:animation"> - <set android:ordering="together"> - <objectAnimator android:propertyName="scaleX" android:duration="233" - android:startOffset="0" android:valueFrom="0" android:valueTo="1.02" - android:valueType="floatType"> - <aapt:attr name="android:interpolator"> - <pathInterpolator android:pathData="M 0.0,0.0 c0.001,0 0.438,1 1.0,1.0"/> - </aapt:attr> - </objectAnimator> - <objectAnimator android:propertyName="scaleY" android:duration="233" - android:startOffset="0" android:valueFrom="0" android:valueTo="1.02" - android:valueType="floatType"> - <aapt:attr name="android:interpolator"> - <pathInterpolator android:pathData="M 0.0,0.0 c0.001,0 0.438,1 1.0,1.0"/> - </aapt:attr> - </objectAnimator> - <objectAnimator android:propertyName="scaleX" android:duration="117" - android:startOffset="233" android:valueFrom="1.02" - android:valueTo="1" android:valueType="floatType"> - <aapt:attr name="android:interpolator"> - <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.565,1 1.0,1.0"/> - </aapt:attr> - </objectAnimator> - <objectAnimator android:propertyName="scaleY" android:duration="117" - android:startOffset="233" android:valueFrom="1.02" - android:valueTo="1" android:valueType="floatType"> - <aapt:attr name="android:interpolator"> - <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.565,1 1.0,1.0"/> - </aapt:attr> - </objectAnimator> - </set> - </aapt:attr> - </target> - <target android:name="_R_G_L_1_G_N_4_T_0"> - <aapt:attr name="android:animation"> - <set android:ordering="together"> - <objectAnimator android:propertyName="scaleX" android:duration="233" - android:startOffset="0" android:valueFrom="0" android:valueTo="1.02" - android:valueType="floatType"> - <aapt:attr name="android:interpolator"> - <pathInterpolator android:pathData="M 0.0,0.0 c0.001,0 0.438,1 1.0,1.0"/> - </aapt:attr> - </objectAnimator> - <objectAnimator android:propertyName="scaleY" android:duration="233" - android:startOffset="0" android:valueFrom="0" android:valueTo="1.02" - android:valueType="floatType"> - <aapt:attr name="android:interpolator"> - <pathInterpolator android:pathData="M 0.0,0.0 c0.001,0 0.438,1 1.0,1.0"/> - </aapt:attr> - </objectAnimator> - <objectAnimator android:propertyName="scaleX" android:duration="117" - android:startOffset="233" android:valueFrom="1.02" - android:valueTo="1" android:valueType="floatType"> - <aapt:attr name="android:interpolator"> - <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.565,1 1.0,1.0"/> - </aapt:attr> - </objectAnimator> - <objectAnimator android:propertyName="scaleY" android:duration="117" - android:startOffset="233" android:valueFrom="1.02" - android:valueTo="1" android:valueType="floatType"> - <aapt:attr name="android:interpolator"> - <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.565,1 1.0,1.0"/> - </aapt:attr> - </objectAnimator> - </set> - </aapt:attr> - </target> - <target android:name="_R_G_L_0_G_D_0_P_0"> - <aapt:attr name="android:animation"> - <set android:ordering="together"> - <objectAnimator android:propertyName="trimPathStart" android:duration="50" - android:startOffset="0" android:valueFrom="0.14" - android:valueTo="0.14" android:valueType="floatType"> - <aapt:attr name="android:interpolator"> - <pathInterpolator - android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/> - </aapt:attr> - </objectAnimator> - <objectAnimator android:propertyName="trimPathStart" android:duration="67" - android:startOffset="50" android:valueFrom="0.14" - android:valueTo="0" android:valueType="floatType"> - <aapt:attr name="android:interpolator"> - <pathInterpolator - android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/> - </aapt:attr> - </objectAnimator> - </set> - </aapt:attr> - </target> - <target android:name="_R_G_L_0_G_D_0_P_0"> - <aapt:attr name="android:animation"> - <set android:ordering="together"> - <objectAnimator android:propertyName="trimPathEnd" android:duration="50" - android:startOffset="0" android:valueFrom="0.89" - android:valueTo="0.89" android:valueType="floatType"> - <aapt:attr name="android:interpolator"> - <pathInterpolator - android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/> - </aapt:attr> - </objectAnimator> - <objectAnimator android:propertyName="trimPathEnd" android:duration="67" - android:startOffset="50" android:valueFrom="0.89" - android:valueTo="1" android:valueType="floatType"> - <aapt:attr name="android:interpolator"> - <pathInterpolator - android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/> - </aapt:attr> - </objectAnimator> - </set> - </aapt:attr> - </target> - <target android:name="_R_G_L_0_G_T_1"> - <aapt:attr name="android:animation"> - <set android:ordering="together"> - <objectAnimator android:propertyName="translateY" android:duration="150" - android:startOffset="0" android:valueFrom="3.172" - android:valueTo="0.34" android:valueType="floatType"> - <aapt:attr name="android:interpolator"> - <pathInterpolator android:pathData="M 0.0,0.0 c0.23,-0.46 0.2,1 1.0,1.0"/> - </aapt:attr> - </objectAnimator> - </set> - </aapt:attr> - </target> - <target android:name="_R_G_L_0_G_N_4_T_0"> - <aapt:attr name="android:animation"> - <set android:ordering="together"> - <objectAnimator android:propertyName="scaleX" android:duration="233" - android:startOffset="0" android:valueFrom="0" android:valueTo="1.02" - android:valueType="floatType"> - <aapt:attr name="android:interpolator"> - <pathInterpolator android:pathData="M 0.0,0.0 c0.001,0 0.438,1 1.0,1.0"/> - </aapt:attr> - </objectAnimator> - <objectAnimator android:propertyName="scaleY" android:duration="233" - android:startOffset="0" android:valueFrom="0" android:valueTo="1.02" - android:valueType="floatType"> - <aapt:attr name="android:interpolator"> - <pathInterpolator android:pathData="M 0.0,0.0 c0.001,0 0.438,1 1.0,1.0"/> - </aapt:attr> - </objectAnimator> - <objectAnimator android:propertyName="scaleX" android:duration="117" - android:startOffset="233" android:valueFrom="1.02" - android:valueTo="1" android:valueType="floatType"> - <aapt:attr name="android:interpolator"> - <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.565,1 1.0,1.0"/> - </aapt:attr> - </objectAnimator> - <objectAnimator android:propertyName="scaleY" android:duration="117" - android:startOffset="233" android:valueFrom="1.02" - android:valueTo="1" android:valueType="floatType"> - <aapt:attr name="android:interpolator"> - <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.565,1 1.0,1.0"/> - </aapt:attr> - </objectAnimator> - </set> - </aapt:attr> - </target> - <target android:name="time_group"> - <aapt:attr name="android:animation"> - <set android:ordering="together"> - <objectAnimator android:propertyName="translateX" android:duration="717" - android:startOffset="0" android:valueFrom="0" android:valueTo="1" - android:valueType="floatType"/> - </set> - </aapt:attr> - </target> -</animated-vector>
\ No newline at end of file diff --git a/packages/SystemUI/res/anim/lock_in_circular.xml b/packages/SystemUI/res/anim/lock_in_circular.xml deleted file mode 100644 index d1e98db6e0e3..000000000000 --- a/packages/SystemUI/res/anim/lock_in_circular.xml +++ /dev/null @@ -1,327 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<animated-vector xmlns:aapt="http://schemas.android.com/aapt" - xmlns:android="http://schemas.android.com/apk/res/android" > - - <aapt:attr name="android:drawable" > - <vector - android:height="32dp" - android:viewportHeight="32" - android:viewportWidth="32" - android:width="32dp" > - <group android:name="_R_G" > - <group - android:name="_R_G_L_2_G" - android:pivotX="9.583" - android:pivotY="8.916" - android:scaleX="0" - android:scaleY="0" - android:translateX="6.416" - android:translateY="10.416999999999998" > - <path - android:name="_R_G_L_2_G_D_0_P_0" - android:fillAlpha="1" - android:fillColor="#ffffff" - android:fillType="nonZero" - android:pathData=" M17.42 1.75 C17.42,1.75 17.42,14.58 17.42,14.58 C17.42,15.41 16.74,16.08 15.92,16.08 C15.92,16.08 3.25,16.08 3.25,16.08 C2.42,16.08 1.75,15.41 1.75,14.58 C1.75,14.58 1.75,1.75 1.75,1.75 C1.75,1.75 17.42,1.75 17.42,1.75c M18.92 0.25 C18.92,0.25 0.25,0.25 0.25,0.25 C0.25,0.25 0.25,14.58 0.25,14.58 C0.25,16.24 1.59,17.58 3.25,17.58 C3.25,17.58 15.92,17.58 15.92,17.58 C17.57,17.58 18.92,16.24 18.92,14.58 C18.92,14.58 18.92,0.25 18.92,0.25c " /> - </group> - <group - android:name="_R_G_L_1_G_N_3_T_0" - android:pivotX="9.583" - android:pivotY="8.916" - android:scaleX="0" - android:scaleY="0" - android:translateX="6.416" - android:translateY="10.416999999999998" > - <group - android:name="_R_G_L_1_G" - android:translateX="7.334" - android:translateY="5.333" > - <path - android:name="_R_G_L_1_G_D_0_P_0" - android:fillAlpha="1" - android:fillColor="#ffffff" - android:fillType="nonZero" - android:pathData=" M4.25 2.25 C4.25,3.35 3.35,4.25 2.25,4.25 C1.15,4.25 0.25,3.35 0.25,2.25 C0.25,1.15 1.15,0.25 2.25,0.25 C3.35,0.25 4.25,1.15 4.25,2.25c " /> - <path - android:name="_R_G_L_1_G_D_1_P_0" - android:pathData=" M2.25 2.25 C2.25,2.25 2.25,5.92 2.25,5.92 " - android:strokeAlpha="1" - android:strokeColor="#ffffff" - android:strokeLineCap="round" - android:strokeLineJoin="round" - android:strokeWidth="1.5" /> - </group> - </group> - <group - android:name="_R_G_L_0_G_N_3_T_0" - android:pivotX="9.583" - android:pivotY="8.916" - android:scaleX="0" - android:scaleY="0" - android:translateX="6.416" - android:translateY="10.416999999999998" > - <group - android:name="_R_G_L_0_G_T_1" - android:translateX="9.583" - android:translateY="-0.861" > - <group - android:name="_R_G_L_0_G" - android:translateX="-8.083" - android:translateY="-8.173" > - <path - android:name="_R_G_L_0_G_D_0_P_0" - android:pathData=" M12.42 12.6 C12.42,12.6 12.42,8.17 12.42,8.17 C12.42,5.83 10.48,3.75 8.08,3.75 C5.69,3.75 3.75,5.83 3.75,8.17 C3.75,8.17 3.75,12.6 3.75,12.6 " - android:strokeAlpha="1" - android:strokeColor="#ffffff" - android:strokeLineCap="round" - android:strokeLineJoin="round" - android:strokeWidth="1.5" - android:trimPathEnd="0.9" - android:trimPathOffset="0" - android:trimPathStart="0.15" /> - </group> - </group> - </group> - </group> - <group android:name="time_group" /> - </vector> - </aapt:attr> - - <target android:name="_R_G_L_2_G" > - <aapt:attr name="android:animation" > - <set android:ordering="together" > - <objectAnimator - android:duration="233" - android:propertyName="scaleX" - android:startOffset="0" - android:valueFrom="0" - android:valueTo="1.025" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - <objectAnimator - android:duration="233" - android:propertyName="scaleY" - android:startOffset="0" - android:valueFrom="0" - android:valueTo="1.025" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - <objectAnimator - android:duration="117" - android:propertyName="scaleX" - android:startOffset="233" - android:valueFrom="1.025" - android:valueTo="1" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - <objectAnimator - android:duration="117" - android:propertyName="scaleY" - android:startOffset="233" - android:valueFrom="1.025" - android:valueTo="1" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - </set> - </aapt:attr> - </target> - <target android:name="_R_G_L_1_G_N_3_T_0" > - <aapt:attr name="android:animation" > - <set android:ordering="together" > - <objectAnimator - android:duration="233" - android:propertyName="scaleX" - android:startOffset="0" - android:valueFrom="0" - android:valueTo="1.025" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - <objectAnimator - android:duration="233" - android:propertyName="scaleY" - android:startOffset="0" - android:valueFrom="0" - android:valueTo="1.025" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - <objectAnimator - android:duration="117" - android:propertyName="scaleX" - android:startOffset="233" - android:valueFrom="1.025" - android:valueTo="1" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - <objectAnimator - android:duration="117" - android:propertyName="scaleY" - android:startOffset="233" - android:valueFrom="1.025" - android:valueTo="1" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - </set> - </aapt:attr> - </target> - <target android:name="_R_G_L_0_G_D_0_P_0" > - <aapt:attr name="android:animation" > - <set android:ordering="together" > - <objectAnimator - android:duration="50" - android:propertyName="trimPathStart" - android:startOffset="0" - android:valueFrom="0.15" - android:valueTo="0.15" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - <objectAnimator - android:duration="67" - android:propertyName="trimPathStart" - android:startOffset="50" - android:valueFrom="0.15" - android:valueTo="0" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - </set> - </aapt:attr> - </target> - <target android:name="_R_G_L_0_G_D_0_P_0" > - <aapt:attr name="android:animation" > - <set android:ordering="together" > - <objectAnimator - android:duration="50" - android:propertyName="trimPathEnd" - android:startOffset="0" - android:valueFrom="0.9" - android:valueTo="0.9" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - <objectAnimator - android:duration="67" - android:propertyName="trimPathEnd" - android:startOffset="50" - android:valueFrom="0.9" - android:valueTo="1" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - </set> - </aapt:attr> - </target> - <target android:name="_R_G_L_0_G_T_1" > - <aapt:attr name="android:animation" > - <set android:ordering="together" > - <objectAnimator - android:duration="150" - android:pathData="M 9.583,-0.861C 9.583,-1.32784640645981 9.583,-3.19515359354019 9.583,-3.662" - android:propertyName="translateXY" - android:propertyXName="translateX" - android:propertyYName="translateY" - android:startOffset="0" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - </set> - </aapt:attr> - </target> - <target android:name="_R_G_L_0_G_N_3_T_0" > - <aapt:attr name="android:animation" > - <set android:ordering="together" > - <objectAnimator - android:duration="233" - android:propertyName="scaleX" - android:startOffset="0" - android:valueFrom="0" - android:valueTo="1.025" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - <objectAnimator - android:duration="233" - android:propertyName="scaleY" - android:startOffset="0" - android:valueFrom="0" - android:valueTo="1.025" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - <objectAnimator - android:duration="117" - android:propertyName="scaleX" - android:startOffset="233" - android:valueFrom="1.025" - android:valueTo="1" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - <objectAnimator - android:duration="117" - android:propertyName="scaleY" - android:startOffset="233" - android:valueFrom="1.025" - android:valueTo="1" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - </set> - </aapt:attr> - </target> - <target android:name="time_group" > - <aapt:attr name="android:animation" > - <set android:ordering="together" > - <objectAnimator - android:duration="717" - android:propertyName="translateX" - android:startOffset="0" - android:valueFrom="0" - android:valueTo="1" - android:valueType="floatType" /> - </set> - </aapt:attr> - </target> - -</animated-vector>
\ No newline at end of file diff --git a/packages/SystemUI/res/anim/lock_in_filled.xml b/packages/SystemUI/res/anim/lock_in_filled.xml deleted file mode 100644 index 4cde38d4f0dc..000000000000 --- a/packages/SystemUI/res/anim/lock_in_filled.xml +++ /dev/null @@ -1,190 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<animated-vector xmlns:aapt="http://schemas.android.com/aapt" - xmlns:android="http://schemas.android.com/apk/res/android" > - - <aapt:attr name="android:drawable" > - <vector - android:height="32dp" - android:viewportHeight="32" - android:viewportWidth="32" - android:width="32dp" > - <group android:name="_R_G" > - <group - android:name="_R_G_L_1_G" - android:pivotX="10.917" - android:pivotY="9.583" - android:scaleX="0" - android:scaleY="0" - android:translateX="5.083" - android:translateY="10.417" > - <path - android:name="_R_G_L_1_G_D_0_P_0" - android:fillAlpha="1" - android:fillColor="#ffffff" - android:fillType="nonZero" - android:pathData=" M18.92 0.25 C18.92,0.25 2.92,0.25 2.92,0.25 C1.45,0.25 0.25,1.45 0.25,2.92 C0.25,2.92 0.25,16.25 0.25,16.25 C0.25,17.72 1.45,18.92 2.92,18.92 C2.92,18.92 18.92,18.92 18.92,18.92 C20.38,18.92 21.58,17.72 21.58,16.25 C21.58,16.25 21.58,2.92 21.58,2.92 C21.58,1.45 20.38,0.25 18.92,0.25c M10.92 12.25 C9.45,12.25 8.25,11.05 8.25,9.58 C8.25,8.12 9.45,6.92 10.92,6.92 C12.38,6.92 13.58,8.12 13.58,9.58 C13.58,11.05 12.38,12.25 10.92,12.25c " /> - </group> - <group - android:name="_R_G_L_0_G_N_2_T_0" - android:pivotX="10.917" - android:pivotY="9.583" - android:scaleX="0" - android:scaleY="0" - android:translateX="5.083" - android:translateY="10.417" > - <group - android:name="_R_G_L_0_G_T_1" - android:translateX="10.917" - android:translateY="0.579" > - <group - android:name="_R_G_L_0_G" - android:translateX="-9" - android:translateY="-9" > - <path - android:name="_R_G_L_0_G_D_0_P_0" - android:pathData=" M13 13 C13,13 13,9 13,9 C13,6.79 11.21,5 9,5 C6.79,5 5,6.79 5,9 C5,9 5,13 5,13 " - android:strokeAlpha="1" - android:strokeColor="#ffffff" - android:strokeLineCap="round" - android:strokeLineJoin="round" - android:strokeWidth="2" /> - </group> - </group> - </group> - </group> - <group android:name="time_group" /> - </vector> - </aapt:attr> - - <target android:name="_R_G_L_1_G" > - <aapt:attr name="android:animation" > - <set android:ordering="together" > - <objectAnimator - android:duration="233" - android:propertyName="scaleX" - android:startOffset="0" - android:valueFrom="0" - android:valueTo="1.025" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - <objectAnimator - android:duration="233" - android:propertyName="scaleY" - android:startOffset="0" - android:valueFrom="0" - android:valueTo="1.025" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - <objectAnimator - android:duration="117" - android:propertyName="scaleX" - android:startOffset="233" - android:valueFrom="1.025" - android:valueTo="1" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - <objectAnimator - android:duration="117" - android:propertyName="scaleY" - android:startOffset="233" - android:valueFrom="1.025" - android:valueTo="1" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - </set> - </aapt:attr> - </target> - <target android:name="_R_G_L_0_G_T_1" > - <aapt:attr name="android:animation" > - <set android:ordering="together" > - <objectAnimator - android:duration="150" - android:pathData="M 10.917,0.579C 10.917,-0.14248990631104008 10.917,-3.02851009368896 10.917,-3.75" - android:propertyName="translateXY" - android:propertyXName="translateX" - android:propertyYName="translateY" - android:startOffset="0" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - </set> - </aapt:attr> - </target> - <target android:name="_R_G_L_0_G_N_2_T_0" > - <aapt:attr name="android:animation" > - <set android:ordering="together" > - <objectAnimator - android:duration="233" - android:propertyName="scaleX" - android:startOffset="0" - android:valueFrom="0" - android:valueTo="1.025" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - <objectAnimator - android:duration="233" - android:propertyName="scaleY" - android:startOffset="0" - android:valueFrom="0" - android:valueTo="1.025" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - <objectAnimator - android:duration="117" - android:propertyName="scaleX" - android:startOffset="233" - android:valueFrom="1.025" - android:valueTo="1" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - <objectAnimator - android:duration="117" - android:propertyName="scaleY" - android:startOffset="233" - android:valueFrom="1.025" - android:valueTo="1" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - </set> - </aapt:attr> - </target> - <target android:name="time_group" > - <aapt:attr name="android:animation" > - <set android:ordering="together" > - <objectAnimator - android:duration="717" - android:propertyName="translateX" - android:startOffset="0" - android:valueFrom="0" - android:valueTo="1" - android:valueType="floatType" /> - </set> - </aapt:attr> - </target> - -</animated-vector>
\ No newline at end of file diff --git a/packages/SystemUI/res/anim/lock_in_rounded.xml b/packages/SystemUI/res/anim/lock_in_rounded.xml deleted file mode 100644 index 7c8cf9d7b525..000000000000 --- a/packages/SystemUI/res/anim/lock_in_rounded.xml +++ /dev/null @@ -1,336 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<animated-vector xmlns:aapt="http://schemas.android.com/aapt" - xmlns:android="http://schemas.android.com/apk/res/android" > - - <aapt:attr name="android:drawable" > - <vector - android:height="38dp" - android:viewportHeight="38" - android:viewportWidth="32" - android:width="32dp" > - <group android:name="_R_G" > - <group - android:name="_R_G_L_2_G" - android:pivotX="14.667" - android:pivotY="12.667" - android:scaleX="0" - android:scaleY="0" - android:translateX="1.3330000000000002" - android:translateY="10.333" > - <path - android:name="_R_G_L_2_G_D_0_P_0" - android:pathData=" M22.09 5 C22.09,5 6,5 6,5 C5.45,5 5,5.45 5,6 C5,6 5,19.33 5,19.33 C5,19.89 5.45,20.33 6,20.33 C6,20.33 23.33,20.33 23.33,20.33 C23.89,20.33 24.33,19.89 24.33,19.33 C24.33,19.33 24.33,6 24.33,6 C24.33,5.45 23.89,5 23.33,5 C23.33,5 22.09,5 22.09,5c " - android:strokeAlpha="1" - android:strokeColor="#ffffff" - android:strokeLineCap="round" - android:strokeLineJoin="round" - android:strokeWidth="1.5" /> - </group> - <group - android:name="_R_G_L_1_G_N_3_T_0" - android:pivotX="14.667" - android:pivotY="12.667" - android:scaleX="0" - android:scaleY="0" - android:translateX="1.3330000000000002" - android:translateY="10.333" > - <group - android:name="_R_G_L_1_G" - android:translateX="12.416" - android:translateY="10.417" > - <path - android:name="_R_G_L_1_G_D_0_P_0" - android:fillAlpha="1" - android:fillColor="#ffffff" - android:fillType="nonZero" - android:pathData=" M2.25 0.25 C3.35,0.25 4.25,1.15 4.25,2.25 C4.25,3.35 3.35,4.25 2.25,4.25 C1.15,4.25 0.25,3.35 0.25,2.25 C0.25,1.15 1.15,0.25 2.25,0.25c " /> - </group> - </group> - <group android:name="_R_G_L_0_G_N_3_T_0_M" > - <group - android:name="_R_G_L_0_G_N_3_T_0" - android:pivotX="14.667" - android:pivotY="12.667" - android:scaleX="0" - android:scaleY="0" - android:translateX="1.3330000000000002" - android:translateY="10.333" > - <group - android:name="_R_G_L_0_G_T_1" - android:translateX="14.666" - android:translateY="3.769" > - <group - android:name="_R_G_L_0_G" - android:translateX="-9.333" - android:translateY="-9.713" > - <path - android:name="_R_G_L_0_G_D_0_P_0" - android:pathData=" M13.67 13.8 C13.67,13.8 13.67,8.94 13.67,8.94 C13.63,6.75 11.69,5 9.33,5.04 C6.98,5 5.04,6.75 5,8.94 C5,8.94 5,13.8 5,13.8 " - android:strokeAlpha="1" - android:strokeColor="#ffffff" - android:strokeLineCap="round" - android:strokeLineJoin="round" - android:strokeWidth="1.5" - android:trimPathEnd="0.9" - android:trimPathOffset="0" - android:trimPathStart="0.14" /> - </group> - </group> - </group> - </group> - </group> - <group android:name="time_group" /> - </vector> - </aapt:attr> - - <target android:name="_R_G_L_2_G" > - <aapt:attr name="android:animation" > - <set android:ordering="together" > - <objectAnimator - android:duration="233" - android:propertyName="scaleX" - android:startOffset="0" - android:valueFrom="0" - android:valueTo="1.025" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - <objectAnimator - android:duration="233" - android:propertyName="scaleY" - android:startOffset="0" - android:valueFrom="0" - android:valueTo="1.025" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - <objectAnimator - android:duration="117" - android:propertyName="scaleX" - android:startOffset="233" - android:valueFrom="1.025" - android:valueTo="1" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - <objectAnimator - android:duration="117" - android:propertyName="scaleY" - android:startOffset="233" - android:valueFrom="1.025" - android:valueTo="1" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - </set> - </aapt:attr> - </target> - <target android:name="_R_G_L_1_G_N_3_T_0" > - <aapt:attr name="android:animation" > - <set android:ordering="together" > - <objectAnimator - android:duration="233" - android:propertyName="scaleX" - android:startOffset="0" - android:valueFrom="0" - android:valueTo="1.025" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - <objectAnimator - android:duration="233" - android:propertyName="scaleY" - android:startOffset="0" - android:valueFrom="0" - android:valueTo="1.025" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - <objectAnimator - android:duration="117" - android:propertyName="scaleX" - android:startOffset="233" - android:valueFrom="1.025" - android:valueTo="1" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - <objectAnimator - android:duration="117" - android:propertyName="scaleY" - android:startOffset="233" - android:valueFrom="1.025" - android:valueTo="1" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - </set> - </aapt:attr> - </target> - <target android:name="_R_G_L_0_G_D_0_P_0" > - <aapt:attr name="android:animation" > - <set android:ordering="together" > - <objectAnimator - android:duration="50" - android:propertyName="trimPathStart" - android:startOffset="0" - android:valueFrom="0.14" - android:valueTo="0.14" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - <objectAnimator - android:duration="67" - android:propertyName="trimPathStart" - android:startOffset="50" - android:valueFrom="0.14" - android:valueTo="0" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - </set> - </aapt:attr> - </target> - <target android:name="_R_G_L_0_G_D_0_P_0" > - <aapt:attr name="android:animation" > - <set android:ordering="together" > - <objectAnimator - android:duration="50" - android:propertyName="trimPathEnd" - android:startOffset="0" - android:valueFrom="0.9" - android:valueTo="0.9" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - <objectAnimator - android:duration="67" - android:propertyName="trimPathEnd" - android:startOffset="50" - android:valueFrom="0.9" - android:valueTo="1" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - </set> - </aapt:attr> - </target> - <target android:name="_R_G_L_0_G_T_1" > - <aapt:attr name="android:animation" > - <set android:ordering="together" > - <objectAnimator - android:duration="150" - android:pathData="M 14.666,3.769C 14.666,3.18868762874603 14.666,0.8673123712539699 14.666,0.287" - android:propertyName="translateXY" - android:propertyXName="translateX" - android:propertyYName="translateY" - android:startOffset="0" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - </set> - </aapt:attr> - </target> - <target android:name="_R_G_L_0_G_N_3_T_0" > - <aapt:attr name="android:animation" > - <set android:ordering="together" > - <objectAnimator - android:duration="233" - android:propertyName="scaleX" - android:startOffset="0" - android:valueFrom="0" - android:valueTo="1.025" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - <objectAnimator - android:duration="233" - android:propertyName="scaleY" - android:startOffset="0" - android:valueFrom="0" - android:valueTo="1.025" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - <objectAnimator - android:duration="117" - android:propertyName="scaleX" - android:startOffset="233" - android:valueFrom="1.025" - android:valueTo="1" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - <objectAnimator - android:duration="117" - android:propertyName="scaleY" - android:startOffset="233" - android:valueFrom="1.025" - android:valueTo="1" - android:valueType="floatType" > - <aapt:attr name="android:interpolator" > - <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> - </aapt:attr> - </objectAnimator> - </set> - </aapt:attr> - </target> - <target android:name="_R_G_L_0_G_N_3_T_0_M" > - <aapt:attr name="android:animation" > - <set android:ordering="together" > - <objectAnimator - android:duration="0" - android:propertyName="scaleX" - android:startOffset="50" - android:valueFrom="0" - android:valueTo="1" - android:valueType="floatType" /> - </set> - </aapt:attr> - </target> - <target android:name="time_group" > - <aapt:attr name="android:animation" > - <set android:ordering="together" > - <objectAnimator - android:duration="717" - android:propertyName="translateX" - android:startOffset="0" - android:valueFrom="0" - android:valueTo="1" - android:valueType="floatType" /> - </set> - </aapt:attr> - </target> - -</animated-vector>
\ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java index ca001c6f3110..1e7c44cdba2f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java @@ -16,7 +16,6 @@ package com.android.systemui.statusbar.phone; -import static com.android.systemui.Dependency.MAIN_HANDLER_NAME; import static com.android.systemui.util.InjectionInflationController.VIEW_CONTEXT; import android.annotation.IntDef; @@ -29,12 +28,12 @@ import android.graphics.drawable.Animatable2; import android.graphics.drawable.AnimatedVectorDrawable; import android.graphics.drawable.Drawable; import android.hardware.biometrics.BiometricSourceType; -import android.os.Handler; import android.os.Trace; import android.provider.Settings; import android.text.TextUtils; import android.util.AttributeSet; import android.view.ViewGroup; +import android.view.ViewTreeObserver; import android.view.accessibility.AccessibilityNodeInfo; import androidx.annotation.Nullable; @@ -43,6 +42,7 @@ import com.android.internal.graphics.ColorUtils; import com.android.internal.telephony.IccCardConstants; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitorCallback; +import com.android.systemui.Interpolators; import com.android.systemui.R; import com.android.systemui.dock.DockManager; import com.android.systemui.plugins.statusbar.StatusBarStateController; @@ -67,7 +67,7 @@ import javax.inject.Named; public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChangedListener, StatusBarStateController.StateListener, ConfigurationController.ConfigurationListener, UnlockMethodCache.OnUnlockMethodChangedListener, - NotificationWakeUpCoordinator.WakeUpListener { + NotificationWakeUpCoordinator.WakeUpListener, ViewTreeObserver.OnPreDrawListener { private static final int STATE_LOCKED = 0; private static final int STATE_LOCK_OPEN = 1; @@ -79,12 +79,12 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; private final AccessibilityController mAccessibilityController; private final DockManager mDockManager; - private final Handler mMainHandler; private final KeyguardMonitor mKeyguardMonitor; private final KeyguardBypassController mBypassController; private final NotificationWakeUpCoordinator mWakeUpCoordinator; private int mLastState = 0; + private boolean mForceUpdate; private boolean mTransientBiometricsError; private boolean mIsFaceUnlockState; private boolean mSimLocked; @@ -92,23 +92,20 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange private boolean mPulsing; private boolean mDozing; private boolean mDocked; - private boolean mLastDozing; - private boolean mLastPulsing; private int mIconColor; private float mDozeAmount; - private int mIconRes; private boolean mBouncerShowing; - private boolean mWasPulsingOnThisFrame; private boolean mWakeAndUnlockRunning; private boolean mKeyguardShowing; private boolean mShowingLaunchAffordance; + private boolean mUpdatePending; private final KeyguardMonitor.Callback mKeyguardMonitorCallback = new KeyguardMonitor.Callback() { @Override public void onKeyguardShowingChanged() { mKeyguardShowing = mKeyguardMonitor.isShowing(); - update(false /* force */); + update(); } }; private final DockManager.DockEventListener mDockEventListener = @@ -119,7 +116,7 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange || event == DockManager.STATE_DOCKED_HIDE; if (docked != mDocked) { mDocked = docked; - update(true /* force */); + update(); } } }; @@ -129,9 +126,8 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange @Override public void onSimStateChanged(int subId, int slotId, IccCardConstants.State simState) { - boolean oldSimLocked = mSimLocked; mSimLocked = mKeyguardUpdateMonitor.isSimPinSecure(); - update(oldSimLocked != mSimLocked); + update(); } @Override @@ -149,11 +145,6 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange public void onStrongAuthStateChanged(int userId) { update(); } - - @Override - public void onBiometricsCleared() { - update(); - } }; @Inject @@ -164,8 +155,7 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange KeyguardBypassController bypassController, NotificationWakeUpCoordinator wakeUpCoordinator, KeyguardMonitor keyguardMonitor, - @Nullable DockManager dockManager, - @Named(MAIN_HANDLER_NAME) Handler mainHandler) { + @Nullable DockManager dockManager) { super(context, attrs); mContext = context; mUnlockMethodCache = UnlockMethodCache.getInstance(context); @@ -177,7 +167,6 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange mWakeUpCoordinator = wakeUpCoordinator; mKeyguardMonitor = keyguardMonitor; mDockManager = dockManager; - mMainHandler = mainHandler; } @Override @@ -194,6 +183,7 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange mDockManager.addListener(mDockEventListener); } onThemeChanged(); + update(); } @Override @@ -247,51 +237,61 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange } public void update(boolean force) { + if (force) { + mForceUpdate = true; + } + if (!mUpdatePending) { + mUpdatePending = true; + getViewTreeObserver().addOnPreDrawListener(this); + } + } + + @Override + public boolean onPreDraw() { + mUpdatePending = false; + getViewTreeObserver().removeOnPreDrawListener(this); + int state = getState(); + int lastState = mLastState; mIsFaceUnlockState = state == STATE_SCANNING_FACE; - if (state != mLastState || mLastDozing != mDozing || mLastPulsing != mPulsing || force) { - @LockAnimIndex final int lockAnimIndex = getAnimationIndexForTransition(mLastState, - state, mLastPulsing, mPulsing, mLastDozing, mDozing); - boolean isAnim = lockAnimIndex != -1; + mLastState = state; + if (lastState != state || mForceUpdate) { + mForceUpdate = false; + @LockAnimIndex final int lockAnimIndex = getAnimationIndexForTransition(lastState, + state, mPulsing, mDozing); + boolean isAnim = lockAnimIndex != -1; int iconRes = isAnim ? getThemedAnimationResId(lockAnimIndex) : getIconForState(state); - if (iconRes != mIconRes) { - mIconRes = iconRes; - - Drawable icon = mContext.getDrawable(iconRes); - final AnimatedVectorDrawable animation = icon instanceof AnimatedVectorDrawable - ? (AnimatedVectorDrawable) icon - : null; - setImageDrawable(icon, false); - if (mIsFaceUnlockState) { - announceForAccessibility(getContext().getString( - R.string.accessibility_scanning_face)); - } - if (animation != null && isAnim) { - animation.forceAnimationOnUI(); - animation.clearAnimationCallbacks(); - animation.registerAnimationCallback(new Animatable2.AnimationCallback() { - @Override - public void onAnimationEnd(Drawable drawable) { - if (getDrawable() == animation && state == getState() - && doesAnimationLoop(lockAnimIndex)) { - animation.start(); - } else { - Trace.endAsyncSection("LockIcon#Animation", state); - } - } - }); - Trace.beginAsyncSection("LockIcon#Animation", state); - animation.start(); - } + Drawable icon = mContext.getDrawable(iconRes); + final AnimatedVectorDrawable animation = icon instanceof AnimatedVectorDrawable + ? (AnimatedVectorDrawable) icon + : null; + setImageDrawable(icon, false); + if (mIsFaceUnlockState) { + announceForAccessibility(getContext().getString( + R.string.accessibility_scanning_face)); } - updateDarkTint(); - mLastState = state; - mLastDozing = mDozing; - mLastPulsing = mPulsing; + if (animation != null && isAnim) { + animation.forceAnimationOnUI(); + animation.clearAnimationCallbacks(); + animation.registerAnimationCallback(new Animatable2.AnimationCallback() { + @Override + public void onAnimationEnd(Drawable drawable) { + if (getDrawable() == animation && state == getState() + && doesAnimationLoop(lockAnimIndex)) { + animation.start(); + } else { + Trace.endAsyncSection("LockIcon#Animation", state); + } + } + }); + Trace.beginAsyncSection("LockIcon#Animation", state); + animation.start(); + } } + updateDarkTint(); boolean onAodNotPulsingOrDocked = mDozing && (!mPulsing || mDocked); boolean invisible = onAodNotPulsingOrDocked || mWakeAndUnlockRunning @@ -302,8 +302,25 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange && !mBouncerShowing) { invisible = true; } - setVisibility(invisible ? INVISIBLE : VISIBLE); + boolean wasInvisible = getVisibility() == INVISIBLE; + if (invisible != wasInvisible) { + setVisibility(invisible ? INVISIBLE : VISIBLE); + animate().cancel(); + if (!invisible) { + setScaleX(0); + setScaleY(0); + animate() + .setInterpolator(Interpolators.LINEAR_OUT_SLOW_IN) + .scaleX(1) + .scaleY(1) + .withLayer() + .setDuration(233) + .start(); + } + } updateClickability(); + + return true; } private void updateClickability() { @@ -364,30 +381,22 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange return lockAnimIndex == SCANNING; } - private int getAnimationIndexForTransition(int oldState, int newState, - boolean wasPulsing, boolean pulsing, boolean wasDozing, boolean dozing) { + private static int getAnimationIndexForTransition(int oldState, int newState, boolean pulsing, + boolean dozing) { // Never animate when screen is off - if (dozing && !pulsing && !mWasPulsingOnThisFrame) { + if (dozing && !pulsing) { return -1; } - boolean isError = oldState != STATE_BIOMETRICS_ERROR && newState == STATE_BIOMETRICS_ERROR; - boolean justUnlocked = oldState != STATE_LOCK_OPEN && newState == STATE_LOCK_OPEN; - boolean justLocked = oldState == STATE_LOCK_OPEN && newState == STATE_LOCKED; - boolean nowPulsing = !wasPulsing && pulsing; - boolean turningOn = wasDozing && !dozing && !mWasPulsingOnThisFrame; - - if (isError) { + if (newState == STATE_BIOMETRICS_ERROR) { return ERROR; - } else if (justUnlocked) { + } else if (oldState != STATE_LOCK_OPEN && newState == STATE_LOCK_OPEN) { return UNLOCK; - } else if (justLocked) { + } else if (oldState == STATE_LOCK_OPEN && newState == STATE_LOCKED) { return LOCK; } else if (newState == STATE_SCANNING_FACE) { return SCANNING; - } else if ((nowPulsing || turningOn) && newState != STATE_LOCK_OPEN) { - return LOCK_IN; } return -1; } @@ -407,37 +416,33 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange } @Retention(RetentionPolicy.SOURCE) - @IntDef({ERROR, UNLOCK, LOCK, SCANNING, LOCK_IN}) + @IntDef({ERROR, UNLOCK, LOCK, SCANNING}) @interface LockAnimIndex {} - private static final int ERROR = 0, UNLOCK = 1, LOCK = 2, SCANNING = 3, LOCK_IN = 4; + private static final int ERROR = 0, UNLOCK = 1, LOCK = 2, SCANNING = 3; private static final int[][] LOCK_ANIM_RES_IDS = new int[][] { { R.anim.lock_to_error, R.anim.lock_unlock, R.anim.lock_lock, - R.anim.lock_scanning, - R.anim.lock_in, + R.anim.lock_scanning }, { R.anim.lock_to_error_circular, R.anim.lock_unlock_circular, R.anim.lock_lock_circular, - R.anim.lock_scanning_circular, - R.anim.lock_in_circular, + R.anim.lock_scanning_circular }, { R.anim.lock_to_error_filled, R.anim.lock_unlock_filled, R.anim.lock_lock_filled, - R.anim.lock_scanning_filled, - R.anim.lock_in_filled, + R.anim.lock_scanning_filled }, { R.anim.lock_to_error_rounded, R.anim.lock_unlock_rounded, R.anim.lock_lock_rounded, - R.anim.lock_scanning_rounded, - R.anim.lock_in_rounded, + R.anim.lock_scanning_rounded }, }; @@ -462,7 +467,7 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange return STATE_LOCK_OPEN; } else if (mTransientBiometricsError) { return STATE_BIOMETRICS_ERROR; - } else if (updateMonitor.isFaceDetectionRunning()) { + } else if (updateMonitor.isFaceDetectionRunning() && !mPulsing) { return STATE_SCANNING_FACE; } else { return STATE_LOCKED; @@ -481,12 +486,6 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange */ public void setPulsing(boolean pulsing) { mPulsing = pulsing; - if (!mPulsing) { - mWasPulsingOnThisFrame = true; - mMainHandler.post(() -> { - mWasPulsingOnThisFrame = false; - }); - } update(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/UnlockMethodCache.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/UnlockMethodCache.java index 78eb394e3336..f36c56f60965 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/UnlockMethodCache.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/UnlockMethodCache.java @@ -190,6 +190,11 @@ public class UnlockMethodCache { public void onKeyguardVisibilityChanged(boolean showing) { update(false /* updateAlways */); } + + @Override + public void onBiometricsCleared() { + update(false /* alwaysUpdate */); + } }; public boolean isTrustManaged() { |