Merge "Devices with UDPFS shows lock icon on AOD" into sc-v2-dev
This commit is contained in:
@@ -19,15 +19,15 @@
|
|||||||
<group android:name="_R_G">
|
<group android:name="_R_G">
|
||||||
<group android:name="_R_G_L_1_G_N_7_T_0" android:translateX="-27" android:translateY="-17.5">
|
<group android:name="_R_G_L_1_G_N_7_T_0" android:translateX="-27" android:translateY="-17.5">
|
||||||
<group android:name="_R_G_L_1_G" android:translateX="30.75" android:translateY="25.75">
|
<group android:name="_R_G_L_1_G" android:translateX="30.75" android:translateY="25.75">
|
||||||
<path android:name="_R_G_L_1_G_D_0_P_0" android:strokeColor="#b7f29f" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M27.52 38.98 C26.49,39.95 25.29,40.73 23.98,41.29 C23.17,41.65 22.31,41.91 21.41,42.07 C20.74,42.19 20.05,42.25 19.34,42.25 C18.44,42.25 17.56,42.15 16.72,41.96 C15.93,41.77 15.16,41.51 14.43,41.18 C13.23,40.63 12.13,39.88 11.16,38.98 " />
|
<path android:name="_R_G_L_1_G_D_0_P_0" android:strokeColor="#FF000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M27.52 38.98 C26.49,39.95 25.29,40.73 23.98,41.29 C23.17,41.65 22.31,41.91 21.41,42.07 C20.74,42.19 20.05,42.25 19.34,42.25 C18.44,42.25 17.56,42.15 16.72,41.96 C15.93,41.77 15.16,41.51 14.43,41.18 C13.23,40.63 12.13,39.88 11.16,38.98 " />
|
||||||
<path android:name="_R_G_L_1_G_D_1_P_0" android:strokeColor="#b7f29f" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M8.64 34.07 C7.89,31.97 7.89,29.85 7.89,29.85 C7.89,24.05 12.81,19.34 19.34,19.34 C25.87,19.34 30.8,24.05 30.8,29.85 C30.8,29.85 30.8,30.16 30.8,30.16 C30.8,32.32 29.04,34.07 26.89,34.07 C25.28,34.07 23.86,33.1 23.27,31.61 C23.27,31.61 21.96,28.34 21.96,28.34 C21.37,26.85 19.93,25.89 18.34,25.89 C16.18,25.89 14.43,27.64 14.43,29.8 C14.43,31.42 14.87,32.99 15.68,34.36 C16.22,35.26 16.93,36.08 17.77,36.75 C17.77,36.75 18.52,37.34 18.52,37.34 " />
|
<path android:name="_R_G_L_1_G_D_1_P_0" android:strokeColor="#FF000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M8.64 34.07 C7.89,31.97 7.89,29.85 7.89,29.85 C7.89,24.05 12.81,19.34 19.34,19.34 C25.87,19.34 30.8,24.05 30.8,29.85 C30.8,29.85 30.8,30.16 30.8,30.16 C30.8,32.32 29.04,34.07 26.89,34.07 C25.28,34.07 23.86,33.1 23.27,31.61 C23.27,31.61 21.96,28.34 21.96,28.34 C21.37,26.85 19.93,25.89 18.34,25.89 C16.18,25.89 14.43,27.64 14.43,29.8 C14.43,31.42 14.87,32.99 15.68,34.36 C16.22,35.26 16.93,36.08 17.77,36.75 C17.77,36.75 18.52,37.34 18.52,37.34 " />
|
||||||
<path android:name="_R_G_L_1_G_D_2_P_0" android:strokeColor="#b7f29f" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M6.25 19.34 C7.48,17.3 9.46,15.58 11.9,14.42 C12.93,13.94 14.03,13.55 15.2,13.27 C16.51,12.96 17.9,12.8 19.34,12.8 C20.77,12.8 22.14,12.96 23.45,13.26 C24.9,13.6 26.26,14.12 27.48,14.78 C29.6,15.92 31.32,17.5 32.43,19.34 " />
|
<path android:name="_R_G_L_1_G_D_2_P_0" android:strokeColor="#FF000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M6.25 19.34 C7.48,17.3 9.46,15.58 11.9,14.42 C12.93,13.94 14.03,13.55 15.2,13.27 C16.51,12.96 17.9,12.8 19.34,12.8 C20.77,12.8 22.14,12.96 23.45,13.26 C24.9,13.6 26.26,14.12 27.48,14.78 C29.6,15.92 31.32,17.5 32.43,19.34 " />
|
||||||
<path android:name="_R_G_L_1_G_D_3_P_0" android:strokeColor="#b7f29f" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M9.52 8.7 C10.98,7.91 12.58,7.28 14.28,6.86 C15.89,6.46 17.58,6.25 19.34,6.25 C21.06,6.25 22.72,6.45 24.3,6.83 C26.04,7.25 27.67,7.89 29.16,8.7 " />
|
<path android:name="_R_G_L_1_G_D_3_P_0" android:strokeColor="#FF000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M9.52 8.7 C10.98,7.91 12.58,7.28 14.28,6.86 C15.89,6.46 17.58,6.25 19.34,6.25 C21.06,6.25 22.72,6.45 24.3,6.83 C26.04,7.25 27.67,7.89 29.16,8.7 " />
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
<group android:name="_R_G_L_0_G_N_7_T_0" android:translateX="-27" android:translateY="-17.5">
|
<group android:name="_R_G_L_0_G_N_7_T_0" android:translateX="-27" android:translateY="-17.5">
|
||||||
<group android:name="_R_G_L_0_G" android:translateX="47.357" android:translateY="53.25" android:pivotX="2.75" android:pivotY="2.75" android:scaleX="1.41866" android:scaleY="1.41866">
|
<group android:name="_R_G_L_0_G" android:translateX="47.357" android:translateY="53.25" android:pivotX="2.75" android:pivotY="2.75" android:scaleX="1.41866" android:scaleY="1.41866">
|
||||||
<path android:name="_R_G_L_0_G_D_0_P_0" android:fillColor="#b7f29f" android:fillAlpha="0" android:fillType="nonZero" android:pathData=" M2.75 5.25 C4.13,5.25 5.25,4.13 5.25,2.75 C5.25,1.37 4.13,0.25 2.75,0.25 C1.37,0.25 0.25,1.37 0.25,2.75 C0.25,4.13 1.37,5.25 2.75,5.25c " />
|
<path android:name="_R_G_L_0_G_D_0_P_0" android:fillColor="#FF000000" android:fillAlpha="0" android:fillType="nonZero" android:pathData=" M2.75 5.25 C4.13,5.25 5.25,4.13 5.25,2.75 C5.25,1.37 4.13,0.25 2.75,0.25 C1.37,0.25 0.25,1.37 0.25,2.75 C0.25,4.13 1.37,5.25 2.75,5.25c " />
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
48
packages/SystemUI/res-keyguard/drawable/ic_fingerprint.xml
Normal file
48
packages/SystemUI/res-keyguard/drawable/ic_fingerprint.xml
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
~ Copyright (C) 2021 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
|
||||||
|
-->
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:height="65dp"
|
||||||
|
android:width="46dp"
|
||||||
|
android:viewportHeight="65"
|
||||||
|
android:viewportWidth="46">
|
||||||
|
<group android:name="_R_G_L_0_G" android:translateX="3.75" android:translateY="8.25">
|
||||||
|
<path
|
||||||
|
android:strokeColor="#FF000000"
|
||||||
|
android:strokeLineCap="round"
|
||||||
|
android:strokeLineJoin="round"
|
||||||
|
android:strokeWidth="2.5"
|
||||||
|
android:pathData="M27.52 38.98 C26.49,39.95 25.29,40.73 23.98,41.29 C23.17,41.65 22.31,41.91 21.41,42.07 C20.74,42.19 20.05,42.25 19.34,42.25 C18.44,42.25 17.56,42.15 16.72,41.96 C15.93,41.77 15.16,41.51 14.43,41.18 C13.23,40.63 12.13,39.88 11.16,38.98 " />
|
||||||
|
<path
|
||||||
|
android:strokeColor="#FF000000"
|
||||||
|
android:strokeLineCap="round"
|
||||||
|
android:strokeLineJoin="round"
|
||||||
|
android:strokeWidth="2.5"
|
||||||
|
android:pathData="M8.64 34.07 C7.89,31.97 7.89,29.85 7.89,29.85 C7.89,24.05 12.81,19.34 19.34,19.34 C25.87,19.34 30.8,24.05 30.8,29.85 C30.8,29.85 30.8,30.16 30.8,30.16 C30.8,32.32 29.04,34.07 26.89,34.07 C25.28,34.07 23.86,33.1 23.27,31.61 C23.27,31.61 21.96,28.34 21.96,28.34 C21.37,26.85 19.93,25.89 18.34,25.89 C16.18,25.89 14.43,27.64 14.43,29.8 C14.43,31.42 14.87,32.99 15.68,34.36 C16.22,35.26 16.93,36.08 17.77,36.75 C17.77,36.75 18.52,37.34 18.52,37.34 " />
|
||||||
|
<path
|
||||||
|
android:strokeColor="#FF000000"
|
||||||
|
android:strokeLineCap="round"
|
||||||
|
android:strokeLineJoin="round"
|
||||||
|
android:strokeWidth="2.5"
|
||||||
|
android:pathData="M6.25 19.34 C7.48,17.3 9.46,15.58 11.9,14.42 C12.93,13.94 14.03,13.55 15.2,13.27 C16.51,12.96 17.9,12.8 19.34,12.8 C20.77,12.8 22.14,12.96 23.45,13.26 C24.9,13.6 26.26,14.12 27.48,14.78 C29.6,15.92 31.32,17.5 32.43,19.34 " />
|
||||||
|
<path
|
||||||
|
android:strokeColor="#FF000000"
|
||||||
|
android:strokeLineCap="round"
|
||||||
|
android:strokeLineJoin="round"
|
||||||
|
android:strokeWidth="2.5"
|
||||||
|
android:pathData="M9.52 8.7 C10.98,7.91 12.58,7.28 14.28,6.86 C15.89,6.46 17.58,6.25 19.34,6.25 C21.06,6.25 22.72,6.45 24.3,6.83 C26.04,7.25 27.67,7.89 29.16,8.7 " />
|
||||||
|
</group>
|
||||||
|
</vector>
|
||||||
95
packages/SystemUI/res-keyguard/drawable/ic_lock.xml
Normal file
95
packages/SystemUI/res-keyguard/drawable/ic_lock.xml
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
~ Copyright (C) 2021 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
|
||||||
|
-->
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:height="65dp"
|
||||||
|
android:width="46dp"
|
||||||
|
android:viewportHeight="65"
|
||||||
|
android:viewportWidth="46">
|
||||||
|
<group android:name="_R_G">
|
||||||
|
<group android:name="_R_G_L_2_G_N_10_N_11_T_0"
|
||||||
|
android:translateX="-27.5"
|
||||||
|
android:translateY="-17.5">
|
||||||
|
<group android:name="_R_G_L_2_G_N_10_T_1"
|
||||||
|
android:translateX="50.25"
|
||||||
|
android:translateY="61">
|
||||||
|
<group android:name="_R_G_L_2_G_N_10_T_0"
|
||||||
|
android:translateX="-13.75"
|
||||||
|
android:translateY="-7.5">
|
||||||
|
<group android:name="_R_G_L_2_G"
|
||||||
|
android:translateX="-0.375"
|
||||||
|
android:translateY="-22.375">
|
||||||
|
<path android:name="_R_G_L_2_G_D_0_P_0"
|
||||||
|
android:strokeColor="#FF000000"
|
||||||
|
android:strokeLineCap="round"
|
||||||
|
android:strokeLineJoin="round"
|
||||||
|
android:strokeWidth="2"
|
||||||
|
android:strokeAlpha="1"
|
||||||
|
android:pathData=" M4.75 15 C4.75,15 23.25,15 23.25,15 C24.35,15 25.25,15.9 25.25,17 C25.25,17 25.25,33 25.25,33 C25.25,34.1 24.35,35 23.25,35 C23.25,35 4.75,35 4.75,35 C3.65,35 2.75,34.1 2.75,33 C2.75,33 2.75,17 2.75,17 C2.75,15.9 3.65,15 4.75,15c "/>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
<group android:name="_R_G_L_1_G_N_10_N_11_T_0"
|
||||||
|
android:translateX="-27.5"
|
||||||
|
android:translateY="-17.5">
|
||||||
|
<group android:name="_R_G_L_1_G_N_10_T_1"
|
||||||
|
android:translateX="50.25"
|
||||||
|
android:translateY="61">
|
||||||
|
<group android:name="_R_G_L_1_G_N_10_T_0"
|
||||||
|
android:translateX="-13.75"
|
||||||
|
android:translateY="-7.5">
|
||||||
|
<group android:name="_R_G_L_1_G"
|
||||||
|
android:translateX="5"
|
||||||
|
android:translateY="-22.5">
|
||||||
|
<path android:name="_R_G_L_1_G_D_0_P_0"
|
||||||
|
android:strokeColor="#FF000000"
|
||||||
|
android:strokeLineCap="round"
|
||||||
|
android:strokeLineJoin="round"
|
||||||
|
android:strokeWidth="2"
|
||||||
|
android:strokeAlpha="1"
|
||||||
|
android:pathData=" M2.5 15 C2.5,15 2.5,8.61 2.5,8.61 C2.5,5.24 5.3,2.5 8.75,2.5 C12.2,2.5 15,5.24 15,8.61 C15,8.61 15,15 15,15 "/>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
<group android:name="_R_G_L_0_G_N_10_N_11_T_0"
|
||||||
|
android:translateX="-27.5"
|
||||||
|
android:translateY="-17.5">
|
||||||
|
<group android:name="_R_G_L_0_G_N_10_T_1"
|
||||||
|
android:translateX="50.25"
|
||||||
|
android:translateY="61">
|
||||||
|
<group android:name="_R_G_L_0_G_N_10_T_0"
|
||||||
|
android:translateX="-13.75"
|
||||||
|
android:translateY="-7.5">
|
||||||
|
<group android:name="_R_G_L_0_G"
|
||||||
|
android:translateX="11"
|
||||||
|
android:translateY="-0.25"
|
||||||
|
android:pivotX="2.75"
|
||||||
|
android:pivotY="2.75"
|
||||||
|
android:scaleX="1"
|
||||||
|
android:scaleY="1">
|
||||||
|
<path android:name="_R_G_L_0_G_D_0_P_0"
|
||||||
|
android:fillColor="#FF000000"
|
||||||
|
android:fillAlpha="1"
|
||||||
|
android:fillType="nonZero"
|
||||||
|
android:pathData=" M2.75 5.25 C4.13,5.25 5.25,4.13 5.25,2.75 C5.25,1.37 4.13,0.25 2.75,0.25 C1.37,0.25 0.25,1.37 0.25,2.75 C0.25,4.13 1.37,5.25 2.75,5.25c "/>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
</vector>
|
||||||
41
packages/SystemUI/res-keyguard/drawable/ic_lock_aod.xml
Normal file
41
packages/SystemUI/res-keyguard/drawable/ic_lock_aod.xml
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
~ Copyright (C) 2021 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
|
||||||
|
-->
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:height="65dp"
|
||||||
|
android:width="46dp"
|
||||||
|
android:viewportHeight="65"
|
||||||
|
android:viewportWidth="46">
|
||||||
|
<group android:name="_R_G_L_2_G" android:translateX="23" android:translateY="32.125">
|
||||||
|
<path
|
||||||
|
android:fillColor="#FF000000"
|
||||||
|
android:fillAlpha="1"
|
||||||
|
android:fillType="nonZero"
|
||||||
|
android:pathData=" M0 6.13 C0.97,6.13 1.75,5.34 1.75,4.38 C1.75,3.41 0.97,2.63 0,2.63 C-0.97,2.63 -1.75,3.41 -1.75,4.38 C-1.75,5.34 -0.97,6.13 0,6.13c " />
|
||||||
|
<path
|
||||||
|
android:strokeColor="#FF000000"
|
||||||
|
android:strokeLineCap="round"
|
||||||
|
android:strokeLineJoin="round"
|
||||||
|
android:strokeWidth="1.5"
|
||||||
|
android:pathData=" M7.88 -0.62 C7.88,-0.62 7.88,9.38 7.88,9.38 C7.88,10.48 6.98,11.38 5.88,11.38 C5.88,11.38 -5.87,11.38 -5.87,11.38 C-6.98,11.38 -7.87,10.48 -7.87,9.38 C-7.87,9.38 -7.87,-0.62 -7.87,-0.62 C-7.87,-1.73 -6.98,-2.62 -5.87,-2.62 C-5.87,-2.62 5.88,-2.62 5.88,-2.62 C6.98,-2.62 7.88,-1.73 7.88,-0.62c " />
|
||||||
|
<path
|
||||||
|
android:strokeColor="#FF000000"
|
||||||
|
android:strokeLineCap="round"
|
||||||
|
android:strokeLineJoin="round"
|
||||||
|
android:strokeWidth="1.5"
|
||||||
|
android:pathData=" M4.38 -2.62 C4.38,-2.62 4.38,-7.1 4.38,-7.1 C4.38,-9.46 2.42,-11.37 0,-11.37 C-2.42,-11.37 -4.37,-9.46 -4.37,-7.1 C-4.37,-7.1 -4.37,-2.62 -4.37,-2.62 " />
|
||||||
|
</group>
|
||||||
|
</vector>
|
||||||
48
packages/SystemUI/res-keyguard/drawable/ic_unlocked.xml
Normal file
48
packages/SystemUI/res-keyguard/drawable/ic_unlocked.xml
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
~ Copyright (C) 2021 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
|
||||||
|
-->
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:height="65dp"
|
||||||
|
android:width="46dp"
|
||||||
|
android:viewportHeight="65"
|
||||||
|
android:viewportWidth="46">
|
||||||
|
<group android:translateX="8.625"
|
||||||
|
android:translateY="13.625">
|
||||||
|
<path
|
||||||
|
android:strokeColor="#FF000000"
|
||||||
|
android:strokeLineCap="round"
|
||||||
|
android:strokeLineJoin="round"
|
||||||
|
android:strokeWidth="2.5"
|
||||||
|
android:pathData="M4.75 15 C4.75,15 23.25,15 23.25,15 C24.35,15 25.25,15.9 25.25,17 C25.25,17 25.25,33 25.25,33 C25.25,34.1 24.35,35 23.25,35 C23.25,35 4.75,35 4.75,35 C3.65,35 2.75,34.1 2.75,33 C2.75,33 2.75,17 2.75,17 C2.75,15.9 3.65,15 4.75,15c "/>
|
||||||
|
</group>
|
||||||
|
<group android:translateX="14"
|
||||||
|
android:translateY="13.5">
|
||||||
|
<path
|
||||||
|
android:strokeColor="#FF000000"
|
||||||
|
android:strokeLineCap="round"
|
||||||
|
android:strokeLineJoin="round"
|
||||||
|
android:strokeWidth="2.5"
|
||||||
|
android:pathData="M27.19 14.81 C27.19,14.81 27.19,8.3 27.19,8.3 C27.19,4.92 24.44,2.88 21.19,2.75 C17.74,2.62 15,4.74 15,8.11 C15,8.11 15,15 15,15 "/>
|
||||||
|
</group>
|
||||||
|
<group android:translateX="20"
|
||||||
|
android:translateY="35.75">
|
||||||
|
<path
|
||||||
|
android:fillColor="#FF000000"
|
||||||
|
android:fillAlpha="1"
|
||||||
|
android:fillType="nonZero"
|
||||||
|
android:pathData=" M2.75 5.25 C4.13,5.25 5.25,4.13 5.25,2.75 C5.25,1.37 4.13,0.25 2.75,0.25 C1.37,0.25 0.25,1.37 0.25,2.75 C0.25,4.13 1.37,5.25 2.75,5.25c "/>
|
||||||
|
</group>
|
||||||
|
</vector>
|
||||||
151
packages/SystemUI/res-keyguard/drawable/lock_aod_to_ls.xml
Normal file
151
packages/SystemUI/res-keyguard/drawable/lock_aod_to_ls.xml
Normal file
@@ -0,0 +1,151 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- Copyright (C) 2021 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:aapt="http://schemas.android.com/aapt"
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<aapt:attr name="android:drawable">
|
||||||
|
<vector android:height="65dp"
|
||||||
|
android:width="46dp"
|
||||||
|
android:viewportHeight="65"
|
||||||
|
android:viewportWidth="46">
|
||||||
|
<group android:name="_R_G">
|
||||||
|
<group android:name="_R_G_L_2_G"
|
||||||
|
android:translateX="23"
|
||||||
|
android:translateY="32.125">
|
||||||
|
<path android:name="_R_G_L_2_G_D_0_P_0"
|
||||||
|
android:fillColor="#FF000000"
|
||||||
|
android:fillAlpha="1"
|
||||||
|
android:fillType="nonZero"
|
||||||
|
android:pathData=" M0 6.13 C0.97,6.13 1.75,5.34 1.75,4.38 C1.75,3.41 0.97,2.63 0,2.63 C-0.97,2.63 -1.75,3.41 -1.75,4.38 C-1.75,5.34 -0.97,6.13 0,6.13c "/>
|
||||||
|
</group>
|
||||||
|
<group android:name="_R_G_L_1_G"
|
||||||
|
android:translateX="23"
|
||||||
|
android:translateY="32.125">
|
||||||
|
<path android:name="_R_G_L_1_G_D_0_P_0"
|
||||||
|
android:strokeColor="#FF000000"
|
||||||
|
android:strokeLineCap="round"
|
||||||
|
android:strokeLineJoin="round"
|
||||||
|
android:strokeWidth="1.5"
|
||||||
|
android:strokeAlpha="1"
|
||||||
|
android:pathData=" M7.88 -0.62 C7.88,-0.62 7.88,9.38 7.88,9.38 C7.88,10.48 6.98,11.38 5.88,11.38 C5.88,11.38 -5.87,11.38 -5.87,11.38 C-6.98,11.38 -7.87,10.48 -7.87,9.38 C-7.87,9.38 -7.87,-0.62 -7.87,-0.62 C-7.87,-1.73 -6.98,-2.62 -5.87,-2.62 C-5.87,-2.62 5.88,-2.62 5.88,-2.62 C6.98,-2.62 7.88,-1.73 7.88,-0.62c "/>
|
||||||
|
</group>
|
||||||
|
<group android:name="_R_G_L_0_G"
|
||||||
|
android:translateX="23"
|
||||||
|
android:translateY="32.125">
|
||||||
|
<path android:name="_R_G_L_0_G_D_0_P_0"
|
||||||
|
android:strokeColor="#FF000000"
|
||||||
|
android:strokeLineCap="round"
|
||||||
|
android:strokeLineJoin="round"
|
||||||
|
android:strokeWidth="1.5"
|
||||||
|
android:strokeAlpha="1"
|
||||||
|
android:pathData=" M4.38 -2.62 C4.38,-2.62 4.38,-7.1 4.38,-7.1 C4.38,-9.46 2.42,-11.37 0,-11.37 C-2.42,-11.37 -4.37,-9.46 -4.37,-7.1 C-4.37,-7.1 -4.37,-2.62 -4.37,-2.62 "/>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
<group android:name="time_group"/>
|
||||||
|
</vector>
|
||||||
|
</aapt:attr>
|
||||||
|
<target android:name="_R_G_L_2_G_D_0_P_0">
|
||||||
|
<aapt:attr name="android:animation">
|
||||||
|
<set android:ordering="together">
|
||||||
|
<objectAnimator android:propertyName="pathData"
|
||||||
|
android:duration="333"
|
||||||
|
android:startOffset="0"
|
||||||
|
android:valueFrom="M0 6.13 C0.97,6.13 1.75,5.34 1.75,4.38 C1.75,3.41 0.97,2.63 0,2.63 C-0.97,2.63 -1.75,3.41 -1.75,4.38 C-1.75,5.34 -0.97,6.13 0,6.13c "
|
||||||
|
android:valueTo="M-0.09 8.63 C1.2,8.63 2.25,7.57 2.25,6.28 C2.25,4.99 1.2,3.94 -0.09,3.94 C-1.39,3.94 -2.44,4.99 -2.44,6.28 C-2.44,7.57 -1.39,8.63 -0.09,8.63c "
|
||||||
|
android:valueType="pathType">
|
||||||
|
<aapt:attr name="android:interpolator">
|
||||||
|
<pathInterpolator android:pathData="M 0.0,0.0 c0.372,0 0.203,1 1.0,1.0"/>
|
||||||
|
</aapt:attr>
|
||||||
|
</objectAnimator>
|
||||||
|
</set>
|
||||||
|
</aapt:attr>
|
||||||
|
</target>
|
||||||
|
<target android:name="_R_G_L_1_G_D_0_P_0">
|
||||||
|
<aapt:attr name="android:animation">
|
||||||
|
<set android:ordering="together">
|
||||||
|
<objectAnimator android:propertyName="strokeWidth"
|
||||||
|
android:duration="333"
|
||||||
|
android:startOffset="0"
|
||||||
|
android:valueFrom="1.5"
|
||||||
|
android:valueTo="2"
|
||||||
|
android:valueType="floatType">
|
||||||
|
<aapt:attr name="android:interpolator">
|
||||||
|
<pathInterpolator android:pathData="M 0.0,0.0 c0.307,0 0.386,1 1.0,1.0"/>
|
||||||
|
</aapt:attr>
|
||||||
|
</objectAnimator>
|
||||||
|
</set>
|
||||||
|
</aapt:attr>
|
||||||
|
</target>
|
||||||
|
<target android:name="_R_G_L_1_G_D_0_P_0">
|
||||||
|
<aapt:attr name="android:animation">
|
||||||
|
<set android:ordering="together">
|
||||||
|
<objectAnimator android:propertyName="pathData"
|
||||||
|
android:duration="333"
|
||||||
|
android:startOffset="0"
|
||||||
|
android:valueFrom="M7.88 -0.62 C7.88,-0.62 7.88,9.38 7.88,9.38 C7.88,10.48 6.98,11.38 5.88,11.38 C5.88,11.38 -5.87,11.38 -5.87,11.38 C-6.98,11.38 -7.87,10.48 -7.87,9.38 C-7.87,9.38 -7.87,-0.62 -7.87,-0.62 C-7.87,-1.73 -6.98,-2.62 -5.87,-2.62 C-5.87,-2.62 5.88,-2.62 5.88,-2.62 C6.98,-2.62 7.88,-1.73 7.88,-0.62c "
|
||||||
|
android:valueTo="M11.25 -0.64 C11.25,-0.64 11.25,13.64 11.25,13.64 C11.25,15.22 9.97,16.5 8.39,16.5 C8.39,16.5 -8.39,16.5 -8.39,16.5 C-9.97,16.5 -11.25,15.22 -11.25,13.64 C-11.25,13.64 -11.25,-0.64 -11.25,-0.64 C-11.25,-2.22 -9.97,-3.5 -8.39,-3.5 C-8.39,-3.5 8.39,-3.5 8.39,-3.5 C9.97,-3.5 11.25,-2.22 11.25,-0.64c "
|
||||||
|
android:valueType="pathType">
|
||||||
|
<aapt:attr name="android:interpolator">
|
||||||
|
<pathInterpolator android:pathData="M 0.0,0.0 c0.372,0 0.203,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="strokeWidth"
|
||||||
|
android:duration="333"
|
||||||
|
android:startOffset="0"
|
||||||
|
android:valueFrom="1.5"
|
||||||
|
android:valueTo="2"
|
||||||
|
android:valueType="floatType">
|
||||||
|
<aapt:attr name="android:interpolator">
|
||||||
|
<pathInterpolator android:pathData="M 0.0,0.0 c0.307,0 0.386,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="pathData"
|
||||||
|
android:duration="333"
|
||||||
|
android:startOffset="0"
|
||||||
|
android:valueFrom="M4.38 -2.62 C4.38,-2.62 4.38,-7.1 4.38,-7.1 C4.38,-9.46 2.42,-11.37 0,-11.37 C-2.42,-11.37 -4.37,-9.46 -4.37,-7.1 C-4.37,-7.1 -4.37,-2.62 -4.37,-2.62 "
|
||||||
|
android:valueTo="M5.88 -3.87 C5.88,-3.87 5.88,-10.2 5.88,-10.2 C5.88,-13.54 3.08,-16.25 -0.37,-16.25 C-3.83,-16.25 -6.62,-13.54 -6.62,-10.2 C-6.62,-10.2 -6.62,-3.87 -6.62,-3.87 "
|
||||||
|
android:valueType="pathType">
|
||||||
|
<aapt:attr name="android:interpolator">
|
||||||
|
<pathInterpolator android:pathData="M 0.0,0.0 c0.372,0 0.203,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="517"
|
||||||
|
android:startOffset="0"
|
||||||
|
android:valueFrom="0"
|
||||||
|
android:valueTo="1"
|
||||||
|
android:valueType="floatType"/>
|
||||||
|
</set>
|
||||||
|
</aapt:attr>
|
||||||
|
</target>
|
||||||
|
</animated-vector>
|
||||||
151
packages/SystemUI/res-keyguard/drawable/lock_ls_to_aod.xml
Normal file
151
packages/SystemUI/res-keyguard/drawable/lock_ls_to_aod.xml
Normal file
@@ -0,0 +1,151 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- Copyright (C) 2021 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:aapt="http://schemas.android.com/aapt"
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<aapt:attr name="android:drawable">
|
||||||
|
<vector android:height="65dp"
|
||||||
|
android:width="46dp"
|
||||||
|
android:viewportHeight="65"
|
||||||
|
android:viewportWidth="46">
|
||||||
|
<group android:name="_R_G">
|
||||||
|
<group android:name="_R_G_L_2_G"
|
||||||
|
android:translateX="23"
|
||||||
|
android:translateY="32.125">
|
||||||
|
<path android:name="_R_G_L_2_G_D_0_P_0"
|
||||||
|
android:fillColor="#FF000000"
|
||||||
|
android:fillAlpha="1"
|
||||||
|
android:fillType="nonZero"
|
||||||
|
android:pathData=" M-0.09 8.63 C1.2,8.63 2.25,7.57 2.25,6.28 C2.25,4.99 1.2,3.94 -0.09,3.94 C-1.39,3.94 -2.44,4.99 -2.44,6.28 C-2.44,7.57 -1.39,8.63 -0.09,8.63c "/>
|
||||||
|
</group>
|
||||||
|
<group android:name="_R_G_L_1_G"
|
||||||
|
android:translateX="23"
|
||||||
|
android:translateY="32.125">
|
||||||
|
<path android:name="_R_G_L_1_G_D_0_P_0"
|
||||||
|
android:strokeColor="#FF000000"
|
||||||
|
android:strokeLineCap="round"
|
||||||
|
android:strokeLineJoin="round"
|
||||||
|
android:strokeWidth="2"
|
||||||
|
android:strokeAlpha="1"
|
||||||
|
android:pathData=" M11.25 -0.64 C11.25,-0.64 11.25,13.64 11.25,13.64 C11.25,15.22 9.97,16.5 8.39,16.5 C8.39,16.5 -8.39,16.5 -8.39,16.5 C-9.97,16.5 -11.25,15.22 -11.25,13.64 C-11.25,13.64 -11.25,-0.64 -11.25,-0.64 C-11.25,-2.22 -9.97,-3.5 -8.39,-3.5 C-8.39,-3.5 8.39,-3.5 8.39,-3.5 C9.97,-3.5 11.25,-2.22 11.25,-0.64c "/>
|
||||||
|
</group>
|
||||||
|
<group android:name="_R_G_L_0_G"
|
||||||
|
android:translateX="23"
|
||||||
|
android:translateY="32.125">
|
||||||
|
<path android:name="_R_G_L_0_G_D_0_P_0"
|
||||||
|
android:strokeColor="#FF000000"
|
||||||
|
android:strokeLineCap="round"
|
||||||
|
android:strokeLineJoin="round"
|
||||||
|
android:strokeWidth="2"
|
||||||
|
android:strokeAlpha="1"
|
||||||
|
android:pathData=" M5.88 -3.87 C5.88,-3.87 5.88,-10.2 5.88,-10.2 C5.88,-13.54 3.08,-16.25 -0.37,-16.25 C-3.83,-16.25 -6.62,-13.54 -6.62,-10.2 C-6.62,-10.2 -6.62,-3.87 -6.62,-3.87 "/>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
<group android:name="time_group"/>
|
||||||
|
</vector>
|
||||||
|
</aapt:attr>
|
||||||
|
<target android:name="_R_G_L_2_G_D_0_P_0">
|
||||||
|
<aapt:attr name="android:animation">
|
||||||
|
<set android:ordering="together">
|
||||||
|
<objectAnimator android:propertyName="pathData"
|
||||||
|
android:duration="333"
|
||||||
|
android:startOffset="0"
|
||||||
|
android:valueFrom="M-0.09 8.63 C1.2,8.63 2.25,7.57 2.25,6.28 C2.25,4.99 1.2,3.94 -0.09,3.94 C-1.39,3.94 -2.44,4.99 -2.44,6.28 C-2.44,7.57 -1.39,8.63 -0.09,8.63c "
|
||||||
|
android:valueTo="M0 6.13 C0.97,6.13 1.75,5.34 1.75,4.38 C1.75,3.41 0.97,2.63 0,2.63 C-0.97,2.63 -1.75,3.41 -1.75,4.38 C-1.75,5.34 -0.97,6.13 0,6.13c "
|
||||||
|
android:valueType="pathType">
|
||||||
|
<aapt:attr name="android:interpolator">
|
||||||
|
<pathInterpolator android:pathData="M 0.0,0.0 c0.431,0 0.133,1 1.0,1.0"/>
|
||||||
|
</aapt:attr>
|
||||||
|
</objectAnimator>
|
||||||
|
</set>
|
||||||
|
</aapt:attr>
|
||||||
|
</target>
|
||||||
|
<target android:name="_R_G_L_1_G_D_0_P_0">
|
||||||
|
<aapt:attr name="android:animation">
|
||||||
|
<set android:ordering="together">
|
||||||
|
<objectAnimator android:propertyName="strokeWidth"
|
||||||
|
android:duration="333"
|
||||||
|
android:startOffset="0"
|
||||||
|
android:valueFrom="2"
|
||||||
|
android:valueTo="1.5"
|
||||||
|
android:valueType="floatType">
|
||||||
|
<aapt:attr name="android:interpolator">
|
||||||
|
<pathInterpolator android:pathData="M 0.0,0.0 c0.38,0 0.274,1 1.0,1.0"/>
|
||||||
|
</aapt:attr>
|
||||||
|
</objectAnimator>
|
||||||
|
</set>
|
||||||
|
</aapt:attr>
|
||||||
|
</target>
|
||||||
|
<target android:name="_R_G_L_1_G_D_0_P_0">
|
||||||
|
<aapt:attr name="android:animation">
|
||||||
|
<set android:ordering="together">
|
||||||
|
<objectAnimator android:propertyName="pathData"
|
||||||
|
android:duration="333"
|
||||||
|
android:startOffset="0"
|
||||||
|
android:valueFrom="M11.25 -0.64 C11.25,-0.64 11.25,13.64 11.25,13.64 C11.25,15.22 9.97,16.5 8.39,16.5 C8.39,16.5 -8.39,16.5 -8.39,16.5 C-9.97,16.5 -11.25,15.22 -11.25,13.64 C-11.25,13.64 -11.25,-0.64 -11.25,-0.64 C-11.25,-2.22 -9.97,-3.5 -8.39,-3.5 C-8.39,-3.5 8.39,-3.5 8.39,-3.5 C9.97,-3.5 11.25,-2.22 11.25,-0.64c "
|
||||||
|
android:valueTo="M7.88 -0.62 C7.88,-0.62 7.88,9.38 7.88,9.38 C7.88,10.48 6.98,11.38 5.88,11.38 C5.88,11.38 -5.87,11.38 -5.87,11.38 C-6.98,11.38 -7.87,10.48 -7.87,9.38 C-7.87,9.38 -7.87,-0.62 -7.87,-0.62 C-7.87,-1.73 -6.98,-2.62 -5.87,-2.62 C-5.87,-2.62 5.88,-2.62 5.88,-2.62 C6.98,-2.62 7.88,-1.73 7.88,-0.62c "
|
||||||
|
android:valueType="pathType">
|
||||||
|
<aapt:attr name="android:interpolator">
|
||||||
|
<pathInterpolator android:pathData="M 0.0,0.0 c0.431,0 0.133,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="strokeWidth"
|
||||||
|
android:duration="333"
|
||||||
|
android:startOffset="0"
|
||||||
|
android:valueFrom="2"
|
||||||
|
android:valueTo="1.5"
|
||||||
|
android:valueType="floatType">
|
||||||
|
<aapt:attr name="android:interpolator">
|
||||||
|
<pathInterpolator android:pathData="M 0.0,0.0 c0.38,0 0.274,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="pathData"
|
||||||
|
android:duration="333"
|
||||||
|
android:startOffset="0"
|
||||||
|
android:valueFrom="M5.88 -3.87 C5.88,-3.87 5.88,-10.2 5.88,-10.2 C5.88,-13.54 3.08,-16.25 -0.37,-16.25 C-3.83,-16.25 -6.62,-13.54 -6.62,-10.2 C-6.62,-10.2 -6.62,-3.87 -6.62,-3.87 "
|
||||||
|
android:valueTo="M4.38 -2.62 C4.38,-2.62 4.38,-7.1 4.38,-7.1 C4.38,-9.46 2.42,-11.37 0,-11.37 C-2.42,-11.37 -4.37,-9.46 -4.37,-7.1 C-4.37,-7.1 -4.37,-2.62 -4.37,-2.62 "
|
||||||
|
android:valueType="pathType">
|
||||||
|
<aapt:attr name="android:interpolator">
|
||||||
|
<pathInterpolator android:pathData="M 0.0,0.0 c0.431,0 0.133,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="517"
|
||||||
|
android:startOffset="0"
|
||||||
|
android:valueFrom="0"
|
||||||
|
android:valueTo="1"
|
||||||
|
android:valueType="floatType"/>
|
||||||
|
</set>
|
||||||
|
</aapt:attr>
|
||||||
|
</target>
|
||||||
|
</animated-vector>
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
<group android:name="_R_G_L_2_G_N_10_T_1" android:translateX="50.25" android:translateY="61">
|
<group android:name="_R_G_L_2_G_N_10_T_1" android:translateX="50.25" android:translateY="61">
|
||||||
<group android:name="_R_G_L_2_G_N_10_T_0" android:translateX="-13.75" android:translateY="-7.5">
|
<group android:name="_R_G_L_2_G_N_10_T_0" android:translateX="-13.75" android:translateY="-7.5">
|
||||||
<group android:name="_R_G_L_2_G" android:translateX="-0.375" android:translateY="-22.375">
|
<group android:name="_R_G_L_2_G" android:translateX="-0.375" android:translateY="-22.375">
|
||||||
<path android:name="_R_G_L_2_G_D_0_P_0" android:strokeColor="#b7f29f" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M4.75 15 C4.75,15 23.25,15 23.25,15 C24.35,15 25.25,15.9 25.25,17 C25.25,17 25.25,33 25.25,33 C25.25,34.1 24.35,35 23.25,35 C23.25,35 4.75,35 4.75,35 C3.65,35 2.75,34.1 2.75,33 C2.75,33 2.75,17 2.75,17 C2.75,15.9 3.65,15 4.75,15c " />
|
<path android:name="_R_G_L_2_G_D_0_P_0" android:strokeColor="#FF000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M4.75 15 C4.75,15 23.25,15 23.25,15 C24.35,15 25.25,15.9 25.25,17 C25.25,17 25.25,33 25.25,33 C25.25,34.1 24.35,35 23.25,35 C23.25,35 4.75,35 4.75,35 C3.65,35 2.75,34.1 2.75,33 C2.75,33 2.75,17 2.75,17 C2.75,15.9 3.65,15 4.75,15c " />
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
<group android:name="_R_G_L_1_G_N_10_T_1" android:translateX="50.25" android:translateY="61">
|
<group android:name="_R_G_L_1_G_N_10_T_1" android:translateX="50.25" android:translateY="61">
|
||||||
<group android:name="_R_G_L_1_G_N_10_T_0" android:translateX="-13.75" android:translateY="-7.5">
|
<group android:name="_R_G_L_1_G_N_10_T_0" android:translateX="-13.75" android:translateY="-7.5">
|
||||||
<group android:name="_R_G_L_1_G" android:translateX="5" android:translateY="-22.5">
|
<group android:name="_R_G_L_1_G" android:translateX="5" android:translateY="-22.5">
|
||||||
<path android:name="_R_G_L_1_G_D_0_P_0" android:strokeColor="#b7f29f" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M2.5 15 C2.5,15 2.5,8.61 2.5,8.61 C2.5,5.24 5.3,2.5 8.75,2.5 C12.2,2.5 15,5.24 15,8.61 C15,8.61 15,15 15,15 " />
|
<path android:name="_R_G_L_1_G_D_0_P_0" android:strokeColor="#FF000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M2.5 15 C2.5,15 2.5,8.61 2.5,8.61 C2.5,5.24 5.3,2.5 8.75,2.5 C12.2,2.5 15,5.24 15,8.61 C15,8.61 15,15 15,15 " />
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
<group android:name="_R_G_L_0_G_N_10_T_1" android:translateX="50.25" android:translateY="61">
|
<group android:name="_R_G_L_0_G_N_10_T_1" android:translateX="50.25" android:translateY="61">
|
||||||
<group android:name="_R_G_L_0_G_N_10_T_0" android:translateX="-13.75" android:translateY="-7.5">
|
<group android:name="_R_G_L_0_G_N_10_T_0" android:translateX="-13.75" android:translateY="-7.5">
|
||||||
<group android:name="_R_G_L_0_G" android:translateX="11" android:translateY="-0.25" android:pivotX="2.75" android:pivotY="2.75" android:scaleX="1" android:scaleY="1">
|
<group android:name="_R_G_L_0_G" android:translateX="11" android:translateY="-0.25" android:pivotX="2.75" android:pivotY="2.75" android:scaleX="1" android:scaleY="1">
|
||||||
<path android:name="_R_G_L_0_G_D_0_P_0" android:fillColor="#b7f29f" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M2.75 5.25 C4.13,5.25 5.25,4.13 5.25,2.75 C5.25,1.37 4.13,0.25 2.75,0.25 C1.37,0.25 0.25,1.37 0.25,2.75 C0.25,4.13 1.37,5.25 2.75,5.25c " />
|
<path android:name="_R_G_L_0_G_D_0_P_0" android:fillColor="#FF000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M2.75 5.25 C4.13,5.25 5.25,4.13 5.25,2.75 C5.25,1.37 4.13,0.25 2.75,0.25 C1.37,0.25 0.25,1.37 0.25,2.75 C0.25,4.13 1.37,5.25 2.75,5.25c " />
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
82
packages/SystemUI/res-keyguard/drawable/super_lock_icon.xml
Normal file
82
packages/SystemUI/res-keyguard/drawable/super_lock_icon.xml
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
~ Copyright (C) 2021 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-selector
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<!--
|
||||||
|
State corresponds with the following icons:
|
||||||
|
state_first => lock icon
|
||||||
|
state_middle => fingerprint icon
|
||||||
|
state_last => unlocked icon
|
||||||
|
|
||||||
|
state_single
|
||||||
|
= true => AOD
|
||||||
|
= false => LS
|
||||||
|
-->
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/locked"
|
||||||
|
android:drawable="@drawable/ic_lock"
|
||||||
|
android:state_first="true"
|
||||||
|
android:state_single="false"/>
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/locked_fp"
|
||||||
|
android:state_middle="true"
|
||||||
|
android:state_single="false"
|
||||||
|
android:drawable="@drawable/ic_fingerprint" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/unlocked"
|
||||||
|
android:state_last="true"
|
||||||
|
android:state_single="false"
|
||||||
|
android:drawable="@drawable/ic_unlocked" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/locked_aod"
|
||||||
|
android:state_first="true"
|
||||||
|
android:state_single="true"
|
||||||
|
android:drawable="@drawable/ic_lock_aod" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/no_icon"
|
||||||
|
android:drawable="@color/transparent" />
|
||||||
|
|
||||||
|
<transition
|
||||||
|
android:fromId="@id/locked"
|
||||||
|
android:toId="@id/unlocked"
|
||||||
|
android:drawable="@drawable/lock_to_unlock" />
|
||||||
|
|
||||||
|
<transition
|
||||||
|
android:fromId="@id/locked_fp"
|
||||||
|
android:toId="@id/unlocked"
|
||||||
|
android:drawable="@drawable/fp_to_unlock" />
|
||||||
|
|
||||||
|
<transition
|
||||||
|
android:fromId="@id/unlocked"
|
||||||
|
android:toId="@id/locked_fp"
|
||||||
|
android:drawable="@drawable/unlock_to_fp" />
|
||||||
|
|
||||||
|
<transition
|
||||||
|
android:fromId="@id/locked_aod"
|
||||||
|
android:toId="@id/locked"
|
||||||
|
android:drawable="@drawable/lock_aod_to_ls" />
|
||||||
|
|
||||||
|
<transition
|
||||||
|
android:fromId="@id/locked"
|
||||||
|
android:toId="@id/locked_aod"
|
||||||
|
android:drawable="@drawable/lock_ls_to_aod" />
|
||||||
|
</animated-selector>
|
||||||
298
packages/SystemUI/res-keyguard/drawable/unlock_to_fp.xml
Normal file
298
packages/SystemUI/res-keyguard/drawable/unlock_to_fp.xml
Normal file
@@ -0,0 +1,298 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
~ Copyright (C) 2021 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:aapt="http://schemas.android.com/aapt"
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<aapt:attr name="android:drawable">
|
||||||
|
<vector android:height="65dp"
|
||||||
|
android:width="46dp"
|
||||||
|
android:viewportHeight="65"
|
||||||
|
android:viewportWidth="46">
|
||||||
|
<group android:name="_R_G">
|
||||||
|
<group android:name="_R_G_L_1_G"
|
||||||
|
android:translateX="3.75"
|
||||||
|
android:translateY="8.25">
|
||||||
|
<path android:name="_R_G_L_1_G_D_0_P_0"
|
||||||
|
android:strokeColor="#FF000000"
|
||||||
|
android:strokeLineCap="round"
|
||||||
|
android:strokeLineJoin="round"
|
||||||
|
android:strokeWidth="2"
|
||||||
|
android:strokeAlpha="1"
|
||||||
|
android:pathData=" M30.64 30.14 C30.64,30.14 30.64,38.14 30.64,38.14 C30.64,38.77 30.36,39.32 29.91,39.69 C29.57,39.97 29.12,40.14 28.64,40.14 C28.64,40.14 10.14,40.14 10.14,40.14 C9.04,40.14 8.14,39.25 8.14,38.14 C8.14,38.14 8.14,30.14 8.14,30.14 "/>
|
||||||
|
<path android:name="_R_G_L_1_G_D_1_P_0"
|
||||||
|
android:strokeColor="#FF000000"
|
||||||
|
android:strokeLineCap="round"
|
||||||
|
android:strokeLineJoin="round"
|
||||||
|
android:strokeWidth="2"
|
||||||
|
android:strokeAlpha="0"
|
||||||
|
android:pathData=" M19.42 31.53 C18.15,31.52 18.11,30.33 18.11,30.33 C18.11,29.59 18.66,28.98 19.4,28.98 C20.13,28.98 20.69,29.59 20.69,30.33 C20.69,30.33 20.69,30.37 20.69,30.37 C20.69,30.64 20.49,30.87 20.25,30.87 C20.07,30.87 19.91,30.74 19.84,30.55 C19.84,30.55 19.69,30.14 19.69,30.14 C19.63,29.94 19.46,29.82 19.28,29.82 C19.04,29.82 18.61,30.02 18.61,30.29 C18.61,30.43 18.6,30.75 18.76,31.03 C18.87,31.21 19.21,31.77 19.96,31.41 C20.69,31.01 20.69,30.34 20.69,30.34 "/>
|
||||||
|
<path android:name="_R_G_L_1_G_D_2_P_0"
|
||||||
|
android:strokeColor="#FF000000"
|
||||||
|
android:strokeLineCap="round"
|
||||||
|
android:strokeLineJoin="round"
|
||||||
|
android:strokeWidth="2"
|
||||||
|
android:strokeAlpha="1"
|
||||||
|
android:pathData=" M8.14 30.22 C8.14,30.22 8.14,22.22 8.14,22.22 C8.14,21.71 8.33,21.25 8.64,20.9 C9,20.48 9.54,20.22 10.14,20.22 C10.14,20.22 28.64,20.22 28.64,20.22 C29.75,20.22 30.64,21.11 30.64,22.22 C30.64,22.22 30.64,30.14 30.64,30.14 "/>
|
||||||
|
<path android:name="_R_G_L_1_G_D_3_P_0"
|
||||||
|
android:strokeColor="#FF000000"
|
||||||
|
android:strokeLineCap="round"
|
||||||
|
android:strokeLineJoin="round"
|
||||||
|
android:strokeWidth="2"
|
||||||
|
android:strokeAlpha="1"
|
||||||
|
android:pathData=" M37.91 20.05 C37.91,20.05 37.89,14.16 37.89,14.16 C37.89,10.79 35.15,8.05 31.86,8.03 C28.46,8.01 25.61,10.77 25.61,14.15 C25.61,14.15 25.62,20.04 25.62,20.04 "/>
|
||||||
|
</group>
|
||||||
|
<group android:name="_R_G_L_0_G"
|
||||||
|
android:translateX="20.357"
|
||||||
|
android:translateY="35.75"
|
||||||
|
android:pivotX="2.75"
|
||||||
|
android:pivotY="2.75"
|
||||||
|
android:scaleX="1"
|
||||||
|
android:scaleY="1">
|
||||||
|
<path android:name="_R_G_L_0_G_D_0_P_0"
|
||||||
|
android:fillColor="#FF000000"
|
||||||
|
android:fillAlpha="1"
|
||||||
|
android:fillType="nonZero"
|
||||||
|
android:pathData=" M2.75 5.25 C4.13,5.25 5.25,4.13 5.25,2.75 C5.25,1.37 4.13,0.25 2.75,0.25 C1.37,0.25 0.25,1.37 0.25,2.75 C0.25,4.13 1.37,5.25 2.75,5.25c "/>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
<group android:name="time_group"/>
|
||||||
|
</vector>
|
||||||
|
</aapt:attr>
|
||||||
|
<target android:name="_R_G_L_1_G_D_0_P_0">
|
||||||
|
<aapt:attr name="android:animation">
|
||||||
|
<set android:ordering="together">
|
||||||
|
<objectAnimator android:propertyName="pathData"
|
||||||
|
android:duration="183"
|
||||||
|
android:startOffset="0"
|
||||||
|
android:valueFrom="M30.64 30.14 C30.64,30.14 30.64,38.14 30.64,38.14 C30.64,38.77 30.36,39.32 29.91,39.69 C29.57,39.97 29.12,40.14 28.64,40.14 C28.64,40.14 10.14,40.14 10.14,40.14 C9.04,40.14 8.14,39.25 8.14,38.14 C8.14,38.14 8.14,30.14 8.14,30.14 "
|
||||||
|
android:valueTo="M30.64 30.14 C30.64,30.14 30.64,38.14 30.64,38.14 C30.64,38.77 30.36,39.32 29.91,39.69 C29.57,39.97 29.12,40.14 28.64,40.14 C28.64,40.14 10.14,40.14 10.14,40.14 C9.04,40.14 8.14,39.25 8.14,38.14 C8.14,38.14 8.14,30.14 8.14,30.14 "
|
||||||
|
android:valueType="pathType">
|
||||||
|
<aapt:attr name="android:interpolator">
|
||||||
|
<pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.15,1 1.0,1.0"/>
|
||||||
|
</aapt:attr>
|
||||||
|
</objectAnimator>
|
||||||
|
<objectAnimator android:propertyName="pathData"
|
||||||
|
android:duration="133"
|
||||||
|
android:startOffset="183"
|
||||||
|
android:valueFrom="M30.64 30.14 C30.64,30.14 30.64,38.14 30.64,38.14 C30.64,38.77 30.36,39.32 29.91,39.69 C29.57,39.97 29.12,40.14 28.64,40.14 C28.64,40.14 10.14,40.14 10.14,40.14 C9.04,40.14 8.14,39.25 8.14,38.14 C8.14,38.14 8.14,30.14 8.14,30.14 "
|
||||||
|
android:valueTo="M27.52 38.98 C26.49,39.95 25.29,40.73 23.98,41.29 C23.17,41.65 22.31,41.91 21.41,42.07 C20.74,42.19 20.05,42.25 19.34,42.25 C18.44,42.25 17.56,42.15 16.72,41.96 C15.93,41.77 15.16,41.51 14.43,41.18 C13.23,40.63 12.13,39.88 11.16,38.98 "
|
||||||
|
android:valueType="pathType">
|
||||||
|
<aapt:attr name="android:interpolator">
|
||||||
|
<pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.15,1 1.0,1.0"/>
|
||||||
|
</aapt:attr>
|
||||||
|
</objectAnimator>
|
||||||
|
</set>
|
||||||
|
</aapt:attr>
|
||||||
|
</target>
|
||||||
|
<target android:name="_R_G_L_1_G_D_1_P_0">
|
||||||
|
<aapt:attr name="android:animation">
|
||||||
|
<set android:ordering="together">
|
||||||
|
<objectAnimator android:propertyName="strokeAlpha"
|
||||||
|
android:duration="183"
|
||||||
|
android:startOffset="0"
|
||||||
|
android:valueFrom="0"
|
||||||
|
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>
|
||||||
|
<objectAnimator android:propertyName="strokeAlpha"
|
||||||
|
android:duration="33"
|
||||||
|
android:startOffset="183"
|
||||||
|
android:valueFrom="0"
|
||||||
|
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_1_G_D_1_P_0">
|
||||||
|
<aapt:attr name="android:animation">
|
||||||
|
<set android:ordering="together">
|
||||||
|
<objectAnimator android:propertyName="pathData"
|
||||||
|
android:duration="183"
|
||||||
|
android:startOffset="0"
|
||||||
|
android:valueFrom="M19.42 31.53 C18.15,31.52 18.11,30.33 18.11,30.33 C18.11,29.59 18.66,28.98 19.4,28.98 C20.13,28.98 20.69,29.59 20.69,30.33 C20.69,30.33 20.69,30.37 20.69,30.37 C20.69,30.64 20.49,30.87 20.25,30.87 C20.07,30.87 19.91,30.74 19.84,30.55 C19.84,30.55 19.69,30.14 19.69,30.14 C19.63,29.94 19.46,29.82 19.28,29.82 C19.04,29.82 18.61,30.02 18.61,30.29 C18.61,30.43 18.6,30.75 18.76,31.03 C18.87,31.21 19.21,31.77 19.96,31.41 C20.69,31.01 20.69,30.34 20.69,30.34 "
|
||||||
|
android:valueTo="M19.42 31.53 C18.15,31.52 18.11,30.33 18.11,30.33 C18.11,29.59 18.66,28.98 19.4,28.98 C20.13,28.98 20.69,29.59 20.69,30.33 C20.69,30.33 20.69,30.37 20.69,30.37 C20.69,30.64 20.49,30.87 20.25,30.87 C20.07,30.87 19.91,30.74 19.84,30.55 C19.84,30.55 19.69,30.14 19.69,30.14 C19.63,29.94 19.46,29.82 19.28,29.82 C19.04,29.82 18.61,30.02 18.61,30.29 C18.61,30.43 18.6,30.75 18.76,31.03 C18.87,31.21 19.21,31.77 19.96,31.41 C20.69,31.01 20.69,30.34 20.69,30.34 "
|
||||||
|
android:valueType="pathType">
|
||||||
|
<aapt:attr name="android:interpolator">
|
||||||
|
<pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.15,1 1.0,1.0"/>
|
||||||
|
</aapt:attr>
|
||||||
|
</objectAnimator>
|
||||||
|
<objectAnimator android:propertyName="pathData"
|
||||||
|
android:duration="133"
|
||||||
|
android:startOffset="183"
|
||||||
|
android:valueFrom="M19.42 31.53 C18.15,31.52 18.11,30.33 18.11,30.33 C18.11,29.59 18.66,28.98 19.4,28.98 C20.13,28.98 20.69,29.59 20.69,30.33 C20.69,30.33 20.69,30.37 20.69,30.37 C20.69,30.64 20.49,30.87 20.25,30.87 C20.07,30.87 19.91,30.74 19.84,30.55 C19.84,30.55 19.69,30.14 19.69,30.14 C19.63,29.94 19.46,29.82 19.28,29.82 C19.04,29.82 18.61,30.02 18.61,30.29 C18.61,30.43 18.6,30.75 18.76,31.03 C18.87,31.21 19.21,31.77 19.96,31.41 C20.69,31.01 20.69,30.34 20.69,30.34 "
|
||||||
|
android:valueTo="M8.64 34.07 C7.89,31.97 7.89,29.85 7.89,29.85 C7.89,24.05 12.81,19.34 19.34,19.34 C25.87,19.34 30.8,24.05 30.8,29.85 C30.8,29.85 30.8,30.16 30.8,30.16 C30.8,32.32 29.04,34.07 26.89,34.07 C25.28,34.07 23.86,33.1 23.27,31.61 C23.27,31.61 21.96,28.34 21.96,28.34 C21.37,26.85 19.93,25.89 18.34,25.89 C16.18,25.89 14.43,27.64 14.43,29.8 C14.43,31.42 14.87,32.99 15.68,34.36 C16.22,35.26 16.93,36.08 17.77,36.75 C17.77,36.75 18.52,37.34 18.52,37.34 "
|
||||||
|
android:valueType="pathType">
|
||||||
|
<aapt:attr name="android:interpolator">
|
||||||
|
<pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.15,1 1.0,1.0"/>
|
||||||
|
</aapt:attr>
|
||||||
|
</objectAnimator>
|
||||||
|
</set>
|
||||||
|
</aapt:attr>
|
||||||
|
</target>
|
||||||
|
<target android:name="_R_G_L_1_G_D_2_P_0">
|
||||||
|
<aapt:attr name="android:animation">
|
||||||
|
<set android:ordering="together">
|
||||||
|
<objectAnimator android:propertyName="pathData"
|
||||||
|
android:duration="183"
|
||||||
|
android:startOffset="0"
|
||||||
|
android:valueFrom="M8.14 30.22 C8.14,30.22 8.14,22.22 8.14,22.22 C8.14,21.71 8.33,21.25 8.64,20.9 C9,20.48 9.54,20.22 10.14,20.22 C10.14,20.22 28.64,20.22 28.64,20.22 C29.75,20.22 30.64,21.11 30.64,22.22 C30.64,22.22 30.64,30.14 30.64,30.14 "
|
||||||
|
android:valueTo="M8.14 30.22 C8.14,30.22 8.14,22.22 8.14,22.22 C8.14,21.71 8.33,21.25 8.64,20.9 C9,20.48 9.54,20.22 10.14,20.22 C10.14,20.22 28.64,20.22 28.64,20.22 C29.75,20.22 30.64,21.11 30.64,22.22 C30.64,22.22 30.64,30.14 30.64,30.14 "
|
||||||
|
android:valueType="pathType">
|
||||||
|
<aapt:attr name="android:interpolator">
|
||||||
|
<pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.15,1 1.0,1.0"/>
|
||||||
|
</aapt:attr>
|
||||||
|
</objectAnimator>
|
||||||
|
<objectAnimator android:propertyName="pathData"
|
||||||
|
android:duration="133"
|
||||||
|
android:startOffset="183"
|
||||||
|
android:valueFrom="M8.14 30.22 C8.14,30.22 8.14,22.22 8.14,22.22 C8.14,21.71 8.33,21.25 8.64,20.9 C9,20.48 9.54,20.22 10.14,20.22 C10.14,20.22 28.64,20.22 28.64,20.22 C29.75,20.22 30.64,21.11 30.64,22.22 C30.64,22.22 30.64,30.14 30.64,30.14 "
|
||||||
|
android:valueTo="M6.25 19.34 C7.48,17.3 9.46,15.58 11.9,14.42 C12.93,13.94 14.03,13.55 15.2,13.27 C16.51,12.96 17.9,12.8 19.34,12.8 C20.77,12.8 22.14,12.96 23.45,13.26 C24.9,13.6 26.26,14.12 27.48,14.78 C29.6,15.92 31.32,17.5 32.43,19.34 "
|
||||||
|
android:valueType="pathType">
|
||||||
|
<aapt:attr name="android:interpolator">
|
||||||
|
<pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.15,1 1.0,1.0"/>
|
||||||
|
</aapt:attr>
|
||||||
|
</objectAnimator>
|
||||||
|
</set>
|
||||||
|
</aapt:attr>
|
||||||
|
</target>
|
||||||
|
<target android:name="_R_G_L_1_G_D_3_P_0">
|
||||||
|
<aapt:attr name="android:animation">
|
||||||
|
<set android:ordering="together">
|
||||||
|
<objectAnimator android:propertyName="pathData"
|
||||||
|
android:duration="150"
|
||||||
|
android:startOffset="0"
|
||||||
|
android:valueFrom="M37.91 20.05 C37.91,20.05 37.89,14.16 37.89,14.16 C37.89,10.79 35.15,8.05 31.86,8.03 C28.46,8.01 25.61,10.77 25.61,14.15 C25.61,14.15 25.62,20.04 25.62,20.04 "
|
||||||
|
android:valueTo="M13.12 20.04 C13.12,20.04 13.11,14.15 13.11,14.15 C13.11,10.77 15.91,8.04 19.36,8.04 C22.81,8.04 25.61,10.77 25.61,14.15 C25.61,14.15 25.62,20.04 25.62,20.04 "
|
||||||
|
android:valueType="pathType">
|
||||||
|
<aapt:attr name="android:interpolator">
|
||||||
|
<pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.261,1 1.0,1.0"/>
|
||||||
|
</aapt:attr>
|
||||||
|
</objectAnimator>
|
||||||
|
<objectAnimator android:propertyName="pathData"
|
||||||
|
android:duration="33"
|
||||||
|
android:startOffset="150"
|
||||||
|
android:valueFrom="M13.12 20.04 C13.12,20.04 13.11,14.15 13.11,14.15 C13.11,10.77 15.91,8.04 19.36,8.04 C22.81,8.04 25.61,10.77 25.61,14.15 C25.61,14.15 25.62,20.04 25.62,20.04 "
|
||||||
|
android:valueTo="M13.12 20.04 C13.12,20.04 13.11,14.15 13.11,14.15 C13.11,10.77 15.91,8.04 19.36,8.04 C22.81,8.04 25.61,10.77 25.61,14.15 C25.61,14.15 25.62,20.04 25.62,20.04 "
|
||||||
|
android:valueType="pathType">
|
||||||
|
<aapt:attr name="android:interpolator">
|
||||||
|
<pathInterpolator android:pathData="M 0.0,0.0 c0.123,0 0.261,1 1.0,1.0"/>
|
||||||
|
</aapt:attr>
|
||||||
|
</objectAnimator>
|
||||||
|
<objectAnimator android:propertyName="pathData"
|
||||||
|
android:duration="133"
|
||||||
|
android:startOffset="183"
|
||||||
|
android:valueFrom="M13.12 20.04 C13.12,20.04 13.11,14.15 13.11,14.15 C13.11,10.77 15.91,8.04 19.36,8.04 C22.81,8.04 25.61,10.77 25.61,14.15 C25.61,14.15 25.62,20.04 25.62,20.04 "
|
||||||
|
android:valueTo="M9.52 8.7 C10.98,7.91 12.58,7.28 14.28,6.86 C15.89,6.46 17.58,6.25 19.34,6.25 C21.06,6.25 22.72,6.45 24.3,6.83 C26.04,7.25 27.67,7.89 29.16,8.7 "
|
||||||
|
android:valueType="pathType">
|
||||||
|
<aapt:attr name="android:interpolator">
|
||||||
|
<pathInterpolator android:pathData="M 0.0,0.0 c0.123,0 0.15,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="fillAlpha"
|
||||||
|
android:duration="200"
|
||||||
|
android:startOffset="0"
|
||||||
|
android:valueFrom="1"
|
||||||
|
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>
|
||||||
|
<objectAnimator android:propertyName="fillAlpha"
|
||||||
|
android:duration="17"
|
||||||
|
android:startOffset="200"
|
||||||
|
android:valueFrom="1"
|
||||||
|
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">
|
||||||
|
<aapt:attr name="android:animation">
|
||||||
|
<set android:ordering="together">
|
||||||
|
<objectAnimator android:propertyName="scaleX"
|
||||||
|
android:duration="183"
|
||||||
|
android:startOffset="0"
|
||||||
|
android:valueFrom="1"
|
||||||
|
android:valueTo="1"
|
||||||
|
android:valueType="floatType">
|
||||||
|
<aapt:attr name="android:interpolator">
|
||||||
|
<pathInterpolator android:pathData="M 0.0,0.0 c0.596,0 0.018,1 1.0,1.0"/>
|
||||||
|
</aapt:attr>
|
||||||
|
</objectAnimator>
|
||||||
|
<objectAnimator android:propertyName="scaleY"
|
||||||
|
android:duration="183"
|
||||||
|
android:startOffset="0"
|
||||||
|
android:valueFrom="1"
|
||||||
|
android:valueTo="1"
|
||||||
|
android:valueType="floatType">
|
||||||
|
<aapt:attr name="android:interpolator">
|
||||||
|
<pathInterpolator android:pathData="M 0.0,0.0 c0.596,0 0.018,1 1.0,1.0"/>
|
||||||
|
</aapt:attr>
|
||||||
|
</objectAnimator>
|
||||||
|
<objectAnimator android:propertyName="scaleX"
|
||||||
|
android:duration="67"
|
||||||
|
android:startOffset="183"
|
||||||
|
android:valueFrom="1"
|
||||||
|
android:valueTo="1.4186600000000003"
|
||||||
|
android:valueType="floatType">
|
||||||
|
<aapt:attr name="android:interpolator">
|
||||||
|
<pathInterpolator android:pathData="M 0.0,0.0 c0.596,0 0.018,1 1.0,1.0"/>
|
||||||
|
</aapt:attr>
|
||||||
|
</objectAnimator>
|
||||||
|
<objectAnimator android:propertyName="scaleY"
|
||||||
|
android:duration="67"
|
||||||
|
android:startOffset="183"
|
||||||
|
android:valueFrom="1"
|
||||||
|
android:valueTo="1.4186600000000003"
|
||||||
|
android:valueType="floatType">
|
||||||
|
<aapt:attr name="android:interpolator">
|
||||||
|
<pathInterpolator android:pathData="M 0.0,0.0 c0.596,0 0.018,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="433"
|
||||||
|
android:startOffset="0"
|
||||||
|
android:valueFrom="0"
|
||||||
|
android:valueTo="1"
|
||||||
|
android:valueType="floatType"/>
|
||||||
|
</set>
|
||||||
|
</aapt:attr>
|
||||||
|
</target>
|
||||||
|
</animated-vector>
|
||||||
@@ -26,6 +26,7 @@ import android.view.View;
|
|||||||
import android.widget.FrameLayout;
|
import android.widget.FrameLayout;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
|
|
||||||
|
import androidx.annotation.IntDef;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
|
|
||||||
@@ -40,6 +41,17 @@ import java.io.PrintWriter;
|
|||||||
* A view positioned under the notification shade.
|
* A view positioned under the notification shade.
|
||||||
*/
|
*/
|
||||||
public class LockIconView extends FrameLayout implements Dumpable {
|
public class LockIconView extends FrameLayout implements Dumpable {
|
||||||
|
@IntDef({ICON_NONE, ICON_LOCK, ICON_FINGERPRINT, ICON_UNLOCK})
|
||||||
|
public @interface IconType {}
|
||||||
|
|
||||||
|
public static final int ICON_NONE = -1;
|
||||||
|
public static final int ICON_LOCK = 0;
|
||||||
|
public static final int ICON_FINGERPRINT = 1;
|
||||||
|
public static final int ICON_UNLOCK = 2;
|
||||||
|
|
||||||
|
private @IconType int mIconType;
|
||||||
|
private boolean mAod;
|
||||||
|
|
||||||
@NonNull private final RectF mSensorRect;
|
@NonNull private final RectF mSensorRect;
|
||||||
@NonNull private PointF mLockIconCenter = new PointF(0f, 0f);
|
@NonNull private PointF mLockIconCenter = new PointF(0f, 0f);
|
||||||
private int mRadius;
|
private int mRadius;
|
||||||
@@ -49,6 +61,7 @@ public class LockIconView extends FrameLayout implements Dumpable {
|
|||||||
|
|
||||||
private int mLockIconColor;
|
private int mLockIconColor;
|
||||||
private boolean mUseBackground = false;
|
private boolean mUseBackground = false;
|
||||||
|
private float mDozeAmount = 0f;
|
||||||
|
|
||||||
public LockIconView(Context context, AttributeSet attrs) {
|
public LockIconView(Context context, AttributeSet attrs) {
|
||||||
super(context, attrs);
|
super(context, attrs);
|
||||||
@@ -62,11 +75,17 @@ public class LockIconView extends FrameLayout implements Dumpable {
|
|||||||
mBgView = findViewById(R.id.lock_icon_bg);
|
mBgView = findViewById(R.id.lock_icon_bg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setDozeAmount(float dozeAmount) {
|
||||||
|
mDozeAmount = dozeAmount;
|
||||||
|
updateColorAndBackgroundVisibility();
|
||||||
|
}
|
||||||
|
|
||||||
void updateColorAndBackgroundVisibility() {
|
void updateColorAndBackgroundVisibility() {
|
||||||
if (mUseBackground && mLockIcon.getDrawable() != null) {
|
if (mUseBackground && mLockIcon.getDrawable() != null) {
|
||||||
mLockIconColor = Utils.getColorAttrDefaultColor(getContext(),
|
mLockIconColor = Utils.getColorAttrDefaultColor(getContext(),
|
||||||
android.R.attr.textColorPrimary);
|
android.R.attr.textColorPrimary);
|
||||||
mBgView.setBackground(getContext().getDrawable(R.drawable.fingerprint_bg));
|
mBgView.setBackground(getContext().getDrawable(R.drawable.fingerprint_bg));
|
||||||
|
mBgView.setAlpha(1f - mDozeAmount);
|
||||||
mBgView.setVisibility(View.VISIBLE);
|
mBgView.setVisibility(View.VISIBLE);
|
||||||
} else {
|
} else {
|
||||||
mLockIconColor = Utils.getColorAttrDefaultColor(getContext(),
|
mLockIconColor = Utils.getColorAttrDefaultColor(getContext(),
|
||||||
@@ -129,10 +148,75 @@ public class LockIconView extends FrameLayout implements Dumpable {
|
|||||||
return mLockIconCenter.y - mRadius;
|
return mLockIconCenter.y - mRadius;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates the icon its default state where no visual is shown.
|
||||||
|
*/
|
||||||
|
public void clearIcon() {
|
||||||
|
updateIcon(ICON_NONE, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Transition the current icon to a new state
|
||||||
|
* @param icon type (ie: lock icon, unlock icon, fingerprint icon)
|
||||||
|
* @param aod whether to use the aod icon variant (some icons don't have aod variants and will
|
||||||
|
* therefore show no icon)
|
||||||
|
*/
|
||||||
|
public void updateIcon(@IconType int icon, boolean aod) {
|
||||||
|
mIconType = icon;
|
||||||
|
mAod = aod;
|
||||||
|
|
||||||
|
mLockIcon.setImageState(getLockIconState(mIconType, mAod), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int[] getLockIconState(@IconType int icon, boolean aod) {
|
||||||
|
if (icon == ICON_NONE) {
|
||||||
|
return new int[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
int[] lockIconState = new int[2];
|
||||||
|
switch (icon) {
|
||||||
|
case ICON_LOCK:
|
||||||
|
lockIconState[0] = android.R.attr.state_first;
|
||||||
|
break;
|
||||||
|
case ICON_FINGERPRINT:
|
||||||
|
lockIconState[0] = android.R.attr.state_middle;
|
||||||
|
break;
|
||||||
|
case ICON_UNLOCK:
|
||||||
|
lockIconState[0] = android.R.attr.state_last;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (aod) {
|
||||||
|
lockIconState[1] = android.R.attr.state_single;
|
||||||
|
} else {
|
||||||
|
lockIconState[1] = -android.R.attr.state_single;
|
||||||
|
}
|
||||||
|
|
||||||
|
return lockIconState;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String typeToString(@IconType int type) {
|
||||||
|
switch (type) {
|
||||||
|
case ICON_NONE:
|
||||||
|
return "none";
|
||||||
|
case ICON_LOCK:
|
||||||
|
return "lock";
|
||||||
|
case ICON_FINGERPRINT:
|
||||||
|
return "fingerprint";
|
||||||
|
case ICON_UNLOCK:
|
||||||
|
return "unlock";
|
||||||
|
}
|
||||||
|
|
||||||
|
return "invalid";
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
|
public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
|
||||||
pw.println("Center in px (x, y)= (" + mLockIconCenter.x + ", " + mLockIconCenter.y + ")");
|
pw.println("Center in px (x, y)= (" + mLockIconCenter.x + ", " + mLockIconCenter.y + ")");
|
||||||
pw.println("Radius in pixels: " + mRadius);
|
pw.println("Radius in pixels: " + mRadius);
|
||||||
pw.println("topLeft= (" + getX() + ", " + getY() + ")");
|
pw.println("topLeft= (" + getX() + ", " + getY() + ")");
|
||||||
|
pw.println("topLeft= (" + getX() + ", " + getY() + ")");
|
||||||
|
pw.println("mIconType=" + typeToString(mIconType));
|
||||||
|
pw.println("mAod=" + mAod);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,9 @@ package com.android.keyguard;
|
|||||||
|
|
||||||
import static android.hardware.biometrics.BiometricSourceType.FINGERPRINT;
|
import static android.hardware.biometrics.BiometricSourceType.FINGERPRINT;
|
||||||
|
|
||||||
|
import static com.android.keyguard.LockIconView.ICON_FINGERPRINT;
|
||||||
|
import static com.android.keyguard.LockIconView.ICON_LOCK;
|
||||||
|
import static com.android.keyguard.LockIconView.ICON_UNLOCK;
|
||||||
import static com.android.systemui.classifier.Classifier.LOCK_ICON;
|
import static com.android.systemui.classifier.Classifier.LOCK_ICON;
|
||||||
import static com.android.systemui.doze.util.BurnInHelperKt.getBurnInOffset;
|
import static com.android.systemui.doze.util.BurnInHelperKt.getBurnInOffset;
|
||||||
import static com.android.systemui.doze.util.BurnInHelperKt.getBurnInProgressOffset;
|
import static com.android.systemui.doze.util.BurnInHelperKt.getBurnInProgressOffset;
|
||||||
@@ -26,8 +29,7 @@ import android.content.res.Configuration;
|
|||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.graphics.PointF;
|
import android.graphics.PointF;
|
||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
import android.graphics.drawable.AnimatedVectorDrawable;
|
import android.graphics.drawable.AnimatedStateListDrawable;
|
||||||
import android.graphics.drawable.Drawable;
|
|
||||||
import android.hardware.biometrics.BiometricSourceType;
|
import android.hardware.biometrics.BiometricSourceType;
|
||||||
import android.hardware.biometrics.SensorLocationInternal;
|
import android.hardware.biometrics.SensorLocationInternal;
|
||||||
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
|
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
|
||||||
@@ -103,11 +105,8 @@ public class LockIconViewController extends ViewController<LockIconView> impleme
|
|||||||
private boolean mUdfpsEnrolled;
|
private boolean mUdfpsEnrolled;
|
||||||
|
|
||||||
@Nullable private LottieAnimationView mAodFp;
|
@Nullable private LottieAnimationView mAodFp;
|
||||||
|
@NonNull private final AnimatedStateListDrawable mIcon;
|
||||||
|
|
||||||
@NonNull private final AnimatedVectorDrawable mFpToUnlockIcon;
|
|
||||||
@NonNull private final AnimatedVectorDrawable mLockToUnlockIcon;
|
|
||||||
@NonNull private final Drawable mLockIcon;
|
|
||||||
@NonNull private final Drawable mUnlockIcon;
|
|
||||||
@NonNull private CharSequence mUnlockedLabel;
|
@NonNull private CharSequence mUnlockedLabel;
|
||||||
@NonNull private CharSequence mLockedLabel;
|
@NonNull private CharSequence mLockedLabel;
|
||||||
@Nullable private final Vibrator mVibrator;
|
@Nullable private final Vibrator mVibrator;
|
||||||
@@ -133,13 +132,13 @@ public class LockIconViewController extends ViewController<LockIconView> impleme
|
|||||||
private boolean mShowLockIcon;
|
private boolean mShowLockIcon;
|
||||||
|
|
||||||
// for udfps when strong auth is required or unlocked on AOD
|
// for udfps when strong auth is required or unlocked on AOD
|
||||||
|
private boolean mShowAodLockIcon;
|
||||||
private boolean mShowAODFpIcon;
|
private boolean mShowAODFpIcon;
|
||||||
private final int mMaxBurnInOffsetX;
|
private final int mMaxBurnInOffsetX;
|
||||||
private final int mMaxBurnInOffsetY;
|
private final int mMaxBurnInOffsetY;
|
||||||
private float mInterpolatedDarkAmount;
|
private float mInterpolatedDarkAmount;
|
||||||
|
|
||||||
private boolean mDownDetected;
|
private boolean mDownDetected;
|
||||||
private boolean mDetectedLongPress;
|
|
||||||
private final Rect mSensorTouchLocation = new Rect();
|
private final Rect mSensorTouchLocation = new Rect();
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@@ -177,12 +176,9 @@ public class LockIconViewController extends ViewController<LockIconView> impleme
|
|||||||
mMaxBurnInOffsetX = resources.getDimensionPixelSize(R.dimen.udfps_burn_in_offset_x);
|
mMaxBurnInOffsetX = resources.getDimensionPixelSize(R.dimen.udfps_burn_in_offset_x);
|
||||||
mMaxBurnInOffsetY = resources.getDimensionPixelSize(R.dimen.udfps_burn_in_offset_y);
|
mMaxBurnInOffsetY = resources.getDimensionPixelSize(R.dimen.udfps_burn_in_offset_y);
|
||||||
|
|
||||||
mUnlockIcon = resources.getDrawable(R.drawable.ic_unlock, mView.getContext().getTheme());
|
mIcon = (AnimatedStateListDrawable)
|
||||||
mLockIcon = resources.getDrawable(R.anim.lock_to_unlock, mView.getContext().getTheme());
|
resources.getDrawable(R.drawable.super_lock_icon, mView.getContext().getTheme());
|
||||||
mFpToUnlockIcon = (AnimatedVectorDrawable) resources.getDrawable(
|
mView.setImageDrawable(mIcon);
|
||||||
R.anim.fp_to_unlock, mView.getContext().getTheme());
|
|
||||||
mLockToUnlockIcon = (AnimatedVectorDrawable) resources.getDrawable(R.anim.lock_to_unlock,
|
|
||||||
mView.getContext().getTheme());
|
|
||||||
mUnlockedLabel = resources.getString(R.string.accessibility_unlock_button);
|
mUnlockedLabel = resources.getString(R.string.accessibility_unlock_button);
|
||||||
mLockedLabel = resources.getString(R.string.accessibility_lock_icon);
|
mLockedLabel = resources.getString(R.string.accessibility_lock_icon);
|
||||||
dumpManager.registerDumpable("LockIconViewController", this);
|
dumpManager.registerDumpable("LockIconViewController", this);
|
||||||
@@ -256,42 +252,47 @@ public class LockIconViewController extends ViewController<LockIconView> impleme
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean wasShowingUnlock = mShowUnlockIcon;
|
||||||
boolean wasShowingFpIcon = mUdfpsEnrolled && !mShowUnlockIcon && !mShowLockIcon;
|
boolean wasShowingFpIcon = mUdfpsEnrolled && !mShowUnlockIcon && !mShowLockIcon;
|
||||||
boolean wasShowingLockIcon = mShowLockIcon;
|
|
||||||
boolean wasShowingUnlockIcon = mShowUnlockIcon;
|
|
||||||
mShowLockIcon = !mCanDismissLockScreen && !mUserUnlockedWithBiometric && isLockScreen()
|
mShowLockIcon = !mCanDismissLockScreen && !mUserUnlockedWithBiometric && isLockScreen()
|
||||||
&& (!mUdfpsEnrolled || !mRunningFPS);
|
&& (!mUdfpsEnrolled || !mRunningFPS);
|
||||||
mShowUnlockIcon = (mCanDismissLockScreen || mUserUnlockedWithBiometric) && isLockScreen();
|
mShowUnlockIcon = (mCanDismissLockScreen || mUserUnlockedWithBiometric) && isLockScreen();
|
||||||
mShowAODFpIcon = mIsDozing && mUdfpsEnrolled && !mRunningFPS;
|
mShowAODFpIcon = mIsDozing && mUdfpsEnrolled && !mRunningFPS && mCanDismissLockScreen;
|
||||||
|
mShowAodLockIcon = mIsDozing && mUdfpsEnrolled && !mRunningFPS && !mCanDismissLockScreen;
|
||||||
|
|
||||||
final CharSequence prevContentDescription = mView.getContentDescription();
|
final CharSequence prevContentDescription = mView.getContentDescription();
|
||||||
if (mShowLockIcon) {
|
if (mShowLockIcon) {
|
||||||
mView.setImageDrawable(mLockIcon);
|
mView.updateIcon(ICON_LOCK, false);
|
||||||
mView.setVisibility(View.VISIBLE);
|
|
||||||
mView.setContentDescription(mLockedLabel);
|
mView.setContentDescription(mLockedLabel);
|
||||||
} else if (mShowUnlockIcon) {
|
|
||||||
if (!wasShowingUnlockIcon) {
|
|
||||||
if (wasShowingFpIcon) {
|
|
||||||
mView.setImageDrawable(mFpToUnlockIcon);
|
|
||||||
mFpToUnlockIcon.forceAnimationOnUI();
|
|
||||||
mFpToUnlockIcon.start();
|
|
||||||
} else if (wasShowingLockIcon) {
|
|
||||||
mView.setImageDrawable(mLockToUnlockIcon);
|
|
||||||
mLockToUnlockIcon.forceAnimationOnUI();
|
|
||||||
mLockToUnlockIcon.start();
|
|
||||||
} else {
|
|
||||||
mView.setImageDrawable(mUnlockIcon);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
mView.setVisibility(View.VISIBLE);
|
mView.setVisibility(View.VISIBLE);
|
||||||
|
} else if (mShowUnlockIcon) {
|
||||||
|
if (wasShowingFpIcon) {
|
||||||
|
// fp icon was shown by UdfpsView, and now we still want to animate the transition
|
||||||
|
// in this drawable
|
||||||
|
mView.updateIcon(ICON_FINGERPRINT, false);
|
||||||
|
}
|
||||||
|
mView.updateIcon(ICON_UNLOCK, false);
|
||||||
mView.setContentDescription(mUnlockedLabel);
|
mView.setContentDescription(mUnlockedLabel);
|
||||||
|
mView.setVisibility(View.VISIBLE);
|
||||||
} else if (mShowAODFpIcon) {
|
} else if (mShowAODFpIcon) {
|
||||||
mView.setImageDrawable(null);
|
// AOD fp icon is special cased as a lottie view (it updates for each burn-in offset),
|
||||||
|
// this state shows a transparent view
|
||||||
mView.setContentDescription(null);
|
mView.setContentDescription(null);
|
||||||
mAodFp.setVisibility(View.VISIBLE);
|
mAodFp.setVisibility(View.VISIBLE);
|
||||||
mAodFp.setContentDescription(mCanDismissLockScreen ? mUnlockedLabel : mLockedLabel);
|
mAodFp.setContentDescription(mCanDismissLockScreen ? mUnlockedLabel : mLockedLabel);
|
||||||
|
|
||||||
|
mView.updateIcon(ICON_FINGERPRINT, true); // this shows no icon
|
||||||
|
mView.setVisibility(View.VISIBLE);
|
||||||
|
} else if (mShowAodLockIcon) {
|
||||||
|
if (wasShowingUnlock) {
|
||||||
|
// transition to the unlock icon first
|
||||||
|
mView.updateIcon(ICON_LOCK, false);
|
||||||
|
}
|
||||||
|
mView.updateIcon(ICON_LOCK, true);
|
||||||
|
mView.setContentDescription(mLockedLabel);
|
||||||
mView.setVisibility(View.VISIBLE);
|
mView.setVisibility(View.VISIBLE);
|
||||||
} else {
|
} else {
|
||||||
|
mView.clearIcon();
|
||||||
mView.setVisibility(View.INVISIBLE);
|
mView.setVisibility(View.INVISIBLE);
|
||||||
mView.setContentDescription(null);
|
mView.setContentDescription(null);
|
||||||
}
|
}
|
||||||
@@ -381,6 +382,11 @@ public class LockIconViewController extends ViewController<LockIconView> impleme
|
|||||||
pw.println("mUdfpsSupported: " + mUdfpsSupported);
|
pw.println("mUdfpsSupported: " + mUdfpsSupported);
|
||||||
pw.println("mUdfpsEnrolled: " + mUdfpsEnrolled);
|
pw.println("mUdfpsEnrolled: " + mUdfpsEnrolled);
|
||||||
pw.println("mIsKeyguardShowing: " + mIsKeyguardShowing);
|
pw.println("mIsKeyguardShowing: " + mIsKeyguardShowing);
|
||||||
|
pw.println(" mIcon: ");
|
||||||
|
for (int state : mIcon.getState()) {
|
||||||
|
pw.print(" " + state);
|
||||||
|
}
|
||||||
|
pw.println();
|
||||||
pw.println(" mShowUnlockIcon: " + mShowUnlockIcon);
|
pw.println(" mShowUnlockIcon: " + mShowUnlockIcon);
|
||||||
pw.println(" mShowLockIcon: " + mShowLockIcon);
|
pw.println(" mShowLockIcon: " + mShowLockIcon);
|
||||||
pw.println(" mShowAODFpIcon: " + mShowAODFpIcon);
|
pw.println(" mShowAODFpIcon: " + mShowAODFpIcon);
|
||||||
@@ -418,6 +424,11 @@ public class LockIconViewController extends ViewController<LockIconView> impleme
|
|||||||
mAodFp.setProgress(progress);
|
mAodFp.setProgress(progress);
|
||||||
mAodFp.setAlpha(255 * mInterpolatedDarkAmount);
|
mAodFp.setAlpha(255 * mInterpolatedDarkAmount);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mShowAodLockIcon) {
|
||||||
|
mView.setTranslationX(offsetX);
|
||||||
|
mView.setTranslationY(offsetY);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateIsUdfpsEnrolled() {
|
private void updateIsUdfpsEnrolled() {
|
||||||
@@ -442,6 +453,7 @@ public class LockIconViewController extends ViewController<LockIconView> impleme
|
|||||||
@Override
|
@Override
|
||||||
public void onDozeAmountChanged(float linear, float eased) {
|
public void onDozeAmountChanged(float linear, float eased) {
|
||||||
mInterpolatedDarkAmount = eased;
|
mInterpolatedDarkAmount = eased;
|
||||||
|
mView.setDozeAmount(eased);
|
||||||
updateBurnInOffsets();
|
updateBurnInOffsets();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -562,7 +574,6 @@ public class LockIconViewController extends ViewController<LockIconView> impleme
|
|||||||
private final GestureDetector mGestureDetector =
|
private final GestureDetector mGestureDetector =
|
||||||
new GestureDetector(new SimpleOnGestureListener() {
|
new GestureDetector(new SimpleOnGestureListener() {
|
||||||
public boolean onDown(MotionEvent e) {
|
public boolean onDown(MotionEvent e) {
|
||||||
mDetectedLongPress = false;
|
|
||||||
if (!isClickable()) {
|
if (!isClickable()) {
|
||||||
mDownDetected = false;
|
mDownDetected = false;
|
||||||
return false;
|
return false;
|
||||||
@@ -587,7 +598,6 @@ public class LockIconViewController extends ViewController<LockIconView> impleme
|
|||||||
if (!wasClickableOnDownEvent()) {
|
if (!wasClickableOnDownEvent()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mDetectedLongPress = true;
|
|
||||||
|
|
||||||
if (onAffordanceClick() && mVibrator != null) {
|
if (onAffordanceClick() && mVibrator != null) {
|
||||||
// only vibrate if the click went through and wasn't intercepted by falsing
|
// only vibrate if the click went through and wasn't intercepted by falsing
|
||||||
|
|||||||
@@ -16,6 +16,9 @@
|
|||||||
|
|
||||||
package com.android.systemui.keyguard;
|
package com.android.systemui.keyguard;
|
||||||
|
|
||||||
|
import static com.android.keyguard.LockIconView.ICON_LOCK;
|
||||||
|
import static com.android.keyguard.LockIconView.ICON_UNLOCK;
|
||||||
|
|
||||||
import static junit.framework.Assert.assertEquals;
|
import static junit.framework.Assert.assertEquals;
|
||||||
|
|
||||||
import static org.mockito.Mockito.any;
|
import static org.mockito.Mockito.any;
|
||||||
@@ -29,7 +32,7 @@ import static org.mockito.Mockito.when;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.graphics.PointF;
|
import android.graphics.PointF;
|
||||||
import android.graphics.drawable.AnimatedVectorDrawable;
|
import android.graphics.drawable.AnimatedStateListDrawable;
|
||||||
import android.hardware.biometrics.BiometricSourceType;
|
import android.hardware.biometrics.BiometricSourceType;
|
||||||
import android.hardware.biometrics.SensorLocationInternal;
|
import android.hardware.biometrics.SensorLocationInternal;
|
||||||
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
|
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
|
||||||
@@ -81,7 +84,7 @@ public class LockIconViewControllerTest extends SysuiTestCase {
|
|||||||
private static final String UNLOCKED_LABEL = "unlocked";
|
private static final String UNLOCKED_LABEL = "unlocked";
|
||||||
|
|
||||||
private @Mock LockIconView mLockIconView;
|
private @Mock LockIconView mLockIconView;
|
||||||
private @Mock AnimatedVectorDrawable mIconDrawable;
|
private @Mock AnimatedStateListDrawable mIconDrawable;
|
||||||
private @Mock Context mContext;
|
private @Mock Context mContext;
|
||||||
private @Mock Resources mResources;
|
private @Mock Resources mResources;
|
||||||
private @Mock DisplayMetrics mDisplayMetrics;
|
private @Mock DisplayMetrics mDisplayMetrics;
|
||||||
@@ -107,6 +110,14 @@ public class LockIconViewControllerTest extends SysuiTestCase {
|
|||||||
ArgumentCaptor.forClass(View.OnAttachStateChangeListener.class);
|
ArgumentCaptor.forClass(View.OnAttachStateChangeListener.class);
|
||||||
private View.OnAttachStateChangeListener mAttachListener;
|
private View.OnAttachStateChangeListener mAttachListener;
|
||||||
|
|
||||||
|
@Captor private ArgumentCaptor<KeyguardStateController.Callback> mKeyguardStateCaptor =
|
||||||
|
ArgumentCaptor.forClass(KeyguardStateController.Callback.class);
|
||||||
|
private KeyguardStateController.Callback mKeyguardStateCallback;
|
||||||
|
|
||||||
|
@Captor private ArgumentCaptor<StatusBarStateController.StateListener> mStatusBarStateCaptor =
|
||||||
|
ArgumentCaptor.forClass(StatusBarStateController.StateListener.class);
|
||||||
|
private StatusBarStateController.StateListener mStatusBarStateListener;
|
||||||
|
|
||||||
@Captor private ArgumentCaptor<AuthController.Callback> mAuthControllerCallbackCaptor;
|
@Captor private ArgumentCaptor<AuthController.Callback> mAuthControllerCallbackCaptor;
|
||||||
private AuthController.Callback mAuthControllerCallback;
|
private AuthController.Callback mAuthControllerCallback;
|
||||||
|
|
||||||
@@ -271,6 +282,86 @@ public class LockIconViewControllerTest extends SysuiTestCase {
|
|||||||
verify(mLockIconView).setContentDescription(UNLOCKED_LABEL);
|
verify(mLockIconView).setContentDescription(UNLOCKED_LABEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testLockIconStartState() {
|
||||||
|
// GIVEN lock icon state
|
||||||
|
setupShowLockIcon();
|
||||||
|
|
||||||
|
// WHEN lock icon controller is initialized
|
||||||
|
mLockIconViewController.init();
|
||||||
|
captureAttachListener();
|
||||||
|
mAttachListener.onViewAttachedToWindow(mLockIconView);
|
||||||
|
|
||||||
|
// THEN the lock icon should show
|
||||||
|
verify(mLockIconView).updateIcon(ICON_LOCK, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testLockIcon_updateToUnlock() {
|
||||||
|
// GIVEN starting state for the lock icon
|
||||||
|
setupShowLockIcon();
|
||||||
|
|
||||||
|
// GIVEN lock icon controller is initialized and view is attached
|
||||||
|
mLockIconViewController.init();
|
||||||
|
captureAttachListener();
|
||||||
|
mAttachListener.onViewAttachedToWindow(mLockIconView);
|
||||||
|
captureKeyguardStateCallback();
|
||||||
|
reset(mLockIconView);
|
||||||
|
|
||||||
|
// WHEN the unlocked state changes to canDismissLockScreen=true
|
||||||
|
when(mKeyguardStateController.canDismissLockScreen()).thenReturn(true);
|
||||||
|
mKeyguardStateCallback.onUnlockedChanged();
|
||||||
|
|
||||||
|
// THEN the unlock should show
|
||||||
|
verify(mLockIconView).updateIcon(ICON_UNLOCK, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testLockIcon_clearsIconOnAod_whenUdfpsNotEnrolled() {
|
||||||
|
// GIVEN udfps not enrolled
|
||||||
|
setupUdfps();
|
||||||
|
when(mKeyguardUpdateMonitor.isUdfpsEnrolled()).thenReturn(false);
|
||||||
|
|
||||||
|
// GIVEN starting state for the lock icon
|
||||||
|
setupShowLockIcon();
|
||||||
|
|
||||||
|
// GIVEN lock icon controller is initialized and view is attached
|
||||||
|
mLockIconViewController.init();
|
||||||
|
captureAttachListener();
|
||||||
|
mAttachListener.onViewAttachedToWindow(mLockIconView);
|
||||||
|
captureStatusBarStateListener();
|
||||||
|
reset(mLockIconView);
|
||||||
|
|
||||||
|
// WHEN the dozing state changes
|
||||||
|
mStatusBarStateListener.onDozingChanged(true /* isDozing */);
|
||||||
|
|
||||||
|
// THEN the icon is cleared
|
||||||
|
verify(mLockIconView).clearIcon();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testLockIcon_updateToAodLock_whenUdfpsEnrolled() {
|
||||||
|
// GIVEN udfps enrolled
|
||||||
|
setupUdfps();
|
||||||
|
when(mKeyguardUpdateMonitor.isUdfpsEnrolled()).thenReturn(true);
|
||||||
|
|
||||||
|
// GIVEN starting state for the lock icon
|
||||||
|
setupShowLockIcon();
|
||||||
|
|
||||||
|
// GIVEN lock icon controller is initialized and view is attached
|
||||||
|
mLockIconViewController.init();
|
||||||
|
captureAttachListener();
|
||||||
|
mAttachListener.onViewAttachedToWindow(mLockIconView);
|
||||||
|
captureStatusBarStateListener();
|
||||||
|
reset(mLockIconView);
|
||||||
|
|
||||||
|
// WHEN the dozing state changes
|
||||||
|
mStatusBarStateListener.onDozingChanged(true /* isDozing */);
|
||||||
|
|
||||||
|
// THEN the AOD lock icon should show
|
||||||
|
verify(mLockIconView).updateIcon(ICON_LOCK, true);
|
||||||
|
}
|
||||||
|
|
||||||
private Pair<Integer, PointF> setupUdfps() {
|
private Pair<Integer, PointF> setupUdfps() {
|
||||||
final PointF udfpsLocation = new PointF(50, 75);
|
final PointF udfpsLocation = new PointF(50, 75);
|
||||||
final int radius = 33;
|
final int radius = 33;
|
||||||
@@ -290,6 +381,15 @@ public class LockIconViewControllerTest extends SysuiTestCase {
|
|||||||
return new Pair(radius, udfpsLocation);
|
return new Pair(radius, udfpsLocation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setupShowLockIcon() {
|
||||||
|
when(mKeyguardStateController.isShowing()).thenReturn(true);
|
||||||
|
when(mKeyguardStateController.isKeyguardGoingAway()).thenReturn(false);
|
||||||
|
when(mStatusBarStateController.isDozing()).thenReturn(false);
|
||||||
|
when(mStatusBarStateController.getDozeAmount()).thenReturn(0f);
|
||||||
|
when(mStatusBarStateController.getState()).thenReturn(StatusBarState.KEYGUARD);
|
||||||
|
when(mKeyguardStateController.canDismissLockScreen()).thenReturn(false);
|
||||||
|
}
|
||||||
|
|
||||||
private void captureAuthControllerCallback() {
|
private void captureAuthControllerCallback() {
|
||||||
verify(mAuthController).addCallback(mAuthControllerCallbackCaptor.capture());
|
verify(mAuthController).addCallback(mAuthControllerCallbackCaptor.capture());
|
||||||
mAuthControllerCallback = mAuthControllerCallbackCaptor.getValue();
|
mAuthControllerCallback = mAuthControllerCallbackCaptor.getValue();
|
||||||
@@ -300,6 +400,16 @@ public class LockIconViewControllerTest extends SysuiTestCase {
|
|||||||
mAttachListener = mAttachCaptor.getValue();
|
mAttachListener = mAttachCaptor.getValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void captureKeyguardStateCallback() {
|
||||||
|
verify(mKeyguardStateController).addCallback(mKeyguardStateCaptor.capture());
|
||||||
|
mKeyguardStateCallback = mKeyguardStateCaptor.getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void captureStatusBarStateListener() {
|
||||||
|
verify(mStatusBarStateController).addCallback(mStatusBarStateCaptor.capture());
|
||||||
|
mStatusBarStateListener = mStatusBarStateCaptor.getValue();
|
||||||
|
}
|
||||||
|
|
||||||
private void captureKeyguardUpdateMonitorCallback() {
|
private void captureKeyguardUpdateMonitorCallback() {
|
||||||
verify(mKeyguardUpdateMonitor).registerCallback(
|
verify(mKeyguardUpdateMonitor).registerCallback(
|
||||||
mKeyguardUpdateMonitorCallbackCaptor.capture());
|
mKeyguardUpdateMonitorCallbackCaptor.capture());
|
||||||
|
|||||||
Reference in New Issue
Block a user