diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp index b357a9478ab61..d051290cb4b48 100644 --- a/packages/SystemUI/Android.bp +++ b/packages/SystemUI/Android.bp @@ -94,6 +94,7 @@ android_library { "SystemUI-proto", "dagger2", "jsr330", + "lottie", ], manifest: "AndroidManifest.xml", diff --git a/packages/SystemUI/res/layout/udfps_keyguard_view.xml b/packages/SystemUI/res/layout/udfps_keyguard_view.xml index 562040b0ad826..33baa4e07dc7e 100644 --- a/packages/SystemUI/res/layout/udfps_keyguard_view.xml +++ b/packages/SystemUI/res/layout/udfps_keyguard_view.xml @@ -16,6 +16,7 @@ --> @@ -29,8 +30,28 @@ android:visibility="gone"/> - + + android:layout_height="match_parent" + android:layout_gravity="center" + android:scaleType="centerCrop" + app:lottie_autoPlay="false" + android:padding="16dp" + app:lottie_loop="true" + app:lottie_rawRes="@raw/udfps_aod_fp"/> + + + diff --git a/packages/SystemUI/res/raw/udfps_aod_fp.json b/packages/SystemUI/res/raw/udfps_aod_fp.json new file mode 100644 index 0000000000000..cdac332443452 --- /dev/null +++ b/packages/SystemUI/res/raw/udfps_aod_fp.json @@ -0,0 +1,2445 @@ +{ + "v": "5.7.8", + "fr": 60, + "ip": 0, + "op": 361, + "w": 180, + "h": 185, + "nm": "fingerprint_burn_in_Loop", + "ddd": 0, + "assets": [], + "layers": [ + { + "ddd": 0, + "ind": 1, + "ty": 4, + "nm": "Layer 1 Outlines 10", + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 91.456, + 92.206, + 0 + ], + "ix": 2, + "l": 2 + }, + "a": { + "a": 0, + "k": [ + 20, + 25, + 0 + ], + "ix": 1, + "l": 2 + }, + "s": { + "a": 0, + "k": [ + 350, + 350, + 100 + ], + "ix": 6, + "l": 2 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 0, + 0 + ], + [ + -3.684, + 0 + ], + [ + -2.883, + -1.583 + ] + ], + "o": [ + [ + 2.883, + -1.583 + ], + [ + 3.683, + 0 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + -10.417, + 1.25 + ], + [ + 0.001, + -1.25 + ], + [ + 10.417, + 1.25 + ] + ], + "c": false + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "tm", + "s": { + "a": 0, + "k": 0, + "ix": 1 + }, + "e": { + "a": 0, + "k": 17, + "ix": 2 + }, + "o": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.833 + ], + "y": [ + 0.833 + ] + }, + "o": { + "x": [ + 0.167 + ], + "y": [ + 0.167 + ] + }, + "t": 0, + "s": [ + 246 + ] + }, + { + "t": 360, + "s": [ + 1326 + ] + } + ], + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1", + "mn": "ADBE Vector Filter - Trim", + "hd": false + }, + { + "ty": "st", + "c": { + "a": 0, + "k": [ + 1, + 1, + 1, + 1 + ], + "ix": 3 + }, + "o": { + "a": 0, + "k": 100, + "ix": 4 + }, + "w": { + "a": 0, + "k": 1, + "ix": 5 + }, + "lc": 2, + "lj": 1, + "ml": 10, + "bm": 0, + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 19.999, + 7.5 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 3", + "np": 3, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 600, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 2, + "ty": 4, + "nm": "Layer 1 Outlines 5", + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 91.456, + 92.206, + 0 + ], + "ix": 2, + "l": 2 + }, + "a": { + "a": 0, + "k": [ + 20, + 25, + 0 + ], + "ix": 1, + "l": 2 + }, + "s": { + "a": 0, + "k": [ + 350, + 350, + 100 + ], + "ix": 6, + "l": 2 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 0, + 0 + ], + [ + -3.684, + 0 + ], + [ + -2.883, + -1.583 + ] + ], + "o": [ + [ + 2.883, + -1.583 + ], + [ + 3.683, + 0 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + -10.417, + 1.25 + ], + [ + 0.001, + -1.25 + ], + [ + 10.417, + 1.25 + ] + ], + "c": false + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "tm", + "s": { + "a": 0, + "k": 0, + "ix": 1 + }, + "e": { + "a": 0, + "k": 54, + "ix": 2 + }, + "o": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.833 + ], + "y": [ + 0.833 + ] + }, + "o": { + "x": [ + 0.167 + ], + "y": [ + 0.167 + ] + }, + "t": 0, + "s": [ + 0 + ] + }, + { + "t": 360, + "s": [ + 1080 + ] + } + ], + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1", + "mn": "ADBE Vector Filter - Trim", + "hd": false + }, + { + "ty": "st", + "c": { + "a": 0, + "k": [ + 1, + 1, + 1, + 1 + ], + "ix": 3 + }, + "o": { + "a": 0, + "k": 100, + "ix": 4 + }, + "w": { + "a": 0, + "k": 1, + "ix": 5 + }, + "lc": 2, + "lj": 1, + "ml": 10, + "bm": 0, + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 19.999, + 7.5 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 3", + "np": 3, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 600, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 3, + "ty": 4, + "nm": "Layer 1 Outlines 8", + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 91.456, + 92.206, + 0 + ], + "ix": 2, + "l": 2 + }, + "a": { + "a": 0, + "k": [ + 20, + 25, + 0 + ], + "ix": 1, + "l": 2 + }, + "s": { + "a": 0, + "k": [ + 350, + 350, + 100 + ], + "ix": 6, + "l": 2 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 0, + 0 + ], + [ + -5.883, + 0 + ], + [ + -2.367, + -3.933 + ] + ], + "o": [ + [ + 2.367, + -3.933 + ], + [ + 5.883, + 0 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + -13.75, + 3.333 + ], + [ + 0, + -3.333 + ], + [ + 13.75, + 3.333 + ] + ], + "c": false + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "tm", + "s": { + "a": 0, + "k": 0, + "ix": 1 + }, + "e": { + "a": 0, + "k": 38.235, + "ix": 2 + }, + "o": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.833 + ], + "y": [ + 0.833 + ] + }, + "o": { + "x": [ + 0.167 + ], + "y": [ + 0.167 + ] + }, + "t": 0, + "s": [ + 170 + ] + }, + { + "t": 360, + "s": [ + 890 + ] + } + ], + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1", + "mn": "ADBE Vector Filter - Trim", + "hd": false + }, + { + "ty": "st", + "c": { + "a": 0, + "k": [ + 1, + 1, + 1, + 1 + ], + "ix": 3 + }, + "o": { + "a": 0, + "k": 100, + "ix": 4 + }, + "w": { + "a": 0, + "k": 1, + "ix": 5 + }, + "lc": 2, + "lj": 1, + "ml": 10, + "bm": 0, + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 20, + 16.25 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 2", + "np": 3, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 600, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 4, + "ty": 4, + "nm": "Layer 1 Outlines 4", + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 91.456, + 92.206, + 0 + ], + "ix": 2, + "l": 2 + }, + "a": { + "a": 0, + "k": [ + 20, + 25, + 0 + ], + "ix": 1, + "l": 2 + }, + "s": { + "a": 0, + "k": [ + 350, + 350, + 100 + ], + "ix": 6, + "l": 2 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 0, + 0 + ], + [ + -5.883, + 0 + ], + [ + -2.367, + -3.933 + ] + ], + "o": [ + [ + 2.367, + -3.933 + ], + [ + 5.883, + 0 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + -13.75, + 3.333 + ], + [ + 0, + -3.333 + ], + [ + 13.75, + 3.333 + ] + ], + "c": false + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "tm", + "s": { + "a": 0, + "k": 0, + "ix": 1 + }, + "e": { + "a": 0, + "k": 34.235, + "ix": 2 + }, + "o": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.833 + ], + "y": [ + 0.833 + ] + }, + "o": { + "x": [ + 0.167 + ], + "y": [ + 0.167 + ] + }, + "t": 0, + "s": [ + 0 + ] + }, + { + "t": 360, + "s": [ + 720 + ] + } + ], + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1", + "mn": "ADBE Vector Filter - Trim", + "hd": false + }, + { + "ty": "st", + "c": { + "a": 0, + "k": [ + 1, + 1, + 1, + 1 + ], + "ix": 3 + }, + "o": { + "a": 0, + "k": 100, + "ix": 4 + }, + "w": { + "a": 0, + "k": 1, + "ix": 5 + }, + "lc": 2, + "lj": 1, + "ml": 10, + "bm": 0, + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 20, + 16.25 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 2", + "np": 3, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 600, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 5, + "ty": 4, + "nm": "Layer 1 Outlines 7", + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 91.456, + 92.206, + 0 + ], + "ix": 2, + "l": 2 + }, + "a": { + "a": 0, + "k": [ + 20, + 25, + 0 + ], + "ix": 1, + "l": 2 + }, + "s": { + "a": 0, + "k": [ + 350, + 350, + 100 + ], + "ix": 6, + "l": 2 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -6.65, + 0 + ], + [ + 0, + -5.9 + ], + [ + 0, + 0 + ], + [ + 2.333, + 0 + ], + [ + 0.633, + 1.601 + ], + [ + 0, + 0 + ], + [ + 1.717, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + -2.2 + ], + [ + -2.15, + -1.716 + ], + [ + 0, + 0 + ] + ], + "o": [ + [ + -0.767, + -2.134 + ], + [ + 0, + -5.917 + ], + [ + 6.65, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 2.333 + ], + [ + -1.734, + 0 + ], + [ + 0, + 0 + ], + [ + -0.634, + -1.599 + ], + [ + 0, + 0 + ], + [ + -2.2, + 0 + ], + [ + 0, + 2.75 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + -11.108, + 5.825 + ], + [ + -11.875, + 1.525 + ], + [ + -0.208, + -9.175 + ], + [ + 11.875, + 1.525 + ], + [ + 11.875, + 1.592 + ], + [ + 7.659, + 5.808 + ], + [ + 3.742, + 3.158 + ], + [ + 2.526, + 0.141 + ], + [ + -1.391, + -2.508 + ], + [ + -1.641, + -2.508 + ], + [ + -5.625, + 1.475 + ], + [ + -2.225, + 8.558 + ], + [ + -1.458, + 9.175 + ] + ], + "c": false + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "tm", + "s": { + "a": 0, + "k": 0, + "ix": 1 + }, + "e": { + "a": 0, + "k": 35, + "ix": 2 + }, + "o": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.833 + ], + "y": [ + 0.833 + ] + }, + "o": { + "x": [ + 0.167 + ], + "y": [ + 0.167 + ] + }, + "t": 0, + "s": [ + -159 + ] + }, + { + "t": 360, + "s": [ + 201 + ] + } + ], + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1", + "mn": "ADBE Vector Filter - Trim", + "hd": false + }, + { + "ty": "st", + "c": { + "a": 0, + "k": [ + 1, + 1, + 1, + 1 + ], + "ix": 3 + }, + "o": { + "a": 0, + "k": 100, + "ix": 4 + }, + "w": { + "a": 0, + "k": 1, + "ix": 5 + }, + "lc": 2, + "lj": 1, + "ml": 4, + "bm": 0, + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 19.992, + 28.758 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 4", + "np": 3, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 600, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 6, + "ty": 4, + "nm": "Layer 1 Outlines 6", + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 91.456, + 92.206, + 0 + ], + "ix": 2, + "l": 2 + }, + "a": { + "a": 0, + "k": [ + 20, + 25, + 0 + ], + "ix": 1, + "l": 2 + }, + "s": { + "a": 0, + "k": [ + 350, + 350, + 100 + ], + "ix": 6, + "l": 2 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -6.65, + 0 + ], + [ + 0, + -5.9 + ], + [ + 0, + 0 + ], + [ + 2.333, + 0 + ], + [ + 0.633, + 1.601 + ], + [ + 0, + 0 + ], + [ + 1.717, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + -2.2 + ], + [ + -2.15, + -1.716 + ], + [ + 0, + 0 + ] + ], + "o": [ + [ + -0.767, + -2.134 + ], + [ + 0, + -5.917 + ], + [ + 6.65, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 2.333 + ], + [ + -1.734, + 0 + ], + [ + 0, + 0 + ], + [ + -0.634, + -1.599 + ], + [ + 0, + 0 + ], + [ + -2.2, + 0 + ], + [ + 0, + 2.75 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + -11.108, + 5.825 + ], + [ + -11.875, + 1.525 + ], + [ + -0.208, + -9.175 + ], + [ + 11.875, + 1.525 + ], + [ + 11.875, + 1.592 + ], + [ + 7.659, + 5.808 + ], + [ + 3.742, + 3.158 + ], + [ + 2.526, + 0.141 + ], + [ + -1.391, + -2.508 + ], + [ + -1.641, + -2.508 + ], + [ + -5.625, + 1.475 + ], + [ + -2.225, + 8.558 + ], + [ + -1.458, + 9.175 + ] + ], + "c": false + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "tm", + "s": { + "a": 0, + "k": 0, + "ix": 1 + }, + "e": { + "a": 0, + "k": 9, + "ix": 2 + }, + "o": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.833 + ], + "y": [ + 0.833 + ] + }, + "o": { + "x": [ + 0.167 + ], + "y": [ + 0.167 + ] + }, + "t": 0, + "s": [ + 135 + ] + }, + { + "t": 360, + "s": [ + 495 + ] + } + ], + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1", + "mn": "ADBE Vector Filter - Trim", + "hd": false + }, + { + "ty": "st", + "c": { + "a": 0, + "k": [ + 1, + 1, + 1, + 1 + ], + "ix": 3 + }, + "o": { + "a": 0, + "k": 100, + "ix": 4 + }, + "w": { + "a": 0, + "k": 1, + "ix": 5 + }, + "lc": 2, + "lj": 1, + "ml": 4, + "bm": 0, + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 19.992, + 28.758 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 4", + "np": 3, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 600, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 7, + "ty": 4, + "nm": "Layer 1 Outlines 3", + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 91.456, + 92.206, + 0 + ], + "ix": 2, + "l": 2 + }, + "a": { + "a": 0, + "k": [ + 20, + 25, + 0 + ], + "ix": 1, + "l": 2 + }, + "s": { + "a": 0, + "k": [ + 350, + 350, + 100 + ], + "ix": 6, + "l": 2 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -6.65, + 0 + ], + [ + 0, + -5.9 + ], + [ + 0, + 0 + ], + [ + 2.333, + 0 + ], + [ + 0.633, + 1.601 + ], + [ + 0, + 0 + ], + [ + 1.717, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + -2.2 + ], + [ + -2.15, + -1.716 + ], + [ + 0, + 0 + ] + ], + "o": [ + [ + -0.767, + -2.134 + ], + [ + 0, + -5.917 + ], + [ + 6.65, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 2.333 + ], + [ + -1.734, + 0 + ], + [ + 0, + 0 + ], + [ + -0.634, + -1.599 + ], + [ + 0, + 0 + ], + [ + -2.2, + 0 + ], + [ + 0, + 2.75 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + -11.108, + 5.825 + ], + [ + -11.875, + 1.525 + ], + [ + -0.208, + -9.175 + ], + [ + 11.875, + 1.525 + ], + [ + 11.875, + 1.592 + ], + [ + 7.659, + 5.808 + ], + [ + 3.742, + 3.158 + ], + [ + 2.526, + 0.141 + ], + [ + -1.391, + -2.508 + ], + [ + -1.641, + -2.508 + ], + [ + -5.625, + 1.475 + ], + [ + -2.225, + 8.558 + ], + [ + -1.458, + 9.175 + ] + ], + "c": false + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "tm", + "s": { + "a": 0, + "k": 0, + "ix": 1 + }, + "e": { + "a": 0, + "k": 30, + "ix": 2 + }, + "o": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.833 + ], + "y": [ + 0.833 + ] + }, + "o": { + "x": [ + 0.167 + ], + "y": [ + 0.167 + ] + }, + "t": 0, + "s": [ + 0 + ] + }, + { + "t": 360, + "s": [ + 360 + ] + } + ], + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1", + "mn": "ADBE Vector Filter - Trim", + "hd": false + }, + { + "ty": "st", + "c": { + "a": 0, + "k": [ + 1, + 1, + 1, + 1 + ], + "ix": 3 + }, + "o": { + "a": 0, + "k": 100, + "ix": 4 + }, + "w": { + "a": 0, + "k": 1, + "ix": 5 + }, + "lc": 2, + "lj": 1, + "ml": 4, + "bm": 0, + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 19.992, + 28.758 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 4", + "np": 3, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 600, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 8, + "ty": 4, + "nm": "Layer 1 Outlines 2", + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 91.456, + 92.206, + 0 + ], + "ix": 2, + "l": 2 + }, + "a": { + "a": 0, + "k": [ + 20, + 25, + 0 + ], + "ix": 1, + "l": 2 + }, + "s": { + "a": 0, + "k": [ + 350, + 350, + 100 + ], + "ix": 6, + "l": 2 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 0, + 0 + ], + [ + 3.2, + 0 + ], + [ + 2.217, + 2.066 + ] + ], + "o": [ + [ + -2.217, + 2.066 + ], + [ + -3.2, + 0 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + 8.75, + -1.667 + ], + [ + 0, + 1.667 + ], + [ + -8.75, + -1.667 + ] + ], + "c": false + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "tm", + "s": { + "a": 0, + "k": 0, + "ix": 1 + }, + "e": { + "a": 0, + "k": 69, + "ix": 2 + }, + "o": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.833 + ], + "y": [ + 0.833 + ] + }, + "o": { + "x": [ + 0.167 + ], + "y": [ + 0.167 + ] + }, + "t": 0, + "s": [ + 0 + ] + }, + { + "t": 360, + "s": [ + 720 + ] + } + ], + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1", + "mn": "ADBE Vector Filter - Trim", + "hd": false + }, + { + "ty": "st", + "c": { + "a": 0, + "k": [ + 1, + 1, + 1, + 1 + ], + "ix": 3 + }, + "o": { + "a": 0, + "k": 100, + "ix": 4 + }, + "w": { + "a": 0, + "k": 1, + "ix": 5 + }, + "lc": 2, + "lj": 1, + "ml": 10, + "bm": 0, + "d": [ + { + "n": "d", + "nm": "dash", + "v": { + "a": 0, + "k": 0, + "ix": 1 + } + }, + { + "n": "o", + "nm": "offset", + "v": { + "a": 0, + "k": 25, + "ix": 7 + } + } + ], + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 20, + 42.083 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 3, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 600, + "st": 0, + "bm": 0 + } + ], + "markers": [ + { + "tm": 210, + "cm": "2", + "dr": 0 + }, + { + "tm": 255, + "cm": "1", + "dr": 0 + } + ] +} \ No newline at end of file diff --git a/packages/SystemUI/res/raw/udfps_lockscreen_fp.json b/packages/SystemUI/res/raw/udfps_lockscreen_fp.json new file mode 100644 index 0000000000000..cef433ef95d25 --- /dev/null +++ b/packages/SystemUI/res/raw/udfps_lockscreen_fp.json @@ -0,0 +1,1017 @@ +{ + "v": "5.7.8", + "fr": 60, + "ip": 0, + "op": 46, + "w": 180, + "h": 185, + "nm": "fingerprint_build_on", + "ddd": 0, + "assets": [], + "layers": [ + { + "ddd": 0, + "ind": 1, + "ty": 4, + "nm": "fingerprint_build_on", + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 91.456, + 92.206, + 0 + ], + "ix": 2, + "l": 2 + }, + "a": { + "a": 0, + "k": [ + 20, + 25, + 0 + ], + "ix": 1, + "l": 2 + }, + "s": { + "a": 0, + "k": [ + 350, + 350, + 100 + ], + "ix": 6, + "l": 2 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 0, + 0 + ], + [ + 3.2, + 0 + ], + [ + 2.217, + 2.066 + ] + ], + "o": [ + [ + -2.217, + 2.066 + ], + [ + -3.2, + 0 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + 8.75, + -1.667 + ], + [ + 0, + 1.667 + ], + [ + -8.75, + -1.667 + ] + ], + "c": false + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "tm", + "s": { + "a": 0, + "k": 0, + "ix": 1 + }, + "e": { + "a": 0, + "k": 100, + "ix": 2 + }, + "o": { + "a": 0, + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1", + "mn": "ADBE Vector Filter - Trim", + "hd": false + }, + { + "ty": "st", + "c": { + "a": 0, + "k": [ + 1, + 1, + 1, + 1 + ], + "ix": 3 + }, + "o": { + "a": 0, + "k": 100, + "ix": 4 + }, + "w": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.167 + ], + "y": [ + 0.167 + ] + }, + "t": 0, + "s": [ + 0 + ] + }, + { + "t": 24, + "s": [ + 2.5 + ] + } + ], + "ix": 5 + }, + "lc": 2, + "lj": 1, + "ml": 10, + "bm": 0, + "d": [ + { + "n": "d", + "nm": "dash", + "v": { + "a": 0, + "k": 0, + "ix": 1 + } + }, + { + "n": "o", + "nm": "offset", + "v": { + "a": 0, + "k": 0, + "ix": 7 + } + } + ], + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 20, + 42.083 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 3, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 0, + 0 + ], + [ + -5.883, + 0 + ], + [ + -2.367, + -3.933 + ] + ], + "o": [ + [ + 2.367, + -3.933 + ], + [ + 5.883, + 0 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + -13.75, + 3.333 + ], + [ + 0, + -3.333 + ], + [ + 13.75, + 3.333 + ] + ], + "c": false + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "tm", + "s": { + "a": 0, + "k": 0, + "ix": 1 + }, + "e": { + "a": 0, + "k": 100, + "ix": 2 + }, + "o": { + "a": 0, + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1", + "mn": "ADBE Vector Filter - Trim", + "hd": false + }, + { + "ty": "st", + "c": { + "a": 0, + "k": [ + 1, + 1, + 1, + 1 + ], + "ix": 3 + }, + "o": { + "a": 0, + "k": 100, + "ix": 4 + }, + "w": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.167 + ], + "y": [ + 0.167 + ] + }, + "t": 0, + "s": [ + 0 + ] + }, + { + "t": 24, + "s": [ + 2.5 + ] + } + ], + "ix": 5 + }, + "lc": 2, + "lj": 1, + "ml": 10, + "bm": 0, + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 20, + 16.25 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 2", + "np": 3, + "cix": 2, + "bm": 0, + "ix": 2, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 0, + 0 + ], + [ + -3.684, + 0 + ], + [ + -2.883, + -1.583 + ] + ], + "o": [ + [ + 2.883, + -1.583 + ], + [ + 3.683, + 0 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + -10.417, + 1.25 + ], + [ + 0.001, + -1.25 + ], + [ + 10.417, + 1.25 + ] + ], + "c": false + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "tm", + "s": { + "a": 0, + "k": 0, + "ix": 1 + }, + "e": { + "a": 0, + "k": 100, + "ix": 2 + }, + "o": { + "a": 0, + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1", + "mn": "ADBE Vector Filter - Trim", + "hd": false + }, + { + "ty": "st", + "c": { + "a": 0, + "k": [ + 1, + 1, + 1, + 1 + ], + "ix": 3 + }, + "o": { + "a": 0, + "k": 100, + "ix": 4 + }, + "w": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.167 + ], + "y": [ + 0.167 + ] + }, + "t": 0, + "s": [ + 0 + ] + }, + { + "t": 24, + "s": [ + 2.5 + ] + } + ], + "ix": 5 + }, + "lc": 2, + "lj": 1, + "ml": 10, + "bm": 0, + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 19.999, + 7.5 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 3", + "np": 3, + "cix": 2, + "bm": 0, + "ix": 3, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -6.65, + 0 + ], + [ + 0, + -5.9 + ], + [ + 0, + 0 + ], + [ + 2.333, + 0 + ], + [ + 0.633, + 1.601 + ], + [ + 0, + 0 + ], + [ + 1.717, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + -2.2 + ], + [ + -2.15, + -1.716 + ], + [ + 0, + 0 + ] + ], + "o": [ + [ + -0.767, + -2.134 + ], + [ + 0, + -5.917 + ], + [ + 6.65, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 2.333 + ], + [ + -1.734, + 0 + ], + [ + 0, + 0 + ], + [ + -0.634, + -1.599 + ], + [ + 0, + 0 + ], + [ + -2.2, + 0 + ], + [ + 0, + 2.75 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + -11.108, + 5.825 + ], + [ + -11.875, + 1.525 + ], + [ + -0.208, + -9.175 + ], + [ + 11.875, + 1.525 + ], + [ + 11.875, + 1.592 + ], + [ + 7.659, + 5.808 + ], + [ + 3.742, + 3.158 + ], + [ + 2.526, + 0.141 + ], + [ + -1.391, + -2.508 + ], + [ + -1.641, + -2.508 + ], + [ + -5.625, + 1.475 + ], + [ + -2.225, + 8.558 + ], + [ + -1.458, + 9.175 + ] + ], + "c": false + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "tm", + "s": { + "a": 0, + "k": 0, + "ix": 1 + }, + "e": { + "a": 0, + "k": 100, + "ix": 2 + }, + "o": { + "a": 0, + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1", + "mn": "ADBE Vector Filter - Trim", + "hd": false + }, + { + "ty": "st", + "c": { + "a": 0, + "k": [ + 1, + 1, + 1, + 1 + ], + "ix": 3 + }, + "o": { + "a": 0, + "k": 100, + "ix": 4 + }, + "w": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.167 + ], + "y": [ + 0.167 + ] + }, + "t": 0, + "s": [ + 0 + ] + }, + { + "t": 24, + "s": [ + 2.5 + ] + } + ], + "ix": 5 + }, + "lc": 2, + "lj": 1, + "ml": 10, + "bm": 0, + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 19.992, + 28.758 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 4", + "np": 3, + "cix": 2, + "bm": 0, + "ix": 4, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 600, + "st": 0, + "bm": 0 + } + ], + "markers": [ + { + "tm": 210, + "cm": "2", + "dr": 0 + }, + { + "tm": 255, + "cm": "1", + "dr": 0 + } + ] +} \ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationView.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationView.java index 2d403f63c2cdf..1f11894de55e4 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationView.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationView.java @@ -74,7 +74,10 @@ abstract class UdfpsAnimationView extends FrameLayout { return false; } - protected void updateAlpha() { + /** + * @return current alpha + */ + protected int updateAlpha() { int alpha = calculateAlpha(); getDrawable().setAlpha(alpha); @@ -84,6 +87,8 @@ abstract class UdfpsAnimationView extends FrameLayout { } else { ((ViewGroup) getParent()).setVisibility(View.VISIBLE); } + + return alpha; } int calculateAlpha() { diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollView.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollView.java index 7f4d7fe01e904..2cdf49d6fc3c0 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollView.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollView.java @@ -42,11 +42,6 @@ public class UdfpsEnrollView extends UdfpsAnimationView { mHandler = new Handler(Looper.getMainLooper()); } - @Override - protected void updateAlpha() { - super.updateAlpha(); - } - @Override protected void onFinishInflate() { mFingerprintView = findViewById(R.id.udfps_enroll_animation_fp_view); diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardDrawable.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardDrawable.java deleted file mode 100644 index 889409351a8c9..0000000000000 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardDrawable.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * 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. - */ - -package com.android.systemui.biometrics; - -import static com.android.systemui.doze.util.BurnInHelperKt.getBurnInOffset; - -import android.animation.ValueAnimator; -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Color; -import android.util.MathUtils; - -import androidx.annotation.NonNull; - -import com.android.internal.graphics.ColorUtils; -import com.android.settingslib.Utils; -import com.android.systemui.R; -import com.android.systemui.animation.Interpolators; -import com.android.systemui.doze.DozeReceiver; - -/** - * UDFPS animations that should be shown when authenticating on keyguard. - */ -public class UdfpsKeyguardDrawable extends UdfpsDrawable implements DozeReceiver { - - private static final String TAG = "UdfpsAnimationKeyguard"; - private final int mAmbientDisplayColor; - static final float DEFAULT_AOD_STROKE_WIDTH = 1f; - - @NonNull private final Context mContext; - private int mLockScreenColor; - - // AOD anti-burn-in offsets - private final int mMaxBurnInOffsetX; - private final int mMaxBurnInOffsetY; - private float mInterpolatedDarkAmount; - private float mBurnInOffsetX; - private float mBurnInOffsetY; - - private final ValueAnimator mHintAnimator = ValueAnimator.ofFloat( - UdfpsKeyguardDrawable.DEFAULT_STROKE_WIDTH, - .5f, - UdfpsKeyguardDrawable.DEFAULT_STROKE_WIDTH); - - UdfpsKeyguardDrawable(@NonNull Context context) { - super(context); - mContext = context; - - mMaxBurnInOffsetX = context.getResources() - .getDimensionPixelSize(R.dimen.udfps_burn_in_offset_x); - mMaxBurnInOffsetY = context.getResources() - .getDimensionPixelSize(R.dimen.udfps_burn_in_offset_y); - - mHintAnimator.setDuration(2000); - mHintAnimator.setInterpolator(Interpolators.FAST_OUT_SLOW_IN); - mHintAnimator.addUpdateListener(anim -> setStrokeWidth((float) anim.getAnimatedValue())); - - mLockScreenColor = Utils.getColorAttrDefaultColor(mContext, - R.attr.wallpaperTextColorAccent); - mAmbientDisplayColor = Color.WHITE; - - updateIcon(); - } - - private void updateIcon() { - mBurnInOffsetX = MathUtils.lerp(0f, - getBurnInOffset(mMaxBurnInOffsetX * 2, true /* xAxis */) - - mMaxBurnInOffsetX, - mInterpolatedDarkAmount); - mBurnInOffsetY = MathUtils.lerp(0f, - getBurnInOffset(mMaxBurnInOffsetY * 2, false /* xAxis */) - - mMaxBurnInOffsetY, - mInterpolatedDarkAmount); - - mFingerprintDrawable.setTint(ColorUtils.blendARGB(mLockScreenColor, - mAmbientDisplayColor, mInterpolatedDarkAmount)); - setStrokeWidth(MathUtils.lerp(DEFAULT_STROKE_WIDTH, DEFAULT_AOD_STROKE_WIDTH, - mInterpolatedDarkAmount)); - invalidateSelf(); - } - - @Override - public void dozeTimeTick() { - updateIcon(); - } - - @Override - public void draw(@NonNull Canvas canvas) { - if (isIlluminationShowing()) { - return; - } - canvas.save(); - canvas.translate(mBurnInOffsetX, mBurnInOffsetY); - mFingerprintDrawable.draw(canvas); - canvas.restore(); - } - - void animateHint() { - mHintAnimator.start(); - } - - void onDozeAmountChanged(float linear, float eased) { - mHintAnimator.cancel(); - mInterpolatedDarkAmount = eased; - updateIcon(); - } - - void setLockScreenColor(int color) { - if (mLockScreenColor == color) return; - mLockScreenColor = color; - updateIcon(); - } -} diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardView.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardView.java index 804e2ab00bde9..ec96af3ef5004 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardView.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardView.java @@ -16,6 +16,9 @@ package com.android.systemui.biometrics; +import static com.android.systemui.doze.util.BurnInHelperKt.getBurnInOffset; +import static com.android.systemui.doze.util.BurnInHelperKt.getBurnInProgressOffset; + import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; @@ -23,7 +26,10 @@ import android.animation.ArgbEvaluator; import android.animation.ObjectAnimator; import android.animation.ValueAnimator; import android.content.Context; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffColorFilter; import android.util.AttributeSet; +import android.util.MathUtils; import android.view.View; import android.widget.ImageView; @@ -34,12 +40,17 @@ import com.android.systemui.R; import com.android.systemui.animation.Interpolators; import com.android.systemui.statusbar.StatusBarState; +import com.airbnb.lottie.LottieAnimationView; +import com.airbnb.lottie.LottieProperty; +import com.airbnb.lottie.model.KeyPath; /** * View corresponding with udfps_keyguard_view.xml */ public class UdfpsKeyguardView extends UdfpsAnimationView { - private final UdfpsKeyguardDrawable mFingerprintDrawable; - private ImageView mFingerprintView; + private UdfpsDrawable mFingerprintDrawable; // placeholder + private LottieAnimationView mAodFp; + private LottieAnimationView mLockScreenFp; + private int mUdfpsBouncerColor; private int mWallpaperTextColor; private int mStatusBarState; @@ -52,16 +63,31 @@ public class UdfpsKeyguardView extends UdfpsAnimationView { private AnimatorSet mAnimatorSet; private int mAlpha; // 0-255 + // AOD anti-burn-in offsets + private final int mMaxBurnInOffsetX; + private final int mMaxBurnInOffsetY; + private float mBurnInOffsetX; + private float mBurnInOffsetY; + private float mBurnInProgress; + private float mInterpolatedDarkAmount; + + private ValueAnimator mHintAnimator; + public UdfpsKeyguardView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); - mFingerprintDrawable = new UdfpsKeyguardDrawable(mContext); + mFingerprintDrawable = new UdfpsFpDrawable(context); + + mMaxBurnInOffsetX = context.getResources() + .getDimensionPixelSize(R.dimen.udfps_burn_in_offset_x); + mMaxBurnInOffsetY = context.getResources() + .getDimensionPixelSize(R.dimen.udfps_burn_in_offset_y); } @Override protected void onFinishInflate() { super.onFinishInflate(); - mFingerprintView = findViewById(R.id.udfps_keyguard_animation_fp_view); - mFingerprintView.setForeground(mFingerprintDrawable); + mAodFp = findViewById(R.id.udfps_aod_fp); + mLockScreenFp = findViewById(R.id.udfps_lockscreen_fp); mBgProtection = findViewById(R.id.udfps_keyguard_fp_bg); @@ -69,7 +95,16 @@ public class UdfpsKeyguardView extends UdfpsAnimationView { R.attr.wallpaperTextColorAccent); mTextColorPrimary = Utils.getColorAttrDefaultColor(mContext, android.R.attr.textColorPrimary); + + // requires call to invalidate to update the color (see #updateColor) + mLockScreenFp.addValueCallback( + new KeyPath("**"), LottieProperty.COLOR_FILTER, + frameInfo -> new PorterDuffColorFilter(getColor(), PorterDuff.Mode.SRC_ATOP) + ); mUdfpsRequested = false; + + mHintAnimator = ObjectAnimator.ofFloat(mLockScreenFp, "progress", 1f, 0f, 1f); + mHintAnimator.setDuration(4000); } @Override @@ -89,10 +124,27 @@ public class UdfpsKeyguardView extends UdfpsAnimationView { @Override public boolean dozeTimeTick() { - mFingerprintDrawable.dozeTimeTick(); + updateBurnInOffsets(); return true; } + private void updateBurnInOffsets() { + mBurnInOffsetX = MathUtils.lerp(0f, + getBurnInOffset(mMaxBurnInOffsetX * 2, true /* xAxis */) + - mMaxBurnInOffsetX, mInterpolatedDarkAmount); + mBurnInOffsetY = MathUtils.lerp(0f, + getBurnInOffset(mMaxBurnInOffsetY * 2, false /* xAxis */) + - mMaxBurnInOffsetY, mInterpolatedDarkAmount); + mBurnInProgress = MathUtils.lerp(0f, getBurnInProgressOffset(), mInterpolatedDarkAmount); + + mAodFp.setTranslationX(mBurnInOffsetX); + mAodFp.setTranslationY(mBurnInOffsetY); + mAodFp.setProgress(mBurnInProgress); + + mLockScreenFp.setTranslationX(mBurnInOffsetX); + mLockScreenFp.setTranslationY(mBurnInOffsetY); + } + void requestUdfps(boolean request, int color) { if (request) { mUdfpsRequestedColor = color; @@ -105,22 +157,31 @@ public class UdfpsKeyguardView extends UdfpsAnimationView { void setStatusBarState(int statusBarState) { mStatusBarState = statusBarState; - updateColor(); } void updateColor() { - mFingerprintView.setAlpha(1f); - mFingerprintDrawable.setLockScreenColor(getColor()); + mLockScreenFp.invalidate(); } + private boolean showingUdfpsBouncer() { + return mBgProtection.getVisibility() == View.VISIBLE; + } + + private int getColor() { - if (mUdfpsRequested && mUdfpsRequestedColor != -1) { + if (isUdfpsColorRequested()) { return mUdfpsRequestedColor; + } else if (showingUdfpsBouncer()) { + return mUdfpsBouncerColor; } else { return mWallpaperTextColor; } } + private boolean isUdfpsColorRequested() { + return mUdfpsRequested && mUdfpsRequestedColor != -1; + } + /** * @param alpha between 0 and 255 */ @@ -129,6 +190,13 @@ public class UdfpsKeyguardView extends UdfpsAnimationView { updateAlpha(); } + @Override + protected int updateAlpha() { + int alpha = super.updateAlpha(); + mLockScreenFp.setImageAlpha(alpha); + return alpha; + } + @Override int calculateAlpha() { if (mPauseAuth) { @@ -138,18 +206,31 @@ public class UdfpsKeyguardView extends UdfpsAnimationView { } void onDozeAmountChanged(float linear, float eased) { - mFingerprintDrawable.onDozeAmountChanged(linear, eased); + mHintAnimator.cancel(); + mInterpolatedDarkAmount = eased; + updateBurnInOffsets(); + mLockScreenFp.setProgress(1f - mInterpolatedDarkAmount); + mAodFp.setAlpha(mInterpolatedDarkAmount); + + if (linear == 1f) { + mLockScreenFp.setVisibility(View.INVISIBLE); + } else { + mLockScreenFp.setVisibility(View.VISIBLE); + } } void animateHint() { - mFingerprintDrawable.animateHint(); + if (!isShadeLocked() && !mUdfpsRequested && mAlpha == 255 + && mLockScreenFp.isVisibleToUser()) { + mHintAnimator.start(); + } } /** * Animates in the bg protection circle behind the fp icon to highlight the icon. */ void animateUdfpsBouncer(Runnable onEndAnimation) { - if (mBgProtection.getVisibility() == View.VISIBLE && mBgProtection.getAlpha() == 1f) { + if (showingUdfpsBouncer() && mBgProtection.getAlpha() == 1f) { // already fully highlighted, don't re-animate return; } @@ -157,19 +238,6 @@ public class UdfpsKeyguardView extends UdfpsAnimationView { if (mAnimatorSet != null) { mAnimatorSet.cancel(); } - ValueAnimator fpIconAnim; - if (isShadeLocked()) { - // set color and fade in since we weren't showing before - mFingerprintDrawable.setLockScreenColor(mTextColorPrimary); - fpIconAnim = ObjectAnimator.ofFloat(mFingerprintView, View.ALPHA, 0f, 1f); - } else { - // update icon color - fpIconAnim = new ValueAnimator(); - fpIconAnim.setIntValues(getColor(), mTextColorPrimary); - fpIconAnim.setEvaluator(new ArgbEvaluator()); - fpIconAnim.addUpdateListener(valueAnimator -> mFingerprintDrawable.setLockScreenColor( - (Integer) valueAnimator.getAnimatedValue())); - } mAnimatorSet = new AnimatorSet(); mAnimatorSet.setInterpolator(Interpolators.FAST_OUT_SLOW_IN); @@ -181,11 +249,31 @@ public class UdfpsKeyguardView extends UdfpsAnimationView { } }); + ValueAnimator fpIconColorAnim; + if (isShadeLocked()) { + // set color and fade in since we weren't showing before + mUdfpsBouncerColor = mTextColorPrimary; + fpIconColorAnim = ValueAnimator.ofInt(0, 255); + fpIconColorAnim.addUpdateListener(valueAnimator -> + mLockScreenFp.setImageAlpha((int) valueAnimator.getAnimatedValue())); + } else { + // update icon color + fpIconColorAnim = new ValueAnimator(); + fpIconColorAnim.setIntValues( + isUdfpsColorRequested() ? mUdfpsRequestedColor : mWallpaperTextColor, + mTextColorPrimary); + fpIconColorAnim.setEvaluator(ArgbEvaluator.getInstance()); + fpIconColorAnim.addUpdateListener(valueAnimator -> { + mUdfpsBouncerColor = (int) valueAnimator.getAnimatedValue(); + updateColor(); + }); + } + mAnimatorSet.playTogether( ObjectAnimator.ofFloat(mBgProtection, View.ALPHA, 0f, 1f), ObjectAnimator.ofFloat(mBgProtection, View.SCALE_X, 0f, 1f), ObjectAnimator.ofFloat(mBgProtection, View.SCALE_Y, 0f, 1f), - fpIconAnim); + fpIconColorAnim); mAnimatorSet.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { @@ -197,15 +285,11 @@ public class UdfpsKeyguardView extends UdfpsAnimationView { mAnimatorSet.start(); } - private boolean isShadeLocked() { - return mStatusBarState == StatusBarState.SHADE_LOCKED; - } - /** * Animates out the bg protection circle behind the fp icon to unhighlight the icon. */ void animateAwayUdfpsBouncer(@Nullable Runnable onEndAnimation) { - if (mBgProtection.getVisibility() == View.GONE) { + if (!showingUdfpsBouncer()) { // already hidden return; } @@ -213,17 +297,25 @@ public class UdfpsKeyguardView extends UdfpsAnimationView { if (mAnimatorSet != null) { mAnimatorSet.cancel(); } - ValueAnimator fpIconAnim; + + ValueAnimator fpIconColorAnim; if (isShadeLocked()) { // fade out - fpIconAnim = ObjectAnimator.ofFloat(mFingerprintView, View.ALPHA, 1f, 0f); + mUdfpsBouncerColor = mTextColorPrimary; + fpIconColorAnim = ValueAnimator.ofInt(255, 0); + fpIconColorAnim.addUpdateListener(valueAnimator -> + mLockScreenFp.setImageAlpha((int) valueAnimator.getAnimatedValue())); } else { // update icon color - fpIconAnim = new ValueAnimator(); - fpIconAnim.setIntValues(mTextColorPrimary, getColor()); - fpIconAnim.setEvaluator(new ArgbEvaluator()); - fpIconAnim.addUpdateListener(valueAnimator -> mFingerprintDrawable.setLockScreenColor( - (Integer) valueAnimator.getAnimatedValue())); + fpIconColorAnim = new ValueAnimator(); + fpIconColorAnim.setIntValues( + mTextColorPrimary, + isUdfpsColorRequested() ? mUdfpsRequestedColor : mWallpaperTextColor); + fpIconColorAnim.setEvaluator(ArgbEvaluator.getInstance()); + fpIconColorAnim.addUpdateListener(valueAnimator -> { + mUdfpsBouncerColor = (int) valueAnimator.getAnimatedValue(); + updateColor(); + }); } mAnimatorSet = new AnimatorSet(); @@ -231,7 +323,7 @@ public class UdfpsKeyguardView extends UdfpsAnimationView { ObjectAnimator.ofFloat(mBgProtection, View.ALPHA, 1f, 0f), ObjectAnimator.ofFloat(mBgProtection, View.SCALE_X, 1f, 0f), ObjectAnimator.ofFloat(mBgProtection, View.SCALE_Y, 1f, 0f), - fpIconAnim); + fpIconColorAnim); mAnimatorSet.setInterpolator(Interpolators.FAST_OUT_SLOW_IN); mAnimatorSet.setDuration(500); @@ -244,10 +336,15 @@ public class UdfpsKeyguardView extends UdfpsAnimationView { } } }); + mAnimatorSet.start(); } boolean isAnimating() { return mAnimatorSet != null && mAnimatorSet.isRunning(); } + + private boolean isShadeLocked() { + return mStatusBarState == StatusBarState.SHADE_LOCKED; + } } diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewController.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewController.java index 35ca470df5234..819de538c8407 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewController.java @@ -316,6 +316,14 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController