summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--PermissionController/res/drawable-v34/safety_status_info.xml20
-rw-r--r--PermissionController/res/drawable-v34/safety_status_info_to_info_anim.xml245
-rw-r--r--PermissionController/res/drawable-v34/safety_status_recommend_to_info_anim.xml722
-rw-r--r--PermissionController/res/drawable-v34/safety_status_recommendation.xml24
-rw-r--r--PermissionController/res/drawable-v34/safety_status_warn.xml24
-rw-r--r--PermissionController/res/drawable-v34/safety_status_warn_to_info_anim.xml722
-rw-r--r--PermissionController/res/drawable-v34/safety_status_warn_to_recommend_anim.xml346
-rw-r--r--PermissionController/res/drawable-v34/status_info_to_scanning_anim.xml149
-rw-r--r--PermissionController/res/drawable-v34/status_recommend_to_scanning_anim.xml225
-rw-r--r--PermissionController/res/drawable-v34/status_scanning_anim_info.xml111
-rw-r--r--PermissionController/res/drawable-v34/status_scanning_anim_recommend.xml111
-rw-r--r--PermissionController/res/drawable-v34/status_scanning_anim_warn.xml111
-rw-r--r--PermissionController/res/drawable-v34/status_scanning_end_anim_info_to_info.xml265
-rw-r--r--PermissionController/res/drawable-v34/status_scanning_end_anim_info_to_recommend.xml469
-rw-r--r--PermissionController/res/drawable-v34/status_scanning_end_anim_info_to_warn.xml469
-rw-r--r--PermissionController/res/drawable-v34/status_scanning_end_anim_recommend_to_info.xml293
-rw-r--r--PermissionController/res/drawable-v34/status_scanning_end_anim_recommend_to_recommend.xml458
-rw-r--r--PermissionController/res/drawable-v34/status_scanning_end_anim_recommend_to_warn.xml532
-rw-r--r--PermissionController/res/drawable-v34/status_scanning_end_anim_warn_to_info.xml293
-rw-r--r--PermissionController/res/drawable-v34/status_scanning_end_anim_warn_to_recommend.xml469
-rw-r--r--PermissionController/res/drawable-v34/status_scanning_end_anim_warn_to_warn.xml441
-rw-r--r--PermissionController/res/drawable-v34/status_warn_to_scanning_anim.xml225
-rw-r--r--PermissionController/res/values-night-v33/themes.xml32
-rw-r--r--PermissionController/res/values-night-v34/themes.xml4
-rw-r--r--PermissionController/res/values-v33/colors.xml2
-rw-r--r--PermissionController/res/values-v33/themes.xml8
-rw-r--r--PermissionController/res/values-v34/colors.xml4
-rw-r--r--PermissionController/res/values-v34/themes.xml8
-rw-r--r--PermissionController/res/values/overlayable.xml2
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionFragment.java6
-rw-r--r--PermissionController/src/com/android/permissioncontroller/safetylabel/AppsSafetyLabelHistoryPersistence.kt30
-rw-r--r--PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/safetylabel/AppsSafetyLabelHistoryPersistenceTest.kt94
-rw-r--r--PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/safetylabel/AppsSafetyLabelHistoryTest.kt64
-rw-r--r--PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/safetylabel/TestSafetyLabels.kt88
-rw-r--r--PermissionController/tests/permissionui/src/com/android/permissioncontroller/permissionui/ui/AllAppPermissionsFragmentTest.kt7
-rw-r--r--SafetyCenter/Config/tests/java/com/android/safetycenter/config/ParserConfigOverlayTest.kt3
-rw-r--r--service/java/com/android/safetycenter/SafetyCenterDataFactory.java14
-rw-r--r--service/java/com/android/safetycenter/SafetyCenterService.java1
-rw-r--r--tests/hostside/safetycenter/src/android/safetycenter/hostside/SafetySourceStateCollectedLoggingHostTest.kt6
-rw-r--r--tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestListener.kt3
40 files changed, 6986 insertions, 114 deletions
diff --git a/PermissionController/res/drawable-v34/safety_status_info.xml b/PermissionController/res/drawable-v34/safety_status_info.xml
new file mode 100644
index 000000000..c12c19144
--- /dev/null
+++ b/PermissionController/res/drawable-v34/safety_status_info.xml
@@ -0,0 +1,20 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="56dp"
+ android:height="56dp"
+ android:viewportWidth="56"
+ android:viewportHeight="56">
+ <group>
+ <clip-path
+ android:pathData="M28,0L28,0A28,28 0,0 1,56 28L56,28A28,28 0,0 1,28 56L28,56A28,28 0,0 1,0 28L0,28A28,28 0,0 1,28 0z"/>
+ <path
+ android:pathData="M28,28m-28,0a28,28 0,1 1,56 0a28,28 0,1 1,-56 0"
+ android:fillColor="?attr/colorScStatusBackgroundInfo"/>
+ <path
+ android:pathData="M14.5,25.14C14.525,26.402 14.623,27.66 14.792,28.91C15.592,34.319 18.623,40.446 26.932,44.74C27.262,44.91 27.628,44.999 28,44.999C28.372,44.999 28.738,44.91 29.068,44.74C37.377,40.446 40.408,34.319 41.208,28.91C41.377,27.66 41.475,26.401 41.5,25.14V17.67C41.5,17.099 41.324,16.541 40.997,16.073C40.669,15.605 40.205,15.249 39.669,15.055L28.946,11.166C28.335,10.944 27.665,10.944 27.054,11.166L16.331,15.055C15.795,15.249 15.331,15.605 15.003,16.073C14.676,16.541 14.5,17.099 14.5,17.67V25.14Z"
+ android:fillColor="?attr/colorScStatusInfo"/>
+ <path
+ android:pathData="M36.172,23.255L25.503,33.814L19.829,28.198L22.172,25.831L25.503,29.129L33.829,20.888L36.172,23.255Z"
+ android:fillColor="?attr/colorScShieldAccent"
+ android:fillType="evenOdd"/>
+ </group>
+</vector>
diff --git a/PermissionController/res/drawable-v34/safety_status_info_to_info_anim.xml b/PermissionController/res/drawable-v34/safety_status_info_to_info_anim.xml
new file mode 100644
index 000000000..91d07a50d
--- /dev/null
+++ b/PermissionController/res/drawable-v34/safety_status_info_to_info_anim.xml
@@ -0,0 +1,245 @@
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <aapt:attr name="android:drawable">
+ <vector
+ android:height="224dp"
+ android:width="224dp"
+ android:viewportHeight="224"
+ android:viewportWidth="224">
+ <group android:name="_R_G">
+ <group android:name="_R_G_L_3_G">
+ <path
+ android:name="_R_G_L_3_G_D_0_P_0"
+ android:fillColor="?attr/colorScStatusBackgroundInfo"
+ android:fillAlpha="1"
+ android:fillType="nonZero"
+ android:pathData=" M112 0 C112,0 112,0 112,0 C173.86,0 224,50.14 224,112 C224,112 224,112 224,112 C224,173.86 173.86,224 112,224 C112,224 112,224 112,224 C50.14,224 0,173.86 0,112 C0,112 0,112 0,112 C0,50.14 50.14,0 112,0c " />
+ </group>
+ <group
+ android:name="_R_G_L_2_G"
+ android:pivotX="112"
+ android:pivotY="112"
+ android:scaleX="0"
+ android:scaleY="0">
+ <path
+ android:name="_R_G_L_2_G_D_0_P_0"
+ android:fillColor="?attr/colorScStatusBackgroundInfo"
+ android:fillAlpha="1"
+ android:fillType="nonZero"
+ android:pathData=" M112 0 C112,0 112,0 112,0 C173.86,0 224,50.14 224,112 C224,112 224,112 224,112 C224,173.86 173.86,224 112,224 C112,224 112,224 112,224 C50.14,224 0,173.86 0,112 C0,112 0,112 0,112 C0,50.14 50.14,0 112,0c " />
+ </group>
+ <group
+ android:name="_R_G_L_1_G"
+ android:translateX="84"
+ android:translateY="84"
+ android:pivotX="28"
+ android:pivotY="28"
+ android:scaleX="4"
+ android:scaleY="4">
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillColor="?attr/colorScStatusInfo"
+ android:fillAlpha="1"
+ android:fillType="nonZero"
+ android:pathData=" M14.5 25.14 C14.53,26.4 14.62,27.66 14.79,28.91 C15.59,34.32 18.62,40.45 26.93,44.74 C27.26,44.91 27.63,45 28,45 C28.37,45 28.74,44.91 29.07,44.74 C37.38,40.45 40.41,34.32 41.21,28.91 C41.38,27.66 41.48,26.4 41.5,25.14 C41.5,25.14 41.5,17.67 41.5,17.67 C41.5,17.1 41.33,16.54 41,16.07 C40.67,15.61 40.21,15.25 39.67,15.06 C39.67,15.06 28.95,11.17 28.95,11.17 C28.34,10.94 27.67,10.94 27.05,11.17 C27.05,11.17 16.33,15.06 16.33,15.06 C15.79,15.25 15.33,15.61 15,16.07 C14.68,16.54 14.5,17.1 14.5,17.67 C14.5,17.67 14.5,25.14 14.5,25.14c " />
+ </group>
+ <group
+ android:name="_R_G_L_0_G"
+ android:translateX="84"
+ android:translateY="84"
+ android:pivotX="28"
+ android:pivotY="28"
+ android:scaleX="4"
+ android:scaleY="4">
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:fillColor="?attr/colorScShieldAccent"
+ android:fillAlpha="1"
+ android:fillType="nonZero"
+ android:pathData=" M36.17 23.26 C36.17,23.26 25.5,33.81 25.5,33.81 C25.5,33.81 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 25.5,29.13 25.5,29.13 C25.5,29.13 33.83,20.89 33.83,20.89 C33.83,20.89 36.17,23.26 36.17,23.26c " />
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+ <target android:name="_R_G_L_3_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:propertyName="fillAlpha"
+ android:duration="150"
+ android:startOffset="0"
+ 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_2_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="250"
+ 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.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="250"
+ 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.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="517"
+ android:startOffset="250"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="517"
+ android:startOffset="250"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="150"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="150"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="450"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="450"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,1 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="150"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="150"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="450"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="450"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,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="783"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+</animated-vector> \ No newline at end of file
diff --git a/PermissionController/res/drawable-v34/safety_status_recommend_to_info_anim.xml b/PermissionController/res/drawable-v34/safety_status_recommend_to_info_anim.xml
new file mode 100644
index 000000000..c618ff308
--- /dev/null
+++ b/PermissionController/res/drawable-v34/safety_status_recommend_to_info_anim.xml
@@ -0,0 +1,722 @@
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <target android:name="_R_G_L_5_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="fillAlpha"
+ android:startOffset="0"
+ 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_4_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="250"
+ android:propertyName="scaleX"
+ 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.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="250"
+ android:propertyName="scaleY"
+ 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.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="517"
+ android:propertyName="scaleX"
+ android:startOffset="250"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="517"
+ android:propertyName="scaleY"
+ android:startOffset="250"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_3_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="fillColor"
+ android:startOffset="0"
+ android:valueFrom="?attr/colorScStatusRecommend"
+ android:valueTo="?attr/colorScStatusRecommend"
+ android:valueType="colorType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="fillColor"
+ android:startOffset="150"
+ android:valueFrom="?attr/colorScStatusRecommend"
+ android:valueTo="?attr/colorScStatusInfo"
+ android:valueType="colorType">
+ <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_3_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleX"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleY"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_2_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="fillAlpha"
+ 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:duration="17"
+ android:propertyName="fillAlpha"
+ android:startOffset="150"
+ 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_2_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M22.2 25.82 C22.2,25.82 19.84,28.17 19.84,28.17 C19.84,28.17 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 22.15,25.8 22.15,25.8 C22.15,25.8 22.22,25.82 22.22,25.82 C22.22,25.82 22.2,25.82 22.2,25.82c "
+ android:valueTo="M22.2 25.82 C22.2,25.82 19.84,28.17 19.84,28.17 C19.84,28.17 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 22.15,25.8 22.15,25.8 C22.15,25.8 22.22,25.82 22.22,25.82 C22.22,25.82 22.2,25.82 22.2,25.82c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="50"
+ android:propertyName="pathData"
+ android:startOffset="150"
+ android:valueFrom="M22.2 25.82 C22.2,25.82 19.84,28.17 19.84,28.17 C19.84,28.17 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 22.15,25.8 22.15,25.8 C22.15,25.8 22.22,25.82 22.22,25.82 C22.22,25.82 22.2,25.82 22.2,25.82c "
+ android:valueTo="M27.89 31.53 C27.89,31.53 25.5,33.81 25.5,33.81 C25.5,33.81 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 25.5,29.13 25.5,29.13 C25.5,29.13 25.54,29.17 25.54,29.17 C25.54,29.17 27.89,31.53 27.89,31.53c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="pathData"
+ android:startOffset="200"
+ android:valueFrom="M27.89 31.53 C27.89,31.53 25.5,33.81 25.5,33.81 C25.5,33.81 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 25.5,29.13 25.5,29.13 C25.5,29.13 25.54,29.17 25.54,29.17 C25.54,29.17 27.89,31.53 27.89,31.53c "
+ android:valueTo="M36.17 23.26 C36.17,23.26 25.5,33.81 25.5,33.81 C25.5,33.81 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 25.5,29.13 25.5,29.13 C25.5,29.13 33.83,20.89 33.83,20.89 C33.83,20.89 36.17,23.26 36.17,23.26c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.29,0 0.739,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_2_G_N_4_T_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleX"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleY"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="scaleX"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="scaleY"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_2_G_N_4_T_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="0"
+ android:propertyName="scaleY"
+ android:startOffset="150"
+ android:valueFrom="0"
+ android:valueTo="4"
+ android:valueType="floatType" />
+ </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:duration="150"
+ android:propertyName="fillAlpha"
+ 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:duration="17"
+ android:propertyName="fillAlpha"
+ android:startOffset="150"
+ 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_1_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M25.92 28.4 C25.92,28.4 25.92,18.4 25.92,18.4 C25.92,18.4 30.09,18.4 30.09,18.4 C30.09,18.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueTo="M25.92 28.4 C25.92,28.4 25.89,28.4 25.89,28.4 C25.89,28.4 30.06,28.4 30.06,28.4 C30.06,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.18,0 0.043,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_T_1">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="117"
+ android:pathData="M 0,0C 0,1.298 0,6.49 0,7.788"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="0">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.2,0 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_N_4_T_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleX"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleY"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="scaleX"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="scaleY"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_N_4_T_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="0"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="4"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_N_4_T_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="0"
+ android:propertyName="scaleY"
+ android:startOffset="350"
+ android:valueFrom="4"
+ android:valueTo="0"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="fillAlpha"
+ 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:duration="17"
+ android:propertyName="fillAlpha"
+ android:startOffset="133"
+ 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_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M25.92 36.4 C25.92,36.4 25.92,31.89 25.92,31.89 C25.92,31.89 30.09,31.89 30.09,31.89 C30.09,31.89 30.09,36.4 30.09,36.4 C30.09,36.4 25.92,36.4 25.92,36.4c "
+ android:valueTo="M25.92 36.4 C25.92,36.4 25.94,36.39 25.94,36.39 C25.94,36.39 30.11,36.39 30.11,36.39 C30.11,36.39 30.09,36.4 30.09,36.4 C30.09,36.4 25.92,36.4 25.92,36.4c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.989,0 0.789,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_N_4_T_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleX"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleY"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="scaleX"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="scaleY"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_N_4_T_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="0"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="4"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_N_4_T_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="0"
+ android:propertyName="scaleY"
+ android:startOffset="350"
+ android:valueFrom="4"
+ android:valueTo="0"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="767"
+ android:propertyName="translateX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <aapt:attr name="android:drawable">
+ <vector
+ android:width="224dp"
+ android:height="224dp"
+ android:viewportHeight="224"
+ android:viewportWidth="224">
+ <group android:name="_R_G">
+ <group android:name="_R_G_L_5_G">
+ <path
+ android:name="_R_G_L_5_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusBackgroundRecommend"
+ android:fillType="nonZero"
+ android:pathData=" M112 0 C112,0 112,0 112,0 C173.86,0 224,50.14 224,112 C224,112 224,112 224,112 C224,173.86 173.86,224 112,224 C112,224 112,224 112,224 C50.14,224 0,173.86 0,112 C0,112 0,112 0,112 C0,50.14 50.14,0 112,0c " />
+ </group>
+ <group
+ android:name="_R_G_L_4_G"
+ android:pivotX="112"
+ android:pivotY="112"
+ android:scaleX="0"
+ android:scaleY="0">
+ <path
+ android:name="_R_G_L_4_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusBackgroundInfo"
+ android:fillType="nonZero"
+ android:pathData=" M112 0 C112,0 112,0 112,0 C173.86,0 224,50.14 224,112 C224,112 224,112 224,112 C224,173.86 173.86,224 112,224 C112,224 112,224 112,224 C50.14,224 0,173.86 0,112 C0,112 0,112 0,112 C0,50.14 50.14,0 112,0c " />
+ </group>
+ <group
+ android:name="_R_G_L_3_G"
+ android:pivotX="28"
+ android:pivotY="28"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="84"
+ android:translateY="84">
+ <path
+ android:name="_R_G_L_3_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusRecommend"
+ android:fillType="nonZero"
+ android:pathData=" M14.5 25.14 C14.53,26.4 14.62,27.66 14.79,28.91 C15.59,34.32 18.62,40.45 26.93,44.74 C27.26,44.91 27.63,45 28,45 C28.37,45 28.74,44.91 29.07,44.74 C37.38,40.45 40.41,34.32 41.21,28.91 C41.38,27.66 41.48,26.4 41.5,25.14 C41.5,25.14 41.5,17.67 41.5,17.67 C41.5,17.1 41.33,16.54 41,16.07 C40.67,15.61 40.21,15.25 39.67,15.06 C39.67,15.06 28.95,11.17 28.95,11.17 C28.34,10.94 27.67,10.94 27.05,11.17 C27.05,11.17 16.33,15.06 16.33,15.06 C15.79,15.25 15.33,15.61 15,16.07 C14.68,16.54 14.5,17.1 14.5,17.67 C14.5,17.67 14.5,25.14 14.5,25.14c " />
+ </group>
+ <group
+ android:name="_R_G_L_2_G_N_4_T_0"
+ android:scaleX="4"
+ android:scaleY="0"
+ android:translateX="112"
+ android:translateY="112">
+ <group
+ android:name="_R_G_L_2_G"
+ android:translateX="-28"
+ android:translateY="-28">
+ <path
+ android:name="_R_G_L_2_G_D_0_P_0"
+ android:fillAlpha="0"
+ android:fillColor="?attr/colorScShieldAccent"
+ android:fillType="nonZero"
+ android:pathData=" M22.2 25.82 C22.2,25.82 19.84,28.17 19.84,28.17 C19.84,28.17 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 22.15,25.8 22.15,25.8 C22.15,25.8 22.22,25.82 22.22,25.82 C22.22,25.82 22.2,25.82 22.2,25.82c " />
+ </group>
+ </group>
+ <group
+ android:name="_R_G_L_1_G_N_4_T_0"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="112"
+ android:translateY="112">
+ <group
+ android:name="_R_G_L_1_G_T_1"
+ android:translateX="0"
+ android:translateY="0">
+ <group
+ android:name="_R_G_L_1_G"
+ android:translateX="-28"
+ android:translateY="-28">
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="@color/sc_shield_accent_fixed_variant"
+ android:fillType="nonZero"
+ android:pathData=" M25.92 28.4 C25.92,28.4 25.92,18.4 25.92,18.4 C25.92,18.4 30.09,18.4 30.09,18.4 C30.09,18.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c " />
+ </group>
+ </group>
+ </group>
+ <group
+ android:name="_R_G_L_0_G_N_4_T_0"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="112"
+ android:translateY="112">
+ <group
+ android:name="_R_G_L_0_G"
+ android:translateX="-28"
+ android:translateY="-28">
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="@color/sc_shield_accent_fixed_variant"
+ android:fillType="nonZero"
+ android:pathData=" M25.92 36.4 C25.92,36.4 25.92,31.89 25.92,31.89 C25.92,31.89 30.09,31.89 30.09,31.89 C30.09,31.89 30.09,36.4 30.09,36.4 C30.09,36.4 25.92,36.4 25.92,36.4c " />
+ </group>
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+</animated-vector> \ No newline at end of file
diff --git a/PermissionController/res/drawable-v34/safety_status_recommendation.xml b/PermissionController/res/drawable-v34/safety_status_recommendation.xml
new file mode 100644
index 000000000..4dcab9f9d
--- /dev/null
+++ b/PermissionController/res/drawable-v34/safety_status_recommendation.xml
@@ -0,0 +1,24 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="56dp"
+ android:height="56dp"
+ android:viewportWidth="56"
+ android:viewportHeight="56">
+ <group>
+ <clip-path
+ android:pathData="M28,0L28,0A28,28 0,0 1,56 28L56,28A28,28 0,0 1,28 56L28,56A28,28 0,0 1,0 28L0,28A28,28 0,0 1,28 0z"/>
+ <path
+ android:pathData="M28,28m-28,0a28,28 0,1 1,56 0a28,28 0,1 1,-56 0"
+ android:fillColor="?attr/colorScStatusBackgroundRecommend"/>
+ <path
+ android:pathData="M14.5,25.14C14.525,26.402 14.623,27.66 14.792,28.91C15.592,34.319 18.623,40.446 26.932,44.74C27.262,44.91 27.628,44.999 28,44.999C28.372,44.999 28.738,44.91 29.068,44.74C37.377,40.446 40.408,34.319 41.208,28.91C41.377,27.66 41.475,26.401 41.5,25.14V17.67C41.5,17.099 41.324,16.541 40.997,16.073C40.669,15.605 40.205,15.249 39.669,15.055L28.946,11.166C28.335,10.944 27.665,10.944 27.054,11.166L16.331,15.055C15.795,15.249 15.331,15.605 15.003,16.073C14.676,16.541 14.5,17.099 14.5,17.67V25.14Z"
+ android:fillColor="?attr/colorScStatusRecommend"/>
+ <path
+ android:pathData="M25.916,28.397V18.4H30.086V28.397H25.916Z"
+ android:fillColor="@color/sc_shield_accent_fixed_variant"
+ android:fillType="evenOdd"/>
+ <path
+ android:pathData="M25.916,36.4V31.894H30.086V36.4H25.916Z"
+ android:fillColor="@color/sc_shield_accent_fixed_variant"
+ android:fillType="evenOdd"/>
+ </group>
+</vector>
diff --git a/PermissionController/res/drawable-v34/safety_status_warn.xml b/PermissionController/res/drawable-v34/safety_status_warn.xml
new file mode 100644
index 000000000..6b3304992
--- /dev/null
+++ b/PermissionController/res/drawable-v34/safety_status_warn.xml
@@ -0,0 +1,24 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="56dp"
+ android:height="56dp"
+ android:viewportWidth="56"
+ android:viewportHeight="56">
+ <group>
+ <clip-path
+ android:pathData="M28,0L28,0A28,28 0,0 1,56 28L56,28A28,28 0,0 1,28 56L28,56A28,28 0,0 1,0 28L0,28A28,28 0,0 1,28 0z"/>
+ <path
+ android:pathData="M28,28m-28,0a28,28 0,1 1,56 0a28,28 0,1 1,-56 0"
+ android:fillColor="?attr/colorScStatusBackgroundWarn"/>
+ <path
+ android:pathData="M14.5,25.14C14.525,26.402 14.623,27.66 14.792,28.91C15.592,34.319 18.623,40.446 26.932,44.74C27.262,44.91 27.628,44.999 28,44.999C28.372,44.999 28.738,44.91 29.068,44.74C37.377,40.446 40.408,34.319 41.208,28.91C41.377,27.66 41.475,26.401 41.5,25.14V17.67C41.5,17.099 41.324,16.541 40.997,16.073C40.669,15.605 40.205,15.249 39.669,15.055L28.946,11.166C28.335,10.944 27.665,10.944 27.054,11.166L16.331,15.055C15.795,15.249 15.331,15.605 15.003,16.073C14.676,16.541 14.5,17.099 14.5,17.67V25.14Z"
+ android:fillColor="?attr/colorScStatusWarn"/>
+ <path
+ android:pathData="M25.916,28.397V18.4H30.086V28.397H25.916Z"
+ android:fillColor="?attr/colorScShieldAccent"
+ android:fillType="evenOdd"/>
+ <path
+ android:pathData="M25.916,36.4V31.894H30.086V36.4H25.916Z"
+ android:fillColor="?attr/colorScShieldAccent"
+ android:fillType="evenOdd"/>
+ </group>
+</vector>
diff --git a/PermissionController/res/drawable-v34/safety_status_warn_to_info_anim.xml b/PermissionController/res/drawable-v34/safety_status_warn_to_info_anim.xml
new file mode 100644
index 000000000..eba9107fe
--- /dev/null
+++ b/PermissionController/res/drawable-v34/safety_status_warn_to_info_anim.xml
@@ -0,0 +1,722 @@
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <target android:name="_R_G_L_5_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="fillAlpha"
+ android:startOffset="0"
+ 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_4_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="250"
+ android:propertyName="scaleX"
+ 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.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="250"
+ android:propertyName="scaleY"
+ 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.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="517"
+ android:propertyName="scaleX"
+ android:startOffset="250"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="517"
+ android:propertyName="scaleY"
+ android:startOffset="250"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_3_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="fillColor"
+ android:startOffset="0"
+ android:valueFrom="?attr/colorScStatusWarn"
+ android:valueTo="?attr/colorScStatusWarn"
+ android:valueType="colorType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="fillColor"
+ android:startOffset="150"
+ android:valueFrom="?attr/colorScStatusWarn"
+ android:valueTo="?attr/colorScStatusInfo"
+ android:valueType="colorType">
+ <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_3_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleX"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleY"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_2_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="fillAlpha"
+ 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:duration="17"
+ android:propertyName="fillAlpha"
+ android:startOffset="150"
+ 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_2_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M22.2 25.82 C22.2,25.82 19.84,28.17 19.84,28.17 C19.84,28.17 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 22.15,25.8 22.15,25.8 C22.15,25.8 22.22,25.82 22.22,25.82 C22.22,25.82 22.2,25.82 22.2,25.82c "
+ android:valueTo="M22.2 25.82 C22.2,25.82 19.84,28.17 19.84,28.17 C19.84,28.17 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 22.15,25.8 22.15,25.8 C22.15,25.8 22.22,25.82 22.22,25.82 C22.22,25.82 22.2,25.82 22.2,25.82c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="50"
+ android:propertyName="pathData"
+ android:startOffset="150"
+ android:valueFrom="M22.2 25.82 C22.2,25.82 19.84,28.17 19.84,28.17 C19.84,28.17 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 22.15,25.8 22.15,25.8 C22.15,25.8 22.22,25.82 22.22,25.82 C22.22,25.82 22.2,25.82 22.2,25.82c "
+ android:valueTo="M27.89 31.53 C27.89,31.53 25.5,33.81 25.5,33.81 C25.5,33.81 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 25.5,29.13 25.5,29.13 C25.5,29.13 25.54,29.17 25.54,29.17 C25.54,29.17 27.89,31.53 27.89,31.53c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="pathData"
+ android:startOffset="200"
+ android:valueFrom="M27.89 31.53 C27.89,31.53 25.5,33.81 25.5,33.81 C25.5,33.81 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 25.5,29.13 25.5,29.13 C25.5,29.13 25.54,29.17 25.54,29.17 C25.54,29.17 27.89,31.53 27.89,31.53c "
+ android:valueTo="M36.17 23.26 C36.17,23.26 25.5,33.81 25.5,33.81 C25.5,33.81 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 25.5,29.13 25.5,29.13 C25.5,29.13 33.83,20.89 33.83,20.89 C33.83,20.89 36.17,23.26 36.17,23.26c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.29,0 0.739,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_2_G_N_4_T_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleX"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleY"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="scaleX"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="scaleY"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_2_G_N_4_T_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="0"
+ android:propertyName="scaleY"
+ android:startOffset="150"
+ android:valueFrom="0"
+ android:valueTo="4"
+ android:valueType="floatType" />
+ </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:duration="150"
+ android:propertyName="fillAlpha"
+ 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:duration="17"
+ android:propertyName="fillAlpha"
+ android:startOffset="150"
+ 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_1_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M25.92 28.4 C25.92,28.4 25.92,18.4 25.92,18.4 C25.92,18.4 30.09,18.4 30.09,18.4 C30.09,18.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueTo="M25.92 28.4 C25.92,28.4 25.89,28.4 25.89,28.4 C25.89,28.4 30.06,28.4 30.06,28.4 C30.06,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.18,0 0.043,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_T_1">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="117"
+ android:pathData="M 0,0C 0,1.298 0,6.49 0,7.788"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="0">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.2,0 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_N_4_T_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleX"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleY"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="scaleX"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="scaleY"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_N_4_T_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="0"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="4"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_N_4_T_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="0"
+ android:propertyName="scaleY"
+ android:startOffset="183"
+ android:valueFrom="4"
+ android:valueTo="0"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="fillAlpha"
+ 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:duration="17"
+ android:propertyName="fillAlpha"
+ android:startOffset="133"
+ 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_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M25.92 36.4 C25.92,36.4 25.92,31.89 25.92,31.89 C25.92,31.89 30.09,31.89 30.09,31.89 C30.09,31.89 30.09,36.4 30.09,36.4 C30.09,36.4 25.92,36.4 25.92,36.4c "
+ android:valueTo="M25.92 36.4 C25.92,36.4 25.94,36.39 25.94,36.39 C25.94,36.39 30.11,36.39 30.11,36.39 C30.11,36.39 30.09,36.4 30.09,36.4 C30.09,36.4 25.92,36.4 25.92,36.4c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.989,0 0.789,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_N_4_T_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleX"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleY"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="scaleX"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="scaleY"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_N_4_T_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="0"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="4"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_N_4_T_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="0"
+ android:propertyName="scaleY"
+ android:startOffset="183"
+ android:valueFrom="4"
+ android:valueTo="0"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="783"
+ android:propertyName="translateX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <aapt:attr name="android:drawable">
+ <vector
+ android:width="224dp"
+ android:height="224dp"
+ android:viewportHeight="224"
+ android:viewportWidth="224">
+ <group android:name="_R_G">
+ <group android:name="_R_G_L_5_G">
+ <path
+ android:name="_R_G_L_5_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusBackgroundWarn"
+ android:fillType="nonZero"
+ android:pathData=" M112 0 C112,0 112,0 112,0 C173.86,0 224,50.14 224,112 C224,112 224,112 224,112 C224,173.86 173.86,224 112,224 C112,224 112,224 112,224 C50.14,224 0,173.86 0,112 C0,112 0,112 0,112 C0,50.14 50.14,0 112,0c " />
+ </group>
+ <group
+ android:name="_R_G_L_4_G"
+ android:pivotX="112"
+ android:pivotY="112"
+ android:scaleX="0"
+ android:scaleY="0">
+ <path
+ android:name="_R_G_L_4_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusBackgroundInfo"
+ android:fillType="nonZero"
+ android:pathData=" M112 0 C112,0 112,0 112,0 C173.86,0 224,50.14 224,112 C224,112 224,112 224,112 C224,173.86 173.86,224 112,224 C112,224 112,224 112,224 C50.14,224 0,173.86 0,112 C0,112 0,112 0,112 C0,50.14 50.14,0 112,0c " />
+ </group>
+ <group
+ android:name="_R_G_L_3_G"
+ android:pivotX="28"
+ android:pivotY="28"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="84"
+ android:translateY="84">
+ <path
+ android:name="_R_G_L_3_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusWarn"
+ android:fillType="nonZero"
+ android:pathData=" M14.5 25.14 C14.53,26.4 14.62,27.66 14.79,28.91 C15.59,34.32 18.62,40.45 26.93,44.74 C27.26,44.91 27.63,45 28,45 C28.37,45 28.74,44.91 29.07,44.74 C37.38,40.45 40.41,34.32 41.21,28.91 C41.38,27.66 41.48,26.4 41.5,25.14 C41.5,25.14 41.5,17.67 41.5,17.67 C41.5,17.1 41.33,16.54 41,16.07 C40.67,15.61 40.21,15.25 39.67,15.06 C39.67,15.06 28.95,11.17 28.95,11.17 C28.34,10.94 27.67,10.94 27.05,11.17 C27.05,11.17 16.33,15.06 16.33,15.06 C15.79,15.25 15.33,15.61 15,16.07 C14.68,16.54 14.5,17.1 14.5,17.67 C14.5,17.67 14.5,25.14 14.5,25.14c " />
+ </group>
+ <group
+ android:name="_R_G_L_2_G_N_4_T_0"
+ android:scaleX="4"
+ android:scaleY="0"
+ android:translateX="112"
+ android:translateY="112">
+ <group
+ android:name="_R_G_L_2_G"
+ android:translateX="-28"
+ android:translateY="-28">
+ <path
+ android:name="_R_G_L_2_G_D_0_P_0"
+ android:fillAlpha="0"
+ android:fillColor="?attr/colorScShieldAccent"
+ android:fillType="nonZero"
+ android:pathData=" M22.2 25.82 C22.2,25.82 19.84,28.17 19.84,28.17 C19.84,28.17 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 22.15,25.8 22.15,25.8 C22.15,25.8 22.22,25.82 22.22,25.82 C22.22,25.82 22.2,25.82 22.2,25.82c " />
+ </group>
+ </group>
+ <group
+ android:name="_R_G_L_1_G_N_4_T_0"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="112"
+ android:translateY="112">
+ <group
+ android:name="_R_G_L_1_G_T_1"
+ android:translateX="0"
+ android:translateY="0">
+ <group
+ android:name="_R_G_L_1_G"
+ android:translateX="-28"
+ android:translateY="-28">
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScShieldAccent"
+ android:fillType="nonZero"
+ android:pathData=" M25.92 28.4 C25.92,28.4 25.92,18.4 25.92,18.4 C25.92,18.4 30.09,18.4 30.09,18.4 C30.09,18.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c " />
+ </group>
+ </group>
+ </group>
+ <group
+ android:name="_R_G_L_0_G_N_4_T_0"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="112"
+ android:translateY="112">
+ <group
+ android:name="_R_G_L_0_G"
+ android:translateX="-28"
+ android:translateY="-28">
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScShieldAccent"
+ android:fillType="nonZero"
+ android:pathData=" M25.92 36.4 C25.92,36.4 25.92,31.89 25.92,31.89 C25.92,31.89 30.09,31.89 30.09,31.89 C30.09,31.89 30.09,36.4 30.09,36.4 C30.09,36.4 25.92,36.4 25.92,36.4c " />
+ </group>
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+</animated-vector> \ No newline at end of file
diff --git a/PermissionController/res/drawable-v34/safety_status_warn_to_recommend_anim.xml b/PermissionController/res/drawable-v34/safety_status_warn_to_recommend_anim.xml
new file mode 100644
index 000000000..8b97e4871
--- /dev/null
+++ b/PermissionController/res/drawable-v34/safety_status_warn_to_recommend_anim.xml
@@ -0,0 +1,346 @@
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <aapt:attr name="android:drawable">
+ <vector
+ android:height="224dp"
+ android:width="224dp"
+ android:viewportHeight="224"
+ android:viewportWidth="224">
+ <group android:name="_R_G">
+ <group android:name="_R_G_L_3_G">
+ <path
+ android:name="_R_G_L_3_G_D_0_P_0"
+ android:fillColor="?attr/colorScStatusBackgroundWarn"
+ android:fillAlpha="1"
+ android:fillType="nonZero"
+ android:pathData=" M112 0 C112,0 112,0 112,0 C173.86,0 224,50.14 224,112 C224,112 224,112 224,112 C224,173.86 173.86,224 112,224 C112,224 112,224 112,224 C50.14,224 0,173.86 0,112 C0,112 0,112 0,112 C0,50.14 50.14,0 112,0c " />
+ </group>
+ <group
+ android:name="_R_G_L_2_G"
+ android:pivotX="112"
+ android:pivotY="112"
+ android:scaleX="0"
+ android:scaleY="0">
+ <path
+ android:name="_R_G_L_2_G_D_0_P_0"
+ android:fillColor="?attr/colorScStatusBackgroundRecommend"
+ android:fillAlpha="1"
+ android:fillType="nonZero"
+ android:pathData=" M112 0 C112,0 112,0 112,0 C173.86,0 224,50.14 224,112 C224,112 224,112 224,112 C224,173.86 173.86,224 112,224 C112,224 112,224 112,224 C50.14,224 0,173.86 0,112 C0,112 0,112 0,112 C0,50.14 50.14,0 112,0c " />
+ </group>
+ <group
+ android:name="_R_G_L_1_G"
+ android:translateX="84"
+ android:translateY="84"
+ android:pivotX="28"
+ android:pivotY="28"
+ android:scaleX="4"
+ android:scaleY="4">
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillColor="?attr/colorScStatusWarn"
+ android:fillAlpha="1"
+ android:fillType="nonZero"
+ android:pathData=" M14.5 25.14 C14.53,26.4 14.62,27.66 14.79,28.91 C15.59,34.32 18.62,40.45 26.93,44.74 C27.26,44.91 27.63,45 28,45 C28.37,45 28.74,44.91 29.07,44.74 C37.38,40.45 40.41,34.32 41.21,28.91 C41.38,27.66 41.48,26.4 41.5,25.14 C41.5,25.14 41.5,17.67 41.5,17.67 C41.5,17.1 41.33,16.54 41,16.07 C40.67,15.61 40.21,15.25 39.67,15.06 C39.67,15.06 28.95,11.17 28.95,11.17 C28.34,10.94 27.67,10.94 27.05,11.17 C27.05,11.17 16.33,15.06 16.33,15.06 C15.79,15.25 15.33,15.61 15,16.07 C14.68,16.54 14.5,17.1 14.5,17.67 C14.5,17.67 14.5,25.14 14.5,25.14c " />
+ </group>
+ <group
+ android:name="_R_G_L_0_G"
+ android:translateX="84"
+ android:translateY="84"
+ android:pivotX="28"
+ android:pivotY="28"
+ android:scaleX="4"
+ android:scaleY="4">
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:fillColor="?attr/colorScShieldAccent"
+ android:fillAlpha="1"
+ android:fillType="nonZero"
+ android:pathData=" M25.92 28.4 C25.92,28.4 25.92,18.4 25.92,18.4 C25.92,18.4 30.09,18.4 30.09,18.4 C30.09,18.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c " />
+ <path
+ android:name="_R_G_L_0_G_D_1_P_0"
+ android:fillColor="?attr/colorScShieldAccent"
+ android:fillAlpha="1"
+ android:fillType="nonZero"
+ android:pathData=" M25.92 36.4 C25.92,36.4 25.92,31.89 25.92,31.89 C25.92,31.89 30.09,31.89 30.09,31.89 C30.09,31.89 30.09,36.4 30.09,36.4 C30.09,36.4 25.92,36.4 25.92,36.4c " />
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+ <target android:name="_R_G_L_3_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:propertyName="fillAlpha"
+ android:duration="150"
+ android:startOffset="0"
+ 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_2_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="250"
+ 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.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="250"
+ 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.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="517"
+ android:startOffset="250"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="517"
+ android:startOffset="250"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.049,0.562 0,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="fillColor"
+ android:duration="183"
+ android:startOffset="0"
+ android:valueFrom="?attr/colorScStatusWarn"
+ android:valueTo="?attr/colorScStatusWarn"
+ android:valueType="colorType">
+ <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="fillColor"
+ android:duration="333"
+ android:startOffset="183"
+ android:valueFrom="?attr/colorScStatusWarn"
+ android:valueTo="?attr/colorScStatusRecommend"
+ android:valueType="colorType">
+ <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="fillColor"
+ android:duration="250"
+ android:startOffset="517"
+ android:valueFrom="?attr/colorScStatusRecommend"
+ android:valueTo="?attr/colorScStatusRecommend"
+ android:valueType="colorType">
+ <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">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="150"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="150"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="450"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="450"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,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="fillColor"
+ android:duration="183"
+ android:startOffset="0"
+ android:valueFrom="?attr/colorScShieldAccent"
+ android:valueTo="?attr/colorScShieldAccent"
+ android:valueType="colorType">
+ <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="fillColor"
+ android:duration="333"
+ android:startOffset="183"
+ android:valueFrom="?attr/colorScShieldAccent"
+ android:valueTo="@color/sc_shield_accent_fixed_variant"
+ android:valueType="colorType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_D_1_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:propertyName="fillColor"
+ android:duration="183"
+ android:startOffset="0"
+ android:valueFrom="?attr/colorScShieldAccent"
+ android:valueTo="?attr/colorScShieldAccent"
+ android:valueType="colorType">
+ <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="fillColor"
+ android:duration="333"
+ android:startOffset="183"
+ android:valueFrom="?attr/colorScShieldAccent"
+ android:valueTo="@color/sc_shield_accent_fixed_variant"
+ android:valueType="colorType">
+ <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="150"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="150"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="450"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="450"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,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="783"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+</animated-vector> \ No newline at end of file
diff --git a/PermissionController/res/drawable-v34/status_info_to_scanning_anim.xml b/PermissionController/res/drawable-v34/status_info_to_scanning_anim.xml
new file mode 100644
index 000000000..7a1737b62
--- /dev/null
+++ b/PermissionController/res/drawable-v34/status_info_to_scanning_anim.xml
@@ -0,0 +1,149 @@
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <target android:name="_R_G_L_2_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="333"
+ android:propertyName="fillAlpha"
+ android:startOffset="0"
+ 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>
+ <objectAnimator
+ android:duration="17"
+ android:propertyName="fillAlpha"
+ android:startOffset="333"
+ 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>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="317"
+ android:propertyName="fillAlpha"
+ 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:duration="17"
+ android:propertyName="fillAlpha"
+ android:startOffset="317"
+ 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_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="50"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M36.17 23.26 C36.17,23.26 25.5,33.81 25.5,33.81 C25.5,33.81 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 25.5,29.13 25.5,29.13 C25.5,29.13 33.83,20.89 33.83,20.89 C33.83,20.89 36.17,23.26 36.17,23.26c "
+ android:valueTo="M36.17 23.26 C36.17,23.26 25.5,33.81 25.5,33.81 C25.5,33.81 23.14,31.52 23.14,31.52 C23.14,31.52 25.48,29.15 25.48,29.15 C25.48,29.15 25.5,29.13 25.5,29.13 C25.5,29.13 33.83,20.89 33.83,20.89 C33.83,20.89 36.17,23.26 36.17,23.26c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.928,0.337 0.985,0.984 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="283"
+ android:propertyName="pathData"
+ android:startOffset="50"
+ android:valueFrom="M36.17 23.26 C36.17,23.26 25.5,33.81 25.5,33.81 C25.5,33.81 23.14,31.52 23.14,31.52 C23.14,31.52 25.48,29.15 25.48,29.15 C25.48,29.15 25.5,29.13 25.5,29.13 C25.5,29.13 33.83,20.89 33.83,20.89 C33.83,20.89 36.17,23.26 36.17,23.26c "
+ android:valueTo="M36.17 23.26 C36.17,23.26 36.1,23.19 36.1,23.19 C36.1,23.19 33.74,20.89 33.74,20.89 C33.74,20.89 33.83,20.82 33.83,20.82 C33.83,20.82 33.82,20.84 33.82,20.84 C33.82,20.84 33.83,20.89 33.83,20.89 C33.83,20.89 36.17,23.26 36.17,23.26c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.007,0.007 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="350"
+ android:propertyName="translateX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <aapt:attr name="android:drawable">
+ <vector
+ android:width="224dp"
+ android:height="224dp"
+ android:viewportHeight="224"
+ android:viewportWidth="224">
+ <group android:name="_R_G">
+ <group android:name="_R_G_L_2_G">
+ <path
+ android:name="_R_G_L_2_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusBackgroundInfo"
+ android:fillType="nonZero"
+ android:pathData=" M112 0 C112,0 112,0 112,0 C173.86,0 224,50.14 224,112 C224,112 224,112 224,112 C224,173.86 173.86,224 112,224 C112,224 112,224 112,224 C50.14,224 0,173.86 0,112 C0,112 0,112 0,112 C0,50.14 50.14,0 112,0c " />
+ </group>
+ <group
+ android:name="_R_G_L_1_G"
+ android:pivotX="28"
+ android:pivotY="28"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="84"
+ android:translateY="84">
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusInfo"
+ android:fillType="nonZero"
+ android:pathData=" M14.5 25.14 C14.53,26.4 14.62,27.66 14.79,28.91 C15.59,34.32 18.62,40.45 26.93,44.74 C27.26,44.91 27.63,45 28,45 C28.37,45 28.74,44.91 29.07,44.74 C37.38,40.45 40.41,34.32 41.21,28.91 C41.38,27.66 41.48,26.4 41.5,25.14 C41.5,25.14 41.5,17.67 41.5,17.67 C41.5,17.1 41.33,16.54 41,16.07 C40.67,15.61 40.21,15.25 39.67,15.06 C39.67,15.06 28.95,11.17 28.95,11.17 C28.34,10.94 27.67,10.94 27.05,11.17 C27.05,11.17 16.33,15.06 16.33,15.06 C15.79,15.25 15.33,15.61 15,16.07 C14.68,16.54 14.5,17.1 14.5,17.67 C14.5,17.67 14.5,25.14 14.5,25.14c " />
+ </group>
+ <group
+ android:name="_R_G_L_0_G"
+ android:pivotX="28"
+ android:pivotY="28"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="84"
+ android:translateY="84">
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScShieldAccent"
+ android:fillType="nonZero"
+ android:pathData=" M36.17 23.26 C36.17,23.26 25.5,33.81 25.5,33.81 C25.5,33.81 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 25.5,29.13 25.5,29.13 C25.5,29.13 33.83,20.89 33.83,20.89 C33.83,20.89 36.17,23.26 36.17,23.26c " />
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+</animated-vector> \ No newline at end of file
diff --git a/PermissionController/res/drawable-v34/status_recommend_to_scanning_anim.xml b/PermissionController/res/drawable-v34/status_recommend_to_scanning_anim.xml
new file mode 100644
index 000000000..1b71689a9
--- /dev/null
+++ b/PermissionController/res/drawable-v34/status_recommend_to_scanning_anim.xml
@@ -0,0 +1,225 @@
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <target android:name="_R_G_L_3_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="333"
+ android:propertyName="fillAlpha"
+ android:startOffset="0"
+ 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>
+ <objectAnimator
+ android:duration="17"
+ android:propertyName="fillAlpha"
+ android:startOffset="333"
+ 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>
+ </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:duration="150"
+ android:propertyName="fillAlpha"
+ 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:duration="17"
+ android:propertyName="fillAlpha"
+ android:startOffset="150"
+ 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_1_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M25.92 28.4 C25.92,28.4 25.92,18.4 25.92,18.4 C25.92,18.4 30.09,18.4 30.09,18.4 C30.09,18.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueTo="M25.92 28.4 C25.92,28.4 25.89,28.4 25.89,28.4 C25.89,28.4 30.06,28.4 30.06,28.4 C30.06,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.18,0 0.043,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_T_1">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="117"
+ android:pathData="M 112,112C 112,117.19200000000001 112,137.958 112,143.15"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="0">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.2,0 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="fillAlpha"
+ 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:duration="17"
+ android:propertyName="fillAlpha"
+ android:startOffset="133"
+ 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_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M25.92 36.4 C25.92,36.4 25.92,31.89 25.92,31.89 C25.92,31.89 30.09,31.89 30.09,31.89 C30.09,31.89 30.09,36.4 30.09,36.4 C30.09,36.4 25.92,36.4 25.92,36.4c "
+ android:valueTo="M25.92 36.4 C25.92,36.4 25.94,36.39 25.94,36.39 C25.94,36.39 30.11,36.39 30.11,36.39 C30.11,36.39 30.09,36.4 30.09,36.4 C30.09,36.4 25.92,36.4 25.92,36.4c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.989,0 0.789,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="350"
+ android:propertyName="translateX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <aapt:attr name="android:drawable">
+ <vector
+ android:width="224dp"
+ android:height="224dp"
+ android:viewportHeight="224"
+ android:viewportWidth="224">
+ <group android:name="_R_G">
+ <group
+ android:name="_R_G_L_3_G"
+ android:pivotX="28"
+ android:pivotY="28"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="84"
+ android:translateY="84">
+ <path
+ android:name="_R_G_L_3_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusBackgroundRecommend"
+ android:fillType="nonZero"
+ android:pathData=" M28 0 C28,0 28,0 28,0 C43.46,0 56,12.54 56,28 C56,28 56,28 56,28 C56,43.46 43.46,56 28,56 C28,56 28,56 28,56 C12.54,56 0,43.46 0,28 C0,28 0,28 0,28 C0,12.54 12.54,0 28,0c " />
+ </group>
+ <group
+ android:name="_R_G_L_2_G"
+ android:pivotX="28"
+ android:pivotY="28"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="84"
+ android:translateY="84">
+ <path
+ android:name="_R_G_L_2_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusRecommend"
+ android:fillType="nonZero"
+ android:pathData=" M14.5 25.14 C14.53,26.4 14.62,27.66 14.79,28.91 C15.59,34.32 18.62,40.45 26.93,44.74 C27.26,44.91 27.63,45 28,45 C28.37,45 28.74,44.91 29.07,44.74 C37.38,40.45 40.41,34.32 41.21,28.91 C41.38,27.66 41.48,26.4 41.5,25.14 C41.5,25.14 41.5,17.67 41.5,17.67 C41.5,17.1 41.33,16.54 41,16.07 C40.67,15.61 40.21,15.25 39.67,15.06 C39.67,15.06 28.95,11.17 28.95,11.17 C28.34,10.94 27.67,10.94 27.05,11.17 C27.05,11.17 16.33,15.06 16.33,15.06 C15.79,15.25 15.33,15.61 15,16.07 C14.68,16.54 14.5,17.1 14.5,17.67 C14.5,17.67 14.5,25.14 14.5,25.14c " />
+ </group>
+ <group
+ android:name="_R_G_L_1_G_T_1"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="112"
+ android:translateY="112">
+ <group
+ android:name="_R_G_L_1_G"
+ android:translateX="-28"
+ android:translateY="-28">
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="@color/sc_shield_accent_fixed_variant"
+ android:fillType="nonZero"
+ android:pathData=" M25.92 28.4 C25.92,28.4 25.92,18.4 25.92,18.4 C25.92,18.4 30.09,18.4 30.09,18.4 C30.09,18.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c " />
+ </group>
+ </group>
+ <group
+ android:name="_R_G_L_0_G"
+ android:pivotX="28"
+ android:pivotY="28"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="84"
+ android:translateY="84">
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="@color/sc_shield_accent_fixed_variant"
+ android:fillType="nonZero"
+ android:pathData=" M25.92 36.4 C25.92,36.4 25.92,31.89 25.92,31.89 C25.92,31.89 30.09,31.89 30.09,31.89 C30.09,31.89 30.09,36.4 30.09,36.4 C30.09,36.4 25.92,36.4 25.92,36.4c " />
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+</animated-vector> \ No newline at end of file
diff --git a/PermissionController/res/drawable-v34/status_scanning_anim_info.xml b/PermissionController/res/drawable-v34/status_scanning_anim_info.xml
new file mode 100644
index 000000000..e0e952755
--- /dev/null
+++ b/PermissionController/res/drawable-v34/status_scanning_anim_info.xml
@@ -0,0 +1,111 @@
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <target android:name="_R_G_L_1_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="583"
+ android:propertyName="fillAlpha"
+ 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 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="417"
+ android:propertyName="fillAlpha"
+ android:startOffset="583"
+ 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 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="1000"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="0.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,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="1000"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="0.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,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="1000"
+ android:propertyName="translateX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <aapt:attr name="android:drawable">
+ <vector
+ android:width="224dp"
+ android:height="224dp"
+ android:viewportHeight="224"
+ android:viewportWidth="224">
+ <group android:name="_R_G">
+ <group
+ android:name="_R_G_L_1_G"
+ android:pivotX="112"
+ android:pivotY="112"
+ android:scaleX="0.1"
+ android:scaleY="0.1">
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusBackgroundInfo"
+ android:fillType="nonZero"
+ android:pathData=" M112 0 C112,0 112,0 112,0 C173.86,0 224,50.14 224,112 C224,112 224,112 224,112 C224,173.86 173.86,224 112,224 C112,224 112,224 112,224 C50.14,224 0,173.86 0,112 C0,112 0,112 0,112 C0,50.14 50.14,0 112,0c " />
+ </group>
+ <group
+ android:name="_R_G_L_0_G"
+ android:pivotX="28"
+ android:pivotY="28"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="84"
+ android:translateY="84">
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusInfo"
+ android:fillType="nonZero"
+ android:pathData=" M14.5 25.14 C14.53,26.4 14.62,27.66 14.79,28.91 C15.59,34.32 18.62,40.45 26.93,44.74 C27.26,44.91 27.63,45 28,45 C28.37,45 28.74,44.91 29.07,44.74 C37.38,40.45 40.41,34.32 41.21,28.91 C41.38,27.66 41.48,26.4 41.5,25.14 C41.5,25.14 41.5,17.67 41.5,17.67 C41.5,17.1 41.33,16.54 41,16.07 C40.67,15.61 40.21,15.25 39.67,15.06 C39.67,15.06 28.95,11.17 28.95,11.17 C28.34,10.94 27.67,10.94 27.05,11.17 C27.05,11.17 16.33,15.06 16.33,15.06 C15.79,15.25 15.33,15.61 15,16.07 C14.68,16.54 14.5,17.1 14.5,17.67 C14.5,17.67 14.5,25.14 14.5,25.14c " />
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+</animated-vector> \ No newline at end of file
diff --git a/PermissionController/res/drawable-v34/status_scanning_anim_recommend.xml b/PermissionController/res/drawable-v34/status_scanning_anim_recommend.xml
new file mode 100644
index 000000000..50ec7edf2
--- /dev/null
+++ b/PermissionController/res/drawable-v34/status_scanning_anim_recommend.xml
@@ -0,0 +1,111 @@
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <target android:name="_R_G_L_1_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="583"
+ android:propertyName="fillAlpha"
+ 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 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="417"
+ android:propertyName="fillAlpha"
+ android:startOffset="583"
+ 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 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="1000"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="0.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,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="1000"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="0.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,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="1000"
+ android:propertyName="translateX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <aapt:attr name="android:drawable">
+ <vector
+ android:width="224dp"
+ android:height="224dp"
+ android:viewportHeight="224"
+ android:viewportWidth="224">
+ <group android:name="_R_G">
+ <group
+ android:name="_R_G_L_1_G"
+ android:pivotX="112"
+ android:pivotY="112"
+ android:scaleX="0.1"
+ android:scaleY="0.1">
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusBackgroundRecommend"
+ android:fillType="nonZero"
+ android:pathData=" M112 0 C112,0 112,0 112,0 C173.86,0 224,50.14 224,112 C224,112 224,112 224,112 C224,173.86 173.86,224 112,224 C112,224 112,224 112,224 C50.14,224 0,173.86 0,112 C0,112 0,112 0,112 C0,50.14 50.14,0 112,0c " />
+ </group>
+ <group
+ android:name="_R_G_L_0_G"
+ android:pivotX="28"
+ android:pivotY="28"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="84"
+ android:translateY="84">
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusRecommend"
+ android:fillType="nonZero"
+ android:pathData=" M14.5 25.14 C14.53,26.4 14.62,27.66 14.79,28.91 C15.59,34.32 18.62,40.45 26.93,44.74 C27.26,44.91 27.63,45 28,45 C28.37,45 28.74,44.91 29.07,44.74 C37.38,40.45 40.41,34.32 41.21,28.91 C41.38,27.66 41.48,26.4 41.5,25.14 C41.5,25.14 41.5,17.67 41.5,17.67 C41.5,17.1 41.33,16.54 41,16.07 C40.67,15.61 40.21,15.25 39.67,15.06 C39.67,15.06 28.95,11.17 28.95,11.17 C28.34,10.94 27.67,10.94 27.05,11.17 C27.05,11.17 16.33,15.06 16.33,15.06 C15.79,15.25 15.33,15.61 15,16.07 C14.68,16.54 14.5,17.1 14.5,17.67 C14.5,17.67 14.5,25.14 14.5,25.14c " />
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+</animated-vector> \ No newline at end of file
diff --git a/PermissionController/res/drawable-v34/status_scanning_anim_warn.xml b/PermissionController/res/drawable-v34/status_scanning_anim_warn.xml
new file mode 100644
index 000000000..d6c319ef0
--- /dev/null
+++ b/PermissionController/res/drawable-v34/status_scanning_anim_warn.xml
@@ -0,0 +1,111 @@
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <target android:name="_R_G_L_1_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="583"
+ android:propertyName="fillAlpha"
+ 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 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="417"
+ android:propertyName="fillAlpha"
+ android:startOffset="583"
+ 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 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="1000"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="0.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,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="1000"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="0.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,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="1000"
+ android:propertyName="translateX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <aapt:attr name="android:drawable">
+ <vector
+ android:width="224dp"
+ android:height="224dp"
+ android:viewportHeight="224"
+ android:viewportWidth="224">
+ <group android:name="_R_G">
+ <group
+ android:name="_R_G_L_1_G"
+ android:pivotX="112"
+ android:pivotY="112"
+ android:scaleX="0.1"
+ android:scaleY="0.1">
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusBackgroundWarn"
+ android:fillType="nonZero"
+ android:pathData=" M112 0 C112,0 112,0 112,0 C173.86,0 224,50.14 224,112 C224,112 224,112 224,112 C224,173.86 173.86,224 112,224 C112,224 112,224 112,224 C50.14,224 0,173.86 0,112 C0,112 0,112 0,112 C0,50.14 50.14,0 112,0c " />
+ </group>
+ <group
+ android:name="_R_G_L_0_G"
+ android:pivotX="28"
+ android:pivotY="28"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="84"
+ android:translateY="84">
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusWarn"
+ android:fillType="nonZero"
+ android:pathData=" M14.5 25.14 C14.53,26.4 14.62,27.66 14.79,28.91 C15.59,34.32 18.62,40.45 26.93,44.74 C27.26,44.91 27.63,45 28,45 C28.37,45 28.74,44.91 29.07,44.74 C37.38,40.45 40.41,34.32 41.21,28.91 C41.38,27.66 41.48,26.4 41.5,25.14 C41.5,25.14 41.5,17.67 41.5,17.67 C41.5,17.1 41.33,16.54 41,16.07 C40.67,15.61 40.21,15.25 39.67,15.06 C39.67,15.06 28.95,11.17 28.95,11.17 C28.34,10.94 27.67,10.94 27.05,11.17 C27.05,11.17 16.33,15.06 16.33,15.06 C15.79,15.25 15.33,15.61 15,16.07 C14.68,16.54 14.5,17.1 14.5,17.67 C14.5,17.67 14.5,25.14 14.5,25.14c " />
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+</animated-vector> \ No newline at end of file
diff --git a/PermissionController/res/drawable-v34/status_scanning_end_anim_info_to_info.xml b/PermissionController/res/drawable-v34/status_scanning_end_anim_info_to_info.xml
new file mode 100644
index 000000000..9336ddfa8
--- /dev/null
+++ b/PermissionController/res/drawable-v34/status_scanning_end_anim_info_to_info.xml
@@ -0,0 +1,265 @@
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <target android:name="_R_G_L_2_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="250"
+ android:propertyName="scaleX"
+ 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.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="250"
+ android:propertyName="scaleY"
+ 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.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="517"
+ android:propertyName="scaleX"
+ android:startOffset="250"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="517"
+ android:propertyName="scaleY"
+ android:startOffset="250"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleX"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleY"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="17"
+ android:propertyName="fillAlpha"
+ android:startOffset="0"
+ 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_0_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="50"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M22.2 25.82 C22.2,25.82 19.84,28.17 19.84,28.17 C19.84,28.17 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 22.15,25.8 22.15,25.8 C22.15,25.8 22.22,25.82 22.22,25.82 C22.22,25.82 22.2,25.82 22.2,25.82c "
+ android:valueTo="M27.89 31.53 C27.89,31.53 25.5,33.81 25.5,33.81 C25.5,33.81 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 25.5,29.13 25.5,29.13 C25.5,29.13 25.54,29.17 25.54,29.17 C25.54,29.17 27.89,31.53 27.89,31.53c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="pathData"
+ android:startOffset="50"
+ android:valueFrom="M27.89 31.53 C27.89,31.53 25.5,33.81 25.5,33.81 C25.5,33.81 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 25.5,29.13 25.5,29.13 C25.5,29.13 25.54,29.17 25.54,29.17 C25.54,29.17 27.89,31.53 27.89,31.53c "
+ android:valueTo="M36.17 23.26 C36.17,23.26 25.5,33.81 25.5,33.81 C25.5,33.81 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 25.5,29.13 25.5,29.13 C25.5,29.13 33.83,20.89 33.83,20.89 C33.83,20.89 36.17,23.26 36.17,23.26c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.29,0 0.739,1 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:duration="150"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleX"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleY"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="767"
+ android:propertyName="translateX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <aapt:attr name="android:drawable">
+ <vector
+ android:width="224dp"
+ android:height="224dp"
+ android:viewportHeight="224"
+ android:viewportWidth="224">
+ <group android:name="_R_G">
+ <group
+ android:name="_R_G_L_2_G"
+ android:pivotX="112"
+ android:pivotY="112"
+ android:scaleX="0"
+ android:scaleY="0">
+ <path
+ android:name="_R_G_L_2_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusBackgroundInfo"
+ android:fillType="nonZero"
+ android:pathData=" M112 0 C112,0 112,0 112,0 C173.86,0 224,50.14 224,112 C224,112 224,112 224,112 C224,173.86 173.86,224 112,224 C112,224 112,224 112,224 C50.14,224 0,173.86 0,112 C0,112 0,112 0,112 C0,50.14 50.14,0 112,0c " />
+ </group>
+ <group
+ android:name="_R_G_L_1_G"
+ android:pivotX="28"
+ android:pivotY="28"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="84"
+ android:translateY="84">
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusInfo"
+ android:fillType="nonZero"
+ android:pathData=" M14.5 25.14 C14.53,26.4 14.62,27.66 14.79,28.91 C15.59,34.32 18.62,40.45 26.93,44.74 C27.26,44.91 27.63,45 28,45 C28.37,45 28.74,44.91 29.07,44.74 C37.38,40.45 40.41,34.32 41.21,28.91 C41.38,27.66 41.48,26.4 41.5,25.14 C41.5,25.14 41.5,17.67 41.5,17.67 C41.5,17.1 41.33,16.54 41,16.07 C40.67,15.61 40.21,15.25 39.67,15.06 C39.67,15.06 28.95,11.17 28.95,11.17 C28.34,10.94 27.67,10.94 27.05,11.17 C27.05,11.17 16.33,15.06 16.33,15.06 C15.79,15.25 15.33,15.61 15,16.07 C14.68,16.54 14.5,17.1 14.5,17.67 C14.5,17.67 14.5,25.14 14.5,25.14c " />
+ </group>
+ <group
+ android:name="_R_G_L_0_G"
+ android:pivotX="28"
+ android:pivotY="28"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="84"
+ android:translateY="84">
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:fillAlpha="0"
+ android:fillColor="?attr/colorScShieldAccent"
+ android:fillType="nonZero"
+ android:pathData=" M22.2 25.82 C22.2,25.82 19.84,28.17 19.84,28.17 C19.84,28.17 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 22.15,25.8 22.15,25.8 C22.15,25.8 22.22,25.82 22.22,25.82 C22.22,25.82 22.2,25.82 22.2,25.82c " />
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+</animated-vector> \ No newline at end of file
diff --git a/PermissionController/res/drawable-v34/status_scanning_end_anim_info_to_recommend.xml b/PermissionController/res/drawable-v34/status_scanning_end_anim_info_to_recommend.xml
new file mode 100644
index 000000000..3a55c83ec
--- /dev/null
+++ b/PermissionController/res/drawable-v34/status_scanning_end_anim_info_to_recommend.xml
@@ -0,0 +1,469 @@
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <target android:name="_R_G_L_3_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="250"
+ android:propertyName="scaleX"
+ 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.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="250"
+ android:propertyName="scaleY"
+ 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.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="517"
+ android:propertyName="scaleX"
+ android:startOffset="250"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="517"
+ android:propertyName="scaleY"
+ android:startOffset="250"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_2_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="fillColor"
+ android:startOffset="0"
+ android:valueFrom="?attr/colorScStatusInfo"
+ android:valueTo="?attr/colorScStatusInfo"
+ android:valueType="colorType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="fillColor"
+ android:startOffset="150"
+ android:valueFrom="?attr/colorScStatusInfo"
+ android:valueTo="?attr/colorScStatusRecommend"
+ android:valueType="colorType">
+ <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_2_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleX"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleY"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,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:duration="283"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M28.04 33.99 C28.04,33.99 28,33.98 28,33.98 C28,33.98 28.01,33.97 28.01,33.97 C28.01,33.97 28.02,33.98 28.02,33.98 C28.02,33.98 28.04,33.99 28.04,33.99c "
+ android:valueTo="M25.92 36.4 C25.92,36.4 25.92,31.89 25.92,31.89 C25.92,31.89 30.09,31.89 30.09,31.89 C30.09,31.89 30.09,36.4 30.09,36.4 C30.09,36.4 25.92,36.4 25.92,36.4c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.2,0 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_N_3_T_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleX"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleY"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="scaleX"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="scaleY"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="fillAlpha"
+ 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:duration="17"
+ android:propertyName="fillAlpha"
+ android:startOffset="167"
+ 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_0_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M25.92 28.4 C25.92,28.4 25.92,28.4 25.92,28.4 C25.92,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueTo="M25.92 28.4 C25.92,28.4 25.92,28.4 25.92,28.4 C25.92,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.3,0 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="250"
+ android:propertyName="pathData"
+ android:startOffset="167"
+ android:valueFrom="M25.92 28.4 C25.92,28.4 25.92,28.4 25.92,28.4 C25.92,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueTo="M25.92 28.4 C25.92,28.4 25.92,18.4 25.92,18.4 C25.92,18.4 30.09,18.4 30.09,18.4 C30.09,18.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.3,0 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_T_1">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="100"
+ android:pathData="M 0,0C 0,1.553 0,9.32 0,9.32"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="0">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.2,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="317"
+ android:pathData="M 0,9.32C 0,9.32 0,1.553 0,0"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="100">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.001,0 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_N_3_T_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleX"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleY"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="scaleX"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="scaleY"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="783"
+ android:propertyName="translateX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <aapt:attr name="android:drawable">
+ <vector
+ android:width="224dp"
+ android:height="224dp"
+ android:viewportHeight="224"
+ android:viewportWidth="224">
+ <group android:name="_R_G">
+ <group
+ android:name="_R_G_L_3_G"
+ android:pivotX="112"
+ android:pivotY="112"
+ android:scaleX="0"
+ android:scaleY="0">
+ <path
+ android:name="_R_G_L_3_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusBackgroundRecommend"
+ android:fillType="nonZero"
+ android:pathData=" M112 0 C112,0 112,0 112,0 C173.86,0 224,50.14 224,112 C224,112 224,112 224,112 C224,173.86 173.86,224 112,224 C112,224 112,224 112,224 C50.14,224 0,173.86 0,112 C0,112 0,112 0,112 C0,50.14 50.14,0 112,0c " />
+ </group>
+ <group
+ android:name="_R_G_L_2_G"
+ android:pivotX="28"
+ android:pivotY="28"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="84"
+ android:translateY="84">
+ <path
+ android:name="_R_G_L_2_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusInfo"
+ android:fillType="nonZero"
+ android:pathData=" M14.5 25.14 C14.53,26.4 14.62,27.66 14.79,28.91 C15.59,34.32 18.62,40.45 26.93,44.74 C27.26,44.91 27.63,45 28,45 C28.37,45 28.74,44.91 29.07,44.74 C37.38,40.45 40.41,34.32 41.21,28.91 C41.38,27.66 41.48,26.4 41.5,25.14 C41.5,25.14 41.5,17.67 41.5,17.67 C41.5,17.1 41.33,16.54 41,16.07 C40.67,15.61 40.21,15.25 39.67,15.06 C39.67,15.06 28.95,11.17 28.95,11.17 C28.34,10.94 27.67,10.94 27.05,11.17 C27.05,11.17 16.33,15.06 16.33,15.06 C15.79,15.25 15.33,15.61 15,16.07 C14.68,16.54 14.5,17.1 14.5,17.67 C14.5,17.67 14.5,25.14 14.5,25.14c " />
+ </group>
+ <group
+ android:name="_R_G_L_1_G_N_3_T_0"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="112"
+ android:translateY="112">
+ <group
+ android:name="_R_G_L_1_G"
+ android:translateX="-28"
+ android:translateY="-28">
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="@color/sc_shield_accent_fixed_variant"
+ android:fillType="nonZero"
+ android:pathData=" M28.04 33.99 C28.04,33.99 28,33.98 28,33.98 C28,33.98 28.01,33.97 28.01,33.97 C28.01,33.97 28.02,33.98 28.02,33.98 C28.02,33.98 28.04,33.99 28.04,33.99c " />
+ </group>
+ </group>
+ <group
+ android:name="_R_G_L_0_G_N_3_T_0"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="112"
+ android:translateY="112">
+ <group
+ android:name="_R_G_L_0_G_T_1"
+ android:translateX="0"
+ android:translateY="0">
+ <group
+ android:name="_R_G_L_0_G"
+ android:translateX="-28"
+ android:translateY="-28">
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:fillAlpha="0"
+ android:fillColor="@color/sc_shield_accent_fixed_variant"
+ android:fillType="nonZero"
+ android:pathData=" M25.92 28.4 C25.92,28.4 25.92,28.4 25.92,28.4 C25.92,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c " />
+ </group>
+ </group>
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+</animated-vector> \ No newline at end of file
diff --git a/PermissionController/res/drawable-v34/status_scanning_end_anim_info_to_warn.xml b/PermissionController/res/drawable-v34/status_scanning_end_anim_info_to_warn.xml
new file mode 100644
index 000000000..8c42eed50
--- /dev/null
+++ b/PermissionController/res/drawable-v34/status_scanning_end_anim_info_to_warn.xml
@@ -0,0 +1,469 @@
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <target android:name="_R_G_L_3_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="250"
+ android:propertyName="scaleX"
+ 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.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="250"
+ android:propertyName="scaleY"
+ 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.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="517"
+ android:propertyName="scaleX"
+ android:startOffset="250"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="517"
+ android:propertyName="scaleY"
+ android:startOffset="250"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_2_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="fillColor"
+ android:startOffset="0"
+ android:valueFrom="?attr/colorScStatusInfo"
+ android:valueTo="?attr/colorScStatusInfo"
+ android:valueType="colorType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="fillColor"
+ android:startOffset="150"
+ android:valueFrom="?attr/colorScStatusInfo"
+ android:valueTo="?attr/colorScStatusWarn"
+ android:valueType="colorType">
+ <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_2_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleX"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleY"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,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:duration="283"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M28.04 33.99 C28.04,33.99 28,33.98 28,33.98 C28,33.98 28.01,33.97 28.01,33.97 C28.01,33.97 28.02,33.98 28.02,33.98 C28.02,33.98 28.04,33.99 28.04,33.99c "
+ android:valueTo="M25.92 36.4 C25.92,36.4 25.92,31.89 25.92,31.89 C25.92,31.89 30.09,31.89 30.09,31.89 C30.09,31.89 30.09,36.4 30.09,36.4 C30.09,36.4 25.92,36.4 25.92,36.4c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.2,0 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_N_3_T_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleX"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleY"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="scaleX"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="scaleY"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="fillAlpha"
+ 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:duration="17"
+ android:propertyName="fillAlpha"
+ android:startOffset="167"
+ 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_0_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M25.92 28.4 C25.92,28.4 25.92,28.4 25.92,28.4 C25.92,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueTo="M25.92 28.4 C25.92,28.4 25.92,28.4 25.92,28.4 C25.92,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.3,0 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="250"
+ android:propertyName="pathData"
+ android:startOffset="167"
+ android:valueFrom="M25.92 28.4 C25.92,28.4 25.92,28.4 25.92,28.4 C25.92,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueTo="M25.92 28.4 C25.92,28.4 25.92,18.4 25.92,18.4 C25.92,18.4 30.09,18.4 30.09,18.4 C30.09,18.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.3,0 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_T_1">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="100"
+ android:pathData="M 0,0C 0,1.553 0,9.32 0,9.32"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="0">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.2,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="317"
+ android:pathData="M 0,9.32C 0,9.32 0,1.553 0,0"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="100">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.001,0 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_N_3_T_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleX"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleY"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="scaleX"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="scaleY"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="783"
+ android:propertyName="translateX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <aapt:attr name="android:drawable">
+ <vector
+ android:width="224dp"
+ android:height="224dp"
+ android:viewportHeight="224"
+ android:viewportWidth="224">
+ <group android:name="_R_G">
+ <group
+ android:name="_R_G_L_3_G"
+ android:pivotX="112"
+ android:pivotY="112"
+ android:scaleX="0"
+ android:scaleY="0">
+ <path
+ android:name="_R_G_L_3_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusBackgroundWarn"
+ android:fillType="nonZero"
+ android:pathData=" M112 0 C112,0 112,0 112,0 C173.86,0 224,50.14 224,112 C224,112 224,112 224,112 C224,173.86 173.86,224 112,224 C112,224 112,224 112,224 C50.14,224 0,173.86 0,112 C0,112 0,112 0,112 C0,50.14 50.14,0 112,0c " />
+ </group>
+ <group
+ android:name="_R_G_L_2_G"
+ android:pivotX="28"
+ android:pivotY="28"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="84"
+ android:translateY="84">
+ <path
+ android:name="_R_G_L_2_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusInfo"
+ android:fillType="nonZero"
+ android:pathData=" M14.5 25.14 C14.53,26.4 14.62,27.66 14.79,28.91 C15.59,34.32 18.62,40.45 26.93,44.74 C27.26,44.91 27.63,45 28,45 C28.37,45 28.74,44.91 29.07,44.74 C37.38,40.45 40.41,34.32 41.21,28.91 C41.38,27.66 41.48,26.4 41.5,25.14 C41.5,25.14 41.5,17.67 41.5,17.67 C41.5,17.1 41.33,16.54 41,16.07 C40.67,15.61 40.21,15.25 39.67,15.06 C39.67,15.06 28.95,11.17 28.95,11.17 C28.34,10.94 27.67,10.94 27.05,11.17 C27.05,11.17 16.33,15.06 16.33,15.06 C15.79,15.25 15.33,15.61 15,16.07 C14.68,16.54 14.5,17.1 14.5,17.67 C14.5,17.67 14.5,25.14 14.5,25.14c " />
+ </group>
+ <group
+ android:name="_R_G_L_1_G_N_3_T_0"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="112"
+ android:translateY="112">
+ <group
+ android:name="_R_G_L_1_G"
+ android:translateX="-28"
+ android:translateY="-28">
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScShieldAccent"
+ android:fillType="nonZero"
+ android:pathData=" M28.04 33.99 C28.04,33.99 28,33.98 28,33.98 C28,33.98 28.01,33.97 28.01,33.97 C28.01,33.97 28.02,33.98 28.02,33.98 C28.02,33.98 28.04,33.99 28.04,33.99c " />
+ </group>
+ </group>
+ <group
+ android:name="_R_G_L_0_G_N_3_T_0"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="112"
+ android:translateY="112">
+ <group
+ android:name="_R_G_L_0_G_T_1"
+ android:translateX="0"
+ android:translateY="0">
+ <group
+ android:name="_R_G_L_0_G"
+ android:translateX="-28"
+ android:translateY="-28">
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:fillAlpha="0"
+ android:fillColor="?attr/colorScShieldAccent"
+ android:fillType="nonZero"
+ android:pathData=" M25.92 28.4 C25.92,28.4 25.92,28.4 25.92,28.4 C25.92,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c " />
+ </group>
+ </group>
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+</animated-vector> \ No newline at end of file
diff --git a/PermissionController/res/drawable-v34/status_scanning_end_anim_recommend_to_info.xml b/PermissionController/res/drawable-v34/status_scanning_end_anim_recommend_to_info.xml
new file mode 100644
index 000000000..859c51995
--- /dev/null
+++ b/PermissionController/res/drawable-v34/status_scanning_end_anim_recommend_to_info.xml
@@ -0,0 +1,293 @@
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <target android:name="_R_G_L_2_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="250"
+ android:propertyName="scaleX"
+ 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.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="250"
+ android:propertyName="scaleY"
+ 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.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="517"
+ android:propertyName="scaleX"
+ android:startOffset="250"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="517"
+ android:propertyName="scaleY"
+ android:startOffset="250"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.049,0.562 0,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:duration="150"
+ android:propertyName="fillColor"
+ android:startOffset="0"
+ android:valueFrom="?attr/colorScStatusRecommend"
+ android:valueTo="?attr/colorScStatusRecommend"
+ android:valueType="colorType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="fillColor"
+ android:startOffset="150"
+ android:valueFrom="?attr/colorScStatusRecommend"
+ android:valueTo="?attr/colorScStatusInfo"
+ android:valueType="colorType">
+ <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">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleX"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleY"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="17"
+ android:propertyName="fillAlpha"
+ android:startOffset="0"
+ 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_0_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="50"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M22.2 25.82 C22.2,25.82 19.84,28.17 19.84,28.17 C19.84,28.17 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 22.15,25.8 22.15,25.8 C22.15,25.8 22.22,25.82 22.22,25.82 C22.22,25.82 22.2,25.82 22.2,25.82c "
+ android:valueTo="M27.89 31.53 C27.89,31.53 25.5,33.81 25.5,33.81 C25.5,33.81 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 25.5,29.13 25.5,29.13 C25.5,29.13 25.54,29.17 25.54,29.17 C25.54,29.17 27.89,31.53 27.89,31.53c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="pathData"
+ android:startOffset="50"
+ android:valueFrom="M27.89 31.53 C27.89,31.53 25.5,33.81 25.5,33.81 C25.5,33.81 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 25.5,29.13 25.5,29.13 C25.5,29.13 25.54,29.17 25.54,29.17 C25.54,29.17 27.89,31.53 27.89,31.53c "
+ android:valueTo="M36.17 23.26 C36.17,23.26 25.5,33.81 25.5,33.81 C25.5,33.81 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 25.5,29.13 25.5,29.13 C25.5,29.13 33.83,20.89 33.83,20.89 C33.83,20.89 36.17,23.26 36.17,23.26c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.29,0 0.739,1 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:duration="150"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleX"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleY"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="767"
+ android:propertyName="translateX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <aapt:attr name="android:drawable">
+ <vector
+ android:width="224dp"
+ android:height="224dp"
+ android:viewportHeight="224"
+ android:viewportWidth="224">
+ <group android:name="_R_G">
+ <group
+ android:name="_R_G_L_2_G"
+ android:pivotX="112"
+ android:pivotY="112"
+ android:scaleX="0"
+ android:scaleY="0">
+ <path
+ android:name="_R_G_L_2_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusBackgroundInfo"
+ android:fillType="nonZero"
+ android:pathData=" M112 0 C112,0 112,0 112,0 C173.86,0 224,50.14 224,112 C224,112 224,112 224,112 C224,173.86 173.86,224 112,224 C112,224 112,224 112,224 C50.14,224 0,173.86 0,112 C0,112 0,112 0,112 C0,50.14 50.14,0 112,0c " />
+ </group>
+ <group
+ android:name="_R_G_L_1_G"
+ android:pivotX="28"
+ android:pivotY="28"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="84"
+ android:translateY="84">
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusRecommend"
+ android:fillType="nonZero"
+ android:pathData=" M14.5 25.14 C14.53,26.4 14.62,27.66 14.79,28.91 C15.59,34.32 18.62,40.45 26.93,44.74 C27.26,44.91 27.63,45 28,45 C28.37,45 28.74,44.91 29.07,44.74 C37.38,40.45 40.41,34.32 41.21,28.91 C41.38,27.66 41.48,26.4 41.5,25.14 C41.5,25.14 41.5,17.67 41.5,17.67 C41.5,17.1 41.33,16.54 41,16.07 C40.67,15.61 40.21,15.25 39.67,15.06 C39.67,15.06 28.95,11.17 28.95,11.17 C28.34,10.94 27.67,10.94 27.05,11.17 C27.05,11.17 16.33,15.06 16.33,15.06 C15.79,15.25 15.33,15.61 15,16.07 C14.68,16.54 14.5,17.1 14.5,17.67 C14.5,17.67 14.5,25.14 14.5,25.14c " />
+ </group>
+ <group
+ android:name="_R_G_L_0_G"
+ android:pivotX="28"
+ android:pivotY="28"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="84"
+ android:translateY="84">
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:fillAlpha="0"
+ android:fillColor="?attr/colorScShieldAccent"
+ android:fillType="nonZero"
+ android:pathData=" M22.2 25.82 C22.2,25.82 19.84,28.17 19.84,28.17 C19.84,28.17 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 22.15,25.8 22.15,25.8 C22.15,25.8 22.22,25.82 22.22,25.82 C22.22,25.82 22.2,25.82 22.2,25.82c " />
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+</animated-vector> \ No newline at end of file
diff --git a/PermissionController/res/drawable-v34/status_scanning_end_anim_recommend_to_recommend.xml b/PermissionController/res/drawable-v34/status_scanning_end_anim_recommend_to_recommend.xml
new file mode 100644
index 000000000..f6a8583c1
--- /dev/null
+++ b/PermissionController/res/drawable-v34/status_scanning_end_anim_recommend_to_recommend.xml
@@ -0,0 +1,458 @@
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <target android:name="_R_G_L_3_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="250"
+ android:propertyName="scaleX"
+ 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.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="250"
+ android:propertyName="scaleY"
+ 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.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="517"
+ android:propertyName="scaleX"
+ android:startOffset="250"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="517"
+ android:propertyName="scaleY"
+ android:startOffset="250"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_2_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="317"
+ android:propertyName="fillColor"
+ android:startOffset="0"
+ android:valueFrom="?attr/colorScStatusRecommend"
+ android:valueTo="?attr/colorScStatusRecommend"
+ android:valueType="colorType">
+ <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_2_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleX"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleY"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,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:duration="167"
+ android:propertyName="fillAlpha"
+ 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:duration="17"
+ android:propertyName="fillAlpha"
+ android:startOffset="167"
+ 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_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M25.92 28.4 C25.92,28.4 25.92,28.4 25.92,28.4 C25.92,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueTo="M25.92 28.4 C25.92,28.4 25.92,28.4 25.92,28.4 C25.92,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.3,0 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="250"
+ android:propertyName="pathData"
+ android:startOffset="167"
+ android:valueFrom="M25.92 28.4 C25.92,28.4 25.92,28.4 25.92,28.4 C25.92,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueTo="M25.92 28.4 C25.92,28.4 25.92,18.4 25.92,18.4 C25.92,18.4 30.09,18.4 30.09,18.4 C30.09,18.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.3,0 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_T_1">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="100"
+ android:pathData="M 0,0C 0,1.553 0,9.32 0,9.32"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="0">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.2,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="317"
+ android:pathData="M 0,9.32C 0,9.32 0,1.553 0,0"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="100">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.001,0 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_N_6_T_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleX"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleY"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="scaleX"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="scaleY"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="283"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M28.04 33.99 C28.04,33.99 28,33.98 28,33.98 C28,33.98 28.01,33.97 28.01,33.97 C28.01,33.97 28.02,33.98 28.02,33.98 C28.02,33.98 28.04,33.99 28.04,33.99c "
+ android:valueTo="M25.92 36.4 C25.92,36.4 25.92,31.89 25.92,31.89 C25.92,31.89 30.09,31.89 30.09,31.89 C30.09,31.89 30.09,36.4 30.09,36.4 C30.09,36.4 25.92,36.4 25.92,36.4c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.2,0 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_N_3_T_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleX"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleY"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="scaleX"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="scaleY"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="767"
+ android:propertyName="translateX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <aapt:attr name="android:drawable">
+ <vector
+ android:width="224dp"
+ android:height="224dp"
+ android:viewportHeight="224"
+ android:viewportWidth="224">
+ <group android:name="_R_G">
+ <group
+ android:name="_R_G_L_3_G"
+ android:pivotX="112"
+ android:pivotY="112"
+ android:scaleX="0"
+ android:scaleY="0">
+ <path
+ android:name="_R_G_L_3_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusBackgroundRecommend"
+ android:fillType="nonZero"
+ android:pathData=" M112 0 C112,0 112,0 112,0 C173.86,0 224,50.14 224,112 C224,112 224,112 224,112 C224,173.86 173.86,224 112,224 C112,224 112,224 112,224 C50.14,224 0,173.86 0,112 C0,112 0,112 0,112 C0,50.14 50.14,0 112,0c " />
+ </group>
+ <group
+ android:name="_R_G_L_2_G"
+ android:pivotX="28"
+ android:pivotY="28"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="84"
+ android:translateY="84">
+ <path
+ android:name="_R_G_L_2_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusRecommend"
+ android:fillType="nonZero"
+ android:pathData=" M14.5 25.14 C14.53,26.4 14.62,27.66 14.79,28.91 C15.59,34.32 18.62,40.45 26.93,44.74 C27.26,44.91 27.63,45 28,45 C28.37,45 28.74,44.91 29.07,44.74 C37.38,40.45 40.41,34.32 41.21,28.91 C41.38,27.66 41.48,26.4 41.5,25.14 C41.5,25.14 41.5,17.67 41.5,17.67 C41.5,17.1 41.33,16.54 41,16.07 C40.67,15.61 40.21,15.25 39.67,15.06 C39.67,15.06 28.95,11.17 28.95,11.17 C28.34,10.94 27.67,10.94 27.05,11.17 C27.05,11.17 16.33,15.06 16.33,15.06 C15.79,15.25 15.33,15.61 15,16.07 C14.68,16.54 14.5,17.1 14.5,17.67 C14.5,17.67 14.5,25.14 14.5,25.14c " />
+ </group>
+ <group
+ android:name="_R_G_L_1_G_N_6_T_0"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="112"
+ android:translateY="112">
+ <group
+ android:name="_R_G_L_1_G_T_1"
+ android:translateX="0"
+ android:translateY="0">
+ <group
+ android:name="_R_G_L_1_G"
+ android:translateX="-28"
+ android:translateY="-28">
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillAlpha="0"
+ android:fillColor="@color/sc_shield_accent_fixed_variant"
+ android:fillType="nonZero"
+ android:pathData=" M25.92 28.4 C25.92,28.4 25.92,28.4 25.92,28.4 C25.92,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c " />
+ </group>
+ </group>
+ </group>
+ <group
+ android:name="_R_G_L_0_G_N_3_T_0"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="112"
+ android:translateY="112">
+ <group
+ android:name="_R_G_L_0_G"
+ android:translateX="-28"
+ android:translateY="-28">
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="@color/sc_shield_accent_fixed_variant"
+ android:fillType="nonZero"
+ android:pathData=" M28.04 33.99 C28.04,33.99 28,33.98 28,33.98 C28,33.98 28.01,33.97 28.01,33.97 C28.01,33.97 28.02,33.98 28.02,33.98 C28.02,33.98 28.04,33.99 28.04,33.99c " />
+ </group>
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+</animated-vector> \ No newline at end of file
diff --git a/PermissionController/res/drawable-v34/status_scanning_end_anim_recommend_to_warn.xml b/PermissionController/res/drawable-v34/status_scanning_end_anim_recommend_to_warn.xml
new file mode 100644
index 000000000..59ef6b3c9
--- /dev/null
+++ b/PermissionController/res/drawable-v34/status_scanning_end_anim_recommend_to_warn.xml
@@ -0,0 +1,532 @@
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <aapt:attr name="android:drawable">
+ <vector
+ android:height="224dp"
+ android:width="224dp"
+ android:viewportHeight="224"
+ android:viewportWidth="224">
+ <group android:name="_R_G">
+ <group
+ android:name="_R_G_L_4_G"
+ android:pivotX="112"
+ android:pivotY="112"
+ android:scaleX="0"
+ android:scaleY="0">
+ <path
+ android:name="_R_G_L_4_G_D_0_P_0"
+ android:fillColor="?attr/colorScStatusBackgroundWarn"
+ android:fillAlpha="1"
+ android:fillType="nonZero"
+ android:pathData=" M112 0 C112,0 112,0 112,0 C173.86,0 224,50.14 224,112 C224,112 224,112 224,112 C224,173.86 173.86,224 112,224 C112,224 112,224 112,224 C50.14,224 0,173.86 0,112 C0,112 0,112 0,112 C0,50.14 50.14,0 112,0c " />
+ </group>
+ <group
+ android:name="_R_G_L_3_G"
+ android:pivotX="112"
+ android:pivotY="112"
+ android:scaleX="0"
+ android:scaleY="0">
+ <path
+ android:name="_R_G_L_3_G_D_0_P_0"
+ android:fillColor="?attr/colorScStatusBackgroundWarn"
+ android:fillAlpha="1"
+ android:fillType="nonZero"
+ android:pathData=" M112 0 C112,0 112,0 112,0 C173.86,0 224,50.14 224,112 C224,112 224,112 224,112 C224,173.86 173.86,224 112,224 C112,224 112,224 112,224 C50.14,224 0,173.86 0,112 C0,112 0,112 0,112 C0,50.14 50.14,0 112,0c " />
+ </group>
+ <group
+ android:name="_R_G_L_2_G"
+ android:translateX="84"
+ android:translateY="84"
+ android:pivotX="28"
+ android:pivotY="28"
+ android:scaleX="4"
+ android:scaleY="4">
+ <path
+ android:name="_R_G_L_2_G_D_0_P_0"
+ android:fillColor="?attr/colorScStatusRecommend"
+ android:fillAlpha="1"
+ android:fillType="nonZero"
+ android:pathData=" M14.5 25.14 C14.53,26.4 14.62,27.66 14.79,28.91 C15.59,34.32 18.62,40.45 26.93,44.74 C27.26,44.91 27.63,45 28,45 C28.37,45 28.74,44.91 29.07,44.74 C37.38,40.45 40.41,34.32 41.21,28.91 C41.38,27.66 41.48,26.4 41.5,25.14 C41.5,25.14 41.5,17.67 41.5,17.67 C41.5,17.1 41.33,16.54 41,16.07 C40.67,15.61 40.21,15.25 39.67,15.06 C39.67,15.06 28.95,11.17 28.95,11.17 C28.34,10.94 27.67,10.94 27.05,11.17 C27.05,11.17 16.33,15.06 16.33,15.06 C15.79,15.25 15.33,15.61 15,16.07 C14.68,16.54 14.5,17.1 14.5,17.67 C14.5,17.67 14.5,25.14 14.5,25.14c " />
+ </group>
+ <group
+ android:name="_R_G_L_1_G_N_3_T_0"
+ android:translateX="112"
+ android:translateY="112"
+ android:scaleX="4"
+ android:scaleY="4">
+ <group
+ android:name="_R_G_L_1_G"
+ android:translateX="-28"
+ android:translateY="-28">
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillColor="?attr/colorScShieldAccent"
+ android:fillAlpha="1"
+ android:fillType="nonZero"
+ android:pathData=" M28.04 33.99 C28.04,33.99 28,33.98 28,33.98 C28,33.98 28.01,33.97 28.01,33.97 C28.01,33.97 28.02,33.98 28.02,33.98 C28.02,33.98 28.04,33.99 28.04,33.99c " />
+ </group>
+ </group>
+ <group
+ android:name="_R_G_L_0_G_N_3_T_0"
+ android:translateX="112"
+ android:translateY="112"
+ android:scaleX="4"
+ android:scaleY="4">
+ <group
+ android:name="_R_G_L_0_G_T_1"
+ android:translateX="0"
+ android:translateY="0">
+ <group
+ android:name="_R_G_L_0_G"
+ android:translateX="-28"
+ android:translateY="-28">
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:fillColor="?attr/colorScShieldAccent"
+ android:fillAlpha="0"
+ android:fillType="nonZero"
+ android:pathData=" M25.92 28.4 C25.92,28.4 25.92,28.4 25.92,28.4 C25.92,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c " />
+ </group>
+ </group>
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+ <target android:name="_R_G_L_4_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="250"
+ 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.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="250"
+ 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.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="517"
+ android:startOffset="250"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="517"
+ android:startOffset="250"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_3_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="250"
+ 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.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="250"
+ 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.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="517"
+ android:startOffset="250"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="517"
+ android:startOffset="250"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_2_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:propertyName="fillColor"
+ android:duration="150"
+ android:startOffset="0"
+ android:valueFrom="?attr/colorScStatusRecommend"
+ android:valueTo="?attr/colorScStatusRecommend"
+ android:valueType="colorType">
+ <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="fillColor"
+ android:duration="167"
+ android:startOffset="150"
+ android:valueFrom="?attr/colorScStatusRecommend"
+ android:valueTo="?attr/colorScStatusWarn"
+ android:valueType="colorType">
+ <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_2_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="150"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="150"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="450"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="450"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,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="283"
+ android:startOffset="0"
+ android:valueFrom="M28.04 33.99 C28.04,33.99 28,33.98 28,33.98 C28,33.98 28.01,33.97 28.01,33.97 C28.01,33.97 28.02,33.98 28.02,33.98 C28.02,33.98 28.04,33.99 28.04,33.99c "
+ android:valueTo="M25.92 36.4 C25.92,36.4 25.92,31.89 25.92,31.89 C25.92,31.89 30.09,31.89 30.09,31.89 C30.09,31.89 30.09,36.4 30.09,36.4 C30.09,36.4 25.92,36.4 25.92,36.4c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.2,0 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_N_3_T_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="150"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="150"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="450"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="450"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="167"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="167"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,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="167"
+ 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="fillAlpha"
+ android:duration="17"
+ android:startOffset="167"
+ 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_0_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:propertyName="pathData"
+ android:duration="167"
+ android:startOffset="0"
+ android:valueFrom="M25.92 28.4 C25.92,28.4 25.92,28.4 25.92,28.4 C25.92,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueTo="M25.92 28.4 C25.92,28.4 25.92,28.4 25.92,28.4 C25.92,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.3,0 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="pathData"
+ android:duration="250"
+ android:startOffset="167"
+ android:valueFrom="M25.92 28.4 C25.92,28.4 25.92,28.4 25.92,28.4 C25.92,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueTo="M25.92 28.4 C25.92,28.4 25.92,18.4 25.92,18.4 C25.92,18.4 30.09,18.4 30.09,18.4 C30.09,18.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.3,0 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_T_1">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:propertyName="translateXY"
+ android:duration="100"
+ android:startOffset="0"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:pathData="M 0,0C 0,1.553 0,9.32 0,9.32">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.2,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="translateXY"
+ android:duration="317"
+ android:startOffset="100"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:pathData="M 0,9.32C 0,9.32 0,1.553 0,0">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.001,0 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_N_3_T_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="150"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="150"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="450"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="450"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="167"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="167"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,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="783"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+</animated-vector> \ No newline at end of file
diff --git a/PermissionController/res/drawable-v34/status_scanning_end_anim_warn_to_info.xml b/PermissionController/res/drawable-v34/status_scanning_end_anim_warn_to_info.xml
new file mode 100644
index 000000000..07a38ea51
--- /dev/null
+++ b/PermissionController/res/drawable-v34/status_scanning_end_anim_warn_to_info.xml
@@ -0,0 +1,293 @@
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <aapt:attr name="android:drawable">
+ <vector
+ android:height="224dp"
+ android:width="224dp"
+ android:viewportHeight="224"
+ android:viewportWidth="224">
+ <group android:name="_R_G">
+ <group
+ android:name="_R_G_L_2_G"
+ android:pivotX="112"
+ android:pivotY="112"
+ android:scaleX="0"
+ android:scaleY="0">
+ <path
+ android:name="_R_G_L_2_G_D_0_P_0"
+ android:fillColor="?attr/colorScStatusBackgroundInfo"
+ android:fillAlpha="1"
+ android:fillType="nonZero"
+ android:pathData=" M112 0 C112,0 112,0 112,0 C173.86,0 224,50.14 224,112 C224,112 224,112 224,112 C224,173.86 173.86,224 112,224 C112,224 112,224 112,224 C50.14,224 0,173.86 0,112 C0,112 0,112 0,112 C0,50.14 50.14,0 112,0c " />
+ </group>
+ <group
+ android:name="_R_G_L_1_G"
+ android:translateX="84"
+ android:translateY="84"
+ android:pivotX="28"
+ android:pivotY="28"
+ android:scaleX="4"
+ android:scaleY="4">
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillColor="?attr/colorScStatusWarn"
+ android:fillAlpha="1"
+ android:fillType="nonZero"
+ android:pathData=" M14.5 25.14 C14.53,26.4 14.62,27.66 14.79,28.91 C15.59,34.32 18.62,40.45 26.93,44.74 C27.26,44.91 27.63,45 28,45 C28.37,45 28.74,44.91 29.07,44.74 C37.38,40.45 40.41,34.32 41.21,28.91 C41.38,27.66 41.48,26.4 41.5,25.14 C41.5,25.14 41.5,17.67 41.5,17.67 C41.5,17.1 41.33,16.54 41,16.07 C40.67,15.61 40.21,15.25 39.67,15.06 C39.67,15.06 28.95,11.17 28.95,11.17 C28.34,10.94 27.67,10.94 27.05,11.17 C27.05,11.17 16.33,15.06 16.33,15.06 C15.79,15.25 15.33,15.61 15,16.07 C14.68,16.54 14.5,17.1 14.5,17.67 C14.5,17.67 14.5,25.14 14.5,25.14c " />
+ </group>
+ <group
+ android:name="_R_G_L_0_G"
+ android:translateX="84"
+ android:translateY="84"
+ android:pivotX="28"
+ android:pivotY="28"
+ android:scaleX="4"
+ android:scaleY="4">
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:fillColor="?attr/colorScShieldAccent"
+ android:fillAlpha="0"
+ android:fillType="nonZero"
+ android:pathData=" M22.2 25.82 C22.2,25.82 19.84,28.17 19.84,28.17 C19.84,28.17 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 22.15,25.8 22.15,25.8 C22.15,25.8 22.22,25.82 22.22,25.82 C22.22,25.82 22.2,25.82 22.2,25.82c " />
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+ <target android:name="_R_G_L_2_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="250"
+ 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.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="250"
+ 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.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="517"
+ android:startOffset="250"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="517"
+ android:startOffset="250"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.049,0.562 0,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="fillColor"
+ android:duration="150"
+ android:startOffset="0"
+ android:valueFrom="?attr/colorScStatusWarn"
+ android:valueTo="?attr/colorScStatusWarn"
+ android:valueType="colorType">
+ <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="fillColor"
+ android:duration="167"
+ android:startOffset="150"
+ android:valueFrom="?attr/colorScStatusWarn"
+ android:valueTo="?attr/colorScStatusInfo"
+ android:valueType="colorType">
+ <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">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="150"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="150"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="450"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="450"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,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="17"
+ android:startOffset="0"
+ 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_0_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:propertyName="pathData"
+ android:duration="50"
+ android:startOffset="0"
+ android:valueFrom="M22.2 25.82 C22.2,25.82 19.84,28.17 19.84,28.17 C19.84,28.17 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 22.15,25.8 22.15,25.8 C22.15,25.8 22.22,25.82 22.22,25.82 C22.22,25.82 22.2,25.82 22.2,25.82c "
+ android:valueTo="M27.89 31.53 C27.89,31.53 25.5,33.81 25.5,33.81 C25.5,33.81 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 25.5,29.13 25.5,29.13 C25.5,29.13 25.54,29.17 25.54,29.17 C25.54,29.17 27.89,31.53 27.89,31.53c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="pathData"
+ android:duration="167"
+ android:startOffset="50"
+ android:valueFrom="M27.89 31.53 C27.89,31.53 25.5,33.81 25.5,33.81 C25.5,33.81 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 25.5,29.13 25.5,29.13 C25.5,29.13 25.54,29.17 25.54,29.17 C25.54,29.17 27.89,31.53 27.89,31.53c "
+ android:valueTo="M36.17 23.26 C36.17,23.26 25.5,33.81 25.5,33.81 C25.5,33.81 19.83,28.2 19.83,28.2 C19.83,28.2 22.17,25.83 22.17,25.83 C22.17,25.83 25.5,29.13 25.5,29.13 C25.5,29.13 33.83,20.89 33.83,20.89 C33.83,20.89 36.17,23.26 36.17,23.26c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.29,0 0.739,1 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="150"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="150"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="450"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="450"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,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="767"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+</animated-vector> \ No newline at end of file
diff --git a/PermissionController/res/drawable-v34/status_scanning_end_anim_warn_to_recommend.xml b/PermissionController/res/drawable-v34/status_scanning_end_anim_warn_to_recommend.xml
new file mode 100644
index 000000000..3f06af41e
--- /dev/null
+++ b/PermissionController/res/drawable-v34/status_scanning_end_anim_warn_to_recommend.xml
@@ -0,0 +1,469 @@
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <aapt:attr name="android:drawable">
+ <vector
+ android:height="224dp"
+ android:width="224dp"
+ android:viewportHeight="224"
+ android:viewportWidth="224">
+ <group android:name="_R_G">
+ <group
+ android:name="_R_G_L_3_G"
+ android:pivotX="112"
+ android:pivotY="112"
+ android:scaleX="0"
+ android:scaleY="0">
+ <path
+ android:name="_R_G_L_3_G_D_0_P_0"
+ android:fillColor="?attr/colorScStatusBackgroundRecommend"
+ android:fillAlpha="1"
+ android:fillType="nonZero"
+ android:pathData=" M112 0 C112,0 112,0 112,0 C173.86,0 224,50.14 224,112 C224,112 224,112 224,112 C224,173.86 173.86,224 112,224 C112,224 112,224 112,224 C50.14,224 0,173.86 0,112 C0,112 0,112 0,112 C0,50.14 50.14,0 112,0c " />
+ </group>
+ <group
+ android:name="_R_G_L_2_G"
+ android:translateX="84"
+ android:translateY="84"
+ android:pivotX="28"
+ android:pivotY="28"
+ android:scaleX="4"
+ android:scaleY="4">
+ <path
+ android:name="_R_G_L_2_G_D_0_P_0"
+ android:fillColor="?attr/colorScStatusWarn"
+ android:fillAlpha="1"
+ android:fillType="nonZero"
+ android:pathData=" M14.5 25.14 C14.53,26.4 14.62,27.66 14.79,28.91 C15.59,34.32 18.62,40.45 26.93,44.74 C27.26,44.91 27.63,45 28,45 C28.37,45 28.74,44.91 29.07,44.74 C37.38,40.45 40.41,34.32 41.21,28.91 C41.38,27.66 41.48,26.4 41.5,25.14 C41.5,25.14 41.5,17.67 41.5,17.67 C41.5,17.1 41.33,16.54 41,16.07 C40.67,15.61 40.21,15.25 39.67,15.06 C39.67,15.06 28.95,11.17 28.95,11.17 C28.34,10.94 27.67,10.94 27.05,11.17 C27.05,11.17 16.33,15.06 16.33,15.06 C15.79,15.25 15.33,15.61 15,16.07 C14.68,16.54 14.5,17.1 14.5,17.67 C14.5,17.67 14.5,25.14 14.5,25.14c " />
+ </group>
+ <group
+ android:name="_R_G_L_1_G_N_3_T_0"
+ android:translateX="112"
+ android:translateY="112"
+ android:scaleX="4"
+ android:scaleY="4">
+ <group
+ android:name="_R_G_L_1_G_T_1"
+ android:translateX="0"
+ android:translateY="0">
+ <group
+ android:name="_R_G_L_1_G"
+ android:translateX="-28"
+ android:translateY="-28">
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillColor="@color/sc_shield_accent_fixed_variant"
+ android:fillAlpha="0"
+ android:fillType="nonZero"
+ android:pathData=" M25.92 28.4 C25.92,28.4 25.92,28.4 25.92,28.4 C25.92,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c " />
+ </group>
+ </group>
+ </group>
+ <group
+ android:name="_R_G_L_0_G_N_3_T_0"
+ android:translateX="112"
+ android:translateY="112"
+ android:scaleX="4"
+ android:scaleY="4">
+ <group
+ android:name="_R_G_L_0_G"
+ android:translateX="-28"
+ android:translateY="-28">
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:fillColor="@color/sc_shield_accent_fixed_variant"
+ android:fillAlpha="1"
+ android:fillType="nonZero"
+ android:pathData=" M28.04 33.99 C28.04,33.99 28,33.98 28,33.98 C28,33.98 28.01,33.97 28.01,33.97 C28.01,33.97 28.02,33.98 28.02,33.98 C28.02,33.98 28.04,33.99 28.04,33.99c " />
+ </group>
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+ <target android:name="_R_G_L_3_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="250"
+ 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.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="250"
+ 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.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="517"
+ android:startOffset="250"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="517"
+ android:startOffset="250"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_2_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:propertyName="fillColor"
+ android:duration="150"
+ android:startOffset="0"
+ android:valueFrom="?attr/colorScStatusWarn"
+ android:valueTo="?attr/colorScStatusWarn"
+ android:valueType="colorType">
+ <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="fillColor"
+ android:duration="167"
+ android:startOffset="150"
+ android:valueFrom="?attr/colorScStatusWarn"
+ android:valueTo="?attr/colorScStatusRecommend"
+ android:valueType="colorType">
+ <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_2_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="150"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="150"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="450"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="450"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,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="fillAlpha"
+ android:duration="167"
+ 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="fillAlpha"
+ android:duration="17"
+ android:startOffset="167"
+ 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_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:propertyName="pathData"
+ android:duration="167"
+ android:startOffset="0"
+ android:valueFrom="M25.92 28.4 C25.92,28.4 25.92,28.4 25.92,28.4 C25.92,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueTo="M25.92 28.4 C25.92,28.4 25.92,28.4 25.92,28.4 C25.92,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.3,0 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="pathData"
+ android:duration="250"
+ android:startOffset="167"
+ android:valueFrom="M25.92 28.4 C25.92,28.4 25.92,28.4 25.92,28.4 C25.92,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueTo="M25.92 28.4 C25.92,28.4 25.92,18.4 25.92,18.4 C25.92,18.4 30.09,18.4 30.09,18.4 C30.09,18.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.3,0 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_T_1">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:propertyName="translateXY"
+ android:duration="100"
+ android:startOffset="0"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:pathData="M 0,0C 0,1.553 0,9.32 0,9.32">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.2,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="translateXY"
+ android:duration="317"
+ android:startOffset="100"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:pathData="M 0,9.32C 0,9.32 0,1.553 0,0">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.001,0 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_N_3_T_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="150"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="150"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="450"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="450"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="167"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="167"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,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="283"
+ android:startOffset="0"
+ android:valueFrom="M28.04 33.99 C28.04,33.99 28,33.98 28,33.98 C28,33.98 28.01,33.97 28.01,33.97 C28.01,33.97 28.02,33.98 28.02,33.98 C28.02,33.98 28.04,33.99 28.04,33.99c "
+ android:valueTo="M25.92 36.4 C25.92,36.4 25.92,31.89 25.92,31.89 C25.92,31.89 30.09,31.89 30.09,31.89 C30.09,31.89 30.09,36.4 30.09,36.4 C30.09,36.4 25.92,36.4 25.92,36.4c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.2,0 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_N_3_T_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="150"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="150"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="450"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="450"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="167"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="167"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,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="783"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+</animated-vector> \ No newline at end of file
diff --git a/PermissionController/res/drawable-v34/status_scanning_end_anim_warn_to_warn.xml b/PermissionController/res/drawable-v34/status_scanning_end_anim_warn_to_warn.xml
new file mode 100644
index 000000000..452e7f051
--- /dev/null
+++ b/PermissionController/res/drawable-v34/status_scanning_end_anim_warn_to_warn.xml
@@ -0,0 +1,441 @@
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <target android:name="_R_G_L_3_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="250"
+ android:propertyName="scaleX"
+ 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.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="250"
+ android:propertyName="scaleY"
+ 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.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="517"
+ android:propertyName="scaleX"
+ android:startOffset="250"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="517"
+ android:propertyName="scaleY"
+ android:startOffset="250"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.049,0.562 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_2_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleX"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleY"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.01,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:duration="283"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M28.04 33.99 C28.04,33.99 28,33.98 28,33.98 C28,33.98 28.01,33.97 28.01,33.97 C28.01,33.97 28.02,33.98 28.02,33.98 C28.02,33.98 28.04,33.99 28.04,33.99c "
+ android:valueTo="M25.92 36.4 C25.92,36.4 25.92,31.89 25.92,31.89 C25.92,31.89 30.09,31.89 30.09,31.89 C30.09,31.89 30.09,36.4 30.09,36.4 C30.09,36.4 25.92,36.4 25.92,36.4c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.2,0 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_N_3_T_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleX"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleY"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="scaleX"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="scaleY"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="fillAlpha"
+ 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:duration="17"
+ android:propertyName="fillAlpha"
+ android:startOffset="167"
+ 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_0_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M25.92 28.4 C25.92,28.4 25.92,28.4 25.92,28.4 C25.92,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueTo="M25.92 28.4 C25.92,28.4 25.92,28.4 25.92,28.4 C25.92,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.3,0 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="250"
+ android:propertyName="pathData"
+ android:startOffset="167"
+ android:valueFrom="M25.92 28.4 C25.92,28.4 25.92,28.4 25.92,28.4 C25.92,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueTo="M25.92 28.4 C25.92,28.4 25.92,18.4 25.92,18.4 C25.92,18.4 30.09,18.4 30.09,18.4 C30.09,18.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.3,0 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_T_1">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="100"
+ android:pathData="M 0,0C 0,1.553 0,9.32 0,9.32"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="0">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.2,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="317"
+ android:pathData="M 0,9.32C 0,9.32 0,1.553 0,0"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="100">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.001,0 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_N_3_T_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="4"
+ android:valueTo="3.6"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.8,0 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleX"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleY"
+ android:startOffset="150"
+ android:valueFrom="3.6"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="scaleX"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="scaleY"
+ android:startOffset="600"
+ android:valueFrom="4"
+ android:valueTo="4"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="783"
+ android:propertyName="translateX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <aapt:attr name="android:drawable">
+ <vector
+ android:width="224dp"
+ android:height="224dp"
+ android:viewportHeight="224"
+ android:viewportWidth="224">
+ <group android:name="_R_G">
+ <group
+ android:name="_R_G_L_3_G"
+ android:pivotX="112"
+ android:pivotY="112"
+ android:scaleX="0"
+ android:scaleY="0">
+ <path
+ android:name="_R_G_L_3_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusBackgroundWarn"
+ android:fillType="nonZero"
+ android:pathData=" M112 0 C112,0 112,0 112,0 C173.86,0 224,50.14 224,112 C224,112 224,112 224,112 C224,173.86 173.86,224 112,224 C112,224 112,224 112,224 C50.14,224 0,173.86 0,112 C0,112 0,112 0,112 C0,50.14 50.14,0 112,0c " />
+ </group>
+ <group
+ android:name="_R_G_L_2_G"
+ android:pivotX="28"
+ android:pivotY="28"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="84"
+ android:translateY="84">
+ <path
+ android:name="_R_G_L_2_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusWarn"
+ android:fillType="nonZero"
+ android:pathData=" M14.5 25.14 C14.53,26.4 14.62,27.66 14.79,28.91 C15.59,34.32 18.62,40.45 26.93,44.74 C27.26,44.91 27.63,45 28,45 C28.37,45 28.74,44.91 29.07,44.74 C37.38,40.45 40.41,34.32 41.21,28.91 C41.38,27.66 41.48,26.4 41.5,25.14 C41.5,25.14 41.5,17.67 41.5,17.67 C41.5,17.1 41.33,16.54 41,16.07 C40.67,15.61 40.21,15.25 39.67,15.06 C39.67,15.06 28.95,11.17 28.95,11.17 C28.34,10.94 27.67,10.94 27.05,11.17 C27.05,11.17 16.33,15.06 16.33,15.06 C15.79,15.25 15.33,15.61 15,16.07 C14.68,16.54 14.5,17.1 14.5,17.67 C14.5,17.67 14.5,25.14 14.5,25.14c " />
+ </group>
+ <group
+ android:name="_R_G_L_1_G_N_3_T_0"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="112"
+ android:translateY="112">
+ <group
+ android:name="_R_G_L_1_G"
+ android:translateX="-28"
+ android:translateY="-28">
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScShieldAccent"
+ android:fillType="nonZero"
+ android:pathData=" M28.04 33.99 C28.04,33.99 28,33.98 28,33.98 C28,33.98 28.01,33.97 28.01,33.97 C28.01,33.97 28.02,33.98 28.02,33.98 C28.02,33.98 28.04,33.99 28.04,33.99c " />
+ </group>
+ </group>
+ <group
+ android:name="_R_G_L_0_G_N_3_T_0"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="112"
+ android:translateY="112">
+ <group
+ android:name="_R_G_L_0_G_T_1"
+ android:translateX="0"
+ android:translateY="0">
+ <group
+ android:name="_R_G_L_0_G"
+ android:translateX="-28"
+ android:translateY="-28">
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:fillAlpha="0"
+ android:fillColor="?attr/colorScShieldAccent"
+ android:fillType="nonZero"
+ android:pathData=" M25.92 28.4 C25.92,28.4 25.92,28.4 25.92,28.4 C25.92,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c " />
+ </group>
+ </group>
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+</animated-vector> \ No newline at end of file
diff --git a/PermissionController/res/drawable-v34/status_warn_to_scanning_anim.xml b/PermissionController/res/drawable-v34/status_warn_to_scanning_anim.xml
new file mode 100644
index 000000000..e45618632
--- /dev/null
+++ b/PermissionController/res/drawable-v34/status_warn_to_scanning_anim.xml
@@ -0,0 +1,225 @@
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <target android:name="_R_G_L_3_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="333"
+ android:propertyName="fillAlpha"
+ android:startOffset="0"
+ 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>
+ <objectAnimator
+ android:duration="17"
+ android:propertyName="fillAlpha"
+ android:startOffset="333"
+ 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>
+ </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:duration="150"
+ android:propertyName="fillAlpha"
+ 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:duration="17"
+ android:propertyName="fillAlpha"
+ android:startOffset="150"
+ 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_1_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M25.92 28.4 C25.92,28.4 25.92,18.4 25.92,18.4 C25.92,18.4 30.09,18.4 30.09,18.4 C30.09,18.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueTo="M25.92 28.4 C25.92,28.4 25.89,28.4 25.89,28.4 C25.89,28.4 30.06,28.4 30.06,28.4 C30.06,28.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.18,0 0.043,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_T_1">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="117"
+ android:pathData="M 112,112C 112,117.19200000000001 112,137.958 112,143.15"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="0">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.2,0 0,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="fillAlpha"
+ 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:duration="17"
+ android:propertyName="fillAlpha"
+ android:startOffset="133"
+ 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_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M25.92 36.4 C25.92,36.4 25.92,31.89 25.92,31.89 C25.92,31.89 30.09,31.89 30.09,31.89 C30.09,31.89 30.09,36.4 30.09,36.4 C30.09,36.4 25.92,36.4 25.92,36.4c "
+ android:valueTo="M25.92 36.4 C25.92,36.4 25.94,36.39 25.94,36.39 C25.94,36.39 30.11,36.39 30.11,36.39 C30.11,36.39 30.09,36.4 30.09,36.4 C30.09,36.4 25.92,36.4 25.92,36.4c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.989,0 0.789,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator
+ android:duration="350"
+ android:propertyName="translateX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <aapt:attr name="android:drawable">
+ <vector
+ android:width="224dp"
+ android:height="224dp"
+ android:viewportHeight="224"
+ android:viewportWidth="224">
+ <group android:name="_R_G">
+ <group
+ android:name="_R_G_L_3_G"
+ android:pivotX="28"
+ android:pivotY="28"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="84"
+ android:translateY="84">
+ <path
+ android:name="_R_G_L_3_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusBackgroundWarn"
+ android:fillType="nonZero"
+ android:pathData=" M28 0 C28,0 28,0 28,0 C43.46,0 56,12.54 56,28 C56,28 56,28 56,28 C56,43.46 43.46,56 28,56 C28,56 28,56 28,56 C12.54,56 0,43.46 0,28 C0,28 0,28 0,28 C0,12.54 12.54,0 28,0c " />
+ </group>
+ <group
+ android:name="_R_G_L_2_G"
+ android:pivotX="28"
+ android:pivotY="28"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="84"
+ android:translateY="84">
+ <path
+ android:name="_R_G_L_2_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScStatusWarn"
+ android:fillType="nonZero"
+ android:pathData=" M14.5 25.14 C14.53,26.4 14.62,27.66 14.79,28.91 C15.59,34.32 18.62,40.45 26.93,44.74 C27.26,44.91 27.63,45 28,45 C28.37,45 28.74,44.91 29.07,44.74 C37.38,40.45 40.41,34.32 41.21,28.91 C41.38,27.66 41.48,26.4 41.5,25.14 C41.5,25.14 41.5,17.67 41.5,17.67 C41.5,17.1 41.33,16.54 41,16.07 C40.67,15.61 40.21,15.25 39.67,15.06 C39.67,15.06 28.95,11.17 28.95,11.17 C28.34,10.94 27.67,10.94 27.05,11.17 C27.05,11.17 16.33,15.06 16.33,15.06 C15.79,15.25 15.33,15.61 15,16.07 C14.68,16.54 14.5,17.1 14.5,17.67 C14.5,17.67 14.5,25.14 14.5,25.14c " />
+ </group>
+ <group
+ android:name="_R_G_L_1_G_T_1"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="112"
+ android:translateY="112">
+ <group
+ android:name="_R_G_L_1_G"
+ android:translateX="-28"
+ android:translateY="-28">
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScShieldAccent"
+ android:fillType="nonZero"
+ android:pathData=" M25.92 28.4 C25.92,28.4 25.92,18.4 25.92,18.4 C25.92,18.4 30.09,18.4 30.09,18.4 C30.09,18.4 30.09,28.4 30.09,28.4 C30.09,28.4 25.92,28.4 25.92,28.4c " />
+ </group>
+ </group>
+ <group
+ android:name="_R_G_L_0_G"
+ android:pivotX="28"
+ android:pivotY="28"
+ android:scaleX="4"
+ android:scaleY="4"
+ android:translateX="84"
+ android:translateY="84">
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="?attr/colorScShieldAccent"
+ android:fillType="nonZero"
+ android:pathData=" M25.92 36.4 C25.92,36.4 25.92,31.89 25.92,31.89 C25.92,31.89 30.09,31.89 30.09,31.89 C30.09,31.89 30.09,36.4 30.09,36.4 C30.09,36.4 25.92,36.4 25.92,36.4c " />
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+</animated-vector> \ No newline at end of file
diff --git a/PermissionController/res/values-night-v33/themes.xml b/PermissionController/res/values-night-v33/themes.xml
index 315788465..7a82145c6 100644
--- a/PermissionController/res/values-night-v33/themes.xml
+++ b/PermissionController/res/values-night-v33/themes.xml
@@ -16,38 +16,8 @@
-->
<resources>
- <style name="Theme.SafetyCenterQs" parent="@android:style/Theme.DeviceDefault.NoActionBar">
- <item name="android:filterTouchesWhenObscured">true</item>
- <!-- Safety Center Quick Settings uses dark mode resources -->
- <item name="colorSurface">@color/sc_surface_dark</item>
- <item name="colorSurfaceVariant">@color/sc_surface_variant_dark</item>
- <item name="colorAccentPrimary">@color/sc_accent_primary_dark</item>
-
- <item name="colorScStatusInfo">@color/gm_green_500</item>
- <item name="colorScStatusRecommend">@color/gm_yellow_500</item>
- <item name="colorScStatusWarn">@color/gm_red_500</item>
-
- <item name="colorScStatusBackgroundInfo">?attr/colorSurfaceVariant</item>
- <item name="colorScStatusBackgroundRecommend">?attr/colorSurfaceVariant</item>
- <item name="colorScStatusBackgroundWarn">?attr/colorSurfaceVariant</item>
-
- <item name="textColorScActionButton">@android:color/black</item>
- <item name="textColorScSecondaryActionButton">?android:attr/textColorPrimary</item>
-
- <item name="colorScIconInfo">@color/gm_green_500</item>
- <item name="colorScIconRecommend">@color/gm_yellow_500</item>
- <item name="colorScIconWarn">@color/gm_red_500</item>
- <item name="colorScIconNull">@color/gm_grey_600</item>
-
- <!-- Buttons -->
- <item name="scActionButtonStyle">@style/SafetyCenterActionButton</item>
- <item name="scSecondaryActionButtonStyle">@style/SafetyCenterActionButton.Secondary</item>
-
- <item name="colorScShieldAccent">@color/sc_shield_accent</item>
- </style>
-
- <style name="Theme.SafetyCenter" parent="Theme.PermissionController.Settings.FilterTouches">
+ <style name="Theme.SafetyCenterBase" parent="Theme.PermissionController.Settings.FilterTouches">
<item name="colorSurface">@color/sc_surface_dark</item>
<item name="colorSurfaceVariant">@color/sc_surface_variant_dark</item>
<item name="colorAccentPrimary">@color/sc_accent_primary_dark</item>
diff --git a/PermissionController/res/values-night-v34/themes.xml b/PermissionController/res/values-night-v34/themes.xml
index 4d387b43d..b6328d782 100644
--- a/PermissionController/res/values-night-v34/themes.xml
+++ b/PermissionController/res/values-night-v34/themes.xml
@@ -20,4 +20,8 @@
parent="@android:style/Theme.DeviceDefault.Dialog">
<item name="android:colorBackground">@color/google_grey_800</item>
</style>
+
+ <style name="Theme.SafetyCenter" parent="Theme.SafetyCenterBase">
+ <item name="colorScShieldAccent">@color/sc_shield_accent_dark</item>
+ </style>
</resources> \ No newline at end of file
diff --git a/PermissionController/res/values-v33/colors.xml b/PermissionController/res/values-v33/colors.xml
index 79367eac2..ae20045f6 100644
--- a/PermissionController/res/values-v33/colors.xml
+++ b/PermissionController/res/values-v33/colors.xml
@@ -54,4 +54,4 @@
<color name="safety_center_recommend">@color/gm_yellow_500</color>
<color name="safety_center_warn">@color/gm_red_500</color>
-</resources> \ No newline at end of file
+</resources>
diff --git a/PermissionController/res/values-v33/themes.xml b/PermissionController/res/values-v33/themes.xml
index eae3bdd54..4cd9e81e2 100644
--- a/PermissionController/res/values-v33/themes.xml
+++ b/PermissionController/res/values-v33/themes.xml
@@ -16,7 +16,7 @@
-->
<resources>
- <style name="Theme.SafetyCenterQs" parent="@android:style/Theme.DeviceDefault.NoActionBar">
+ <style name="Theme.SafetyCenterQsBase" parent="@android:style/Theme.DeviceDefault.NoActionBar">
<item name="android:filterTouchesWhenObscured">true</item>
<!-- Safety Center Quick Settings uses dark mode resources -->
@@ -48,7 +48,9 @@
<item name="colorScShieldAccent">@color/sc_shield_accent</item>
</style>
- <style name="Theme.SafetyCenter" parent="Theme.PermissionController.Settings.FilterTouches">
+ <style name="Theme.SafetyCenterQs" parent="Theme.SafetyCenterQsBase" />
+
+ <style name="Theme.SafetyCenterBase" parent="Theme.PermissionController.Settings.FilterTouches">
<item name="colorSurface">@color/sc_surface_light</item>
<item name="colorSurfaceVariant">@color/sc_surface_variant_light</item>
<item name="colorAccentPrimary">@color/sc_accent_primary_light</item>
@@ -75,4 +77,6 @@
<item name="colorScShieldAccent">@color/sc_shield_accent</item>
</style>
+
+ <style name="Theme.SafetyCenter" parent="Theme.SafetyCenterBase" />
</resources> \ No newline at end of file
diff --git a/PermissionController/res/values-v34/colors.xml b/PermissionController/res/values-v34/colors.xml
index 351d73f2a..8f7603ce0 100644
--- a/PermissionController/res/values-v34/colors.xml
+++ b/PermissionController/res/values-v34/colors.xml
@@ -29,4 +29,8 @@
<color name="sc_accent_primary_dark">@android:color/system_primary_dark</color>
<color name="sc_qs_background_color">@android:color/system_surface_container_dark</color>
+
+ <color name="sc_shield_accent_dark">@color/gm_grey_900</color>
+ <color name="sc_shield_accent_fixed_variant">@color/sc_shield_accent_dark</color>
+ <color name="gm_grey_900">#202124</color>
</resources>
diff --git a/PermissionController/res/values-v34/themes.xml b/PermissionController/res/values-v34/themes.xml
index 6b813a28e..9ada38ed3 100644
--- a/PermissionController/res/values-v34/themes.xml
+++ b/PermissionController/res/values-v34/themes.xml
@@ -19,4 +19,12 @@
<style name="Theme.PermissionRationaleDialog"
parent="@android:style/Theme.DeviceDefault.Light.Dialog">
</style>
+
+ <style name="Theme.SafetyCenter" parent="Theme.SafetyCenterBase">
+ <item name="colorScShieldAccent">@color/sc_shield_accent</item>
+ </style>
+
+ <style name="Theme.SafetyCenterQs" parent="Theme.SafetyCenterQsBase">
+ <item name="colorScShieldAccent">@color/sc_shield_accent_dark</item>
+ </style>
</resources> \ No newline at end of file
diff --git a/PermissionController/res/values/overlayable.xml b/PermissionController/res/values/overlayable.xml
index bf145883c..79b7b92a6 100644
--- a/PermissionController/res/values/overlayable.xml
+++ b/PermissionController/res/values/overlayable.xml
@@ -414,6 +414,8 @@
<item type="color" name="sc_accent_primary_light" />
<item type="color" name="sc_accent_primary_dark" />
<item type="color" name="sc_shield_accent" />
+ <item type="color" name="sc_shield_accent_dark" />
+ <item type="color" name="sc_shield_accent_fixed_variant" />
<item type="color" name="safety_center_info" />
<item type="color" name="safety_center_recommend" />
<item type="color" name="safety_center_warn" />
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionFragment.java
index 946484626..cab0de15e 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionFragment.java
@@ -196,9 +196,6 @@ public class AppPermissionFragment extends SettingsWithLargeHeader
getActivity().getApplication(), mPackageName, mPermGroupName, mUser, mSessionId);
mViewModel = new ViewModelProvider(this, factory).get(AppPermissionViewModel.class);
Handler delayHandler = new Handler(Looper.getMainLooper());
- mViewModel.getShowPermissionRationaleLiveData().observe(this, show -> {
- showPermissionRationaleDialog(Optional.ofNullable(show).orElse(false));
- });
mViewModel.getButtonStateLiveData().observe(this, buttonState -> {
if (mIsInitialLoad) {
setRadioButtonsState(buttonState);
@@ -295,6 +292,9 @@ public class AppPermissionFragment extends SettingsWithLargeHeader
root.requireViewById(R.id.app_permission_rationale_container);
mAppPermissionRationaleContent =
root.requireViewById(R.id.app_permission_rationale_content);
+ mViewModel.getShowPermissionRationaleLiveData().observe(this, show -> {
+ showPermissionRationaleDialog(Optional.ofNullable(show).orElse(false));
+ });
getActivity().setTitle(
getPreferenceManager().getContext().getString(R.string.app_permission_title,
diff --git a/PermissionController/src/com/android/permissioncontroller/safetylabel/AppsSafetyLabelHistoryPersistence.kt b/PermissionController/src/com/android/permissioncontroller/safetylabel/AppsSafetyLabelHistoryPersistence.kt
index 24fb90cbb..9bb7e819f 100644
--- a/PermissionController/src/com/android/permissioncontroller/safetylabel/AppsSafetyLabelHistoryPersistence.kt
+++ b/PermissionController/src/com/android/permissioncontroller/safetylabel/AppsSafetyLabelHistoryPersistence.kt
@@ -67,12 +67,12 @@ object AppsSafetyLabelHistoryPersistence {
/** Adds a listener to listen for changes to persisted safety labels. */
fun addListener(listener: ChangeListener) {
- listeners.add(listener)
+ synchronized(readWriteLock) { listeners.add(listener) }
}
/** Removes a listener from listening for changes to persisted safety labels. */
fun removeListener(listener: ChangeListener) {
- listeners.remove(listener)
+ synchronized(readWriteLock) { listeners.remove(listener) }
}
/**
@@ -101,18 +101,20 @@ object AppsSafetyLabelHistoryPersistence {
/** Returns the last updated time for each stored [AppSafetyLabelHistory]. */
fun getSafetyLabelsLastUpdatedTimes(file: File): Map<AppInfo, Instant> {
- val appHistories =
- read(file).appsSafetyLabelHistory?.appSafetyLabelHistories ?: return emptyMap()
-
- val lastUpdatedTimes = mutableMapOf<AppInfo, Instant>()
- for (appHistory in appHistories) {
- val lastSafetyLabelReceiptTime: Instant? = appHistory.getLastReceiptTime()
- if (lastSafetyLabelReceiptTime != null) {
- lastUpdatedTimes[appHistory.appInfo] = lastSafetyLabelReceiptTime
+ synchronized(readWriteLock) {
+ val appHistories =
+ read(file).appsSafetyLabelHistory?.appSafetyLabelHistories ?: return emptyMap()
+
+ val lastUpdatedTimes = mutableMapOf<AppInfo, Instant>()
+ for (appHistory in appHistories) {
+ val lastSafetyLabelReceiptTime: Instant? = appHistory.getLastReceiptTime()
+ if (lastSafetyLabelReceiptTime != null) {
+ lastUpdatedTimes[appHistory.appInfo] = lastSafetyLabelReceiptTime
+ }
}
- }
- return lastUpdatedTimes
+ return lastUpdatedTimes
+ }
}
/**
@@ -149,6 +151,8 @@ object AppsSafetyLabelHistoryPersistence {
* from the last recorded (when considered in order of [SafetyLabel.receivedAt]).
*/
fun recordSafetyLabels(safetyLabelsToAdd: Set<SafetyLabel>, file: File) {
+ if (safetyLabelsToAdd.isEmpty()) return
+
synchronized(readWriteLock) {
val currentAppsSafetyLabelHistory =
read(file).appsSafetyLabelHistory ?: AppsSafetyLabelHistory(listOf())
@@ -190,6 +194,8 @@ object AppsSafetyLabelHistoryPersistence {
/** Deletes stored safety labels for all apps in [appInfosToRemove]. */
fun deleteSafetyLabelsForApps(appInfosToRemove: Set<AppInfo>, file: File) {
+ if (appInfosToRemove.isEmpty()) return
+
synchronized(readWriteLock) {
val currentAppsSafetyLabelHistory =
read(file).appsSafetyLabelHistory ?: AppsSafetyLabelHistory(listOf())
diff --git a/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/safetylabel/AppsSafetyLabelHistoryPersistenceTest.kt b/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/safetylabel/AppsSafetyLabelHistoryPersistenceTest.kt
index f853560fd..10221f6fa 100644
--- a/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/safetylabel/AppsSafetyLabelHistoryPersistenceTest.kt
+++ b/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/safetylabel/AppsSafetyLabelHistoryPersistenceTest.kt
@@ -27,15 +27,26 @@ import com.android.permissioncontroller.safetylabel.AppsSafetyLabelHistory
import com.android.permissioncontroller.safetylabel.AppsSafetyLabelHistory.AppInfo
import com.android.permissioncontroller.safetylabel.AppsSafetyLabelHistory.AppSafetyLabelDiff
import com.android.permissioncontroller.safetylabel.AppsSafetyLabelHistory.AppSafetyLabelHistory
-import com.android.permissioncontroller.safetylabel.AppsSafetyLabelHistory.DataCategory
-import com.android.permissioncontroller.safetylabel.AppsSafetyLabelHistory.DataLabel
-import com.android.permissioncontroller.safetylabel.AppsSafetyLabelHistory.SafetyLabel
import com.android.permissioncontroller.safetylabel.AppsSafetyLabelHistoryPersistence
import com.android.permissioncontroller.safetylabel.AppsSafetyLabelHistoryPersistence.AppsSafetyLabelHistoryFileContent
import com.android.permissioncontroller.safetylabel.AppsSafetyLabelHistoryPersistence.ChangeListener
+import com.android.permissioncontroller.tests.mocking.safetylabel.TestSafetyLabels.DATE_2022_10_10
+import com.android.permissioncontroller.tests.mocking.safetylabel.TestSafetyLabels.DATE_2022_10_12
+import com.android.permissioncontroller.tests.mocking.safetylabel.TestSafetyLabels.DATE_2022_10_14
+import com.android.permissioncontroller.tests.mocking.safetylabel.TestSafetyLabels.DATE_2022_12_10
+import com.android.permissioncontroller.tests.mocking.safetylabel.TestSafetyLabels.DATE_2022_12_30
+import com.android.permissioncontroller.tests.mocking.safetylabel.TestSafetyLabels.PACKAGE_NAME_1
+import com.android.permissioncontroller.tests.mocking.safetylabel.TestSafetyLabels.PACKAGE_NAME_2
+import com.android.permissioncontroller.tests.mocking.safetylabel.TestSafetyLabels.PACKAGE_NAME_3
+import com.android.permissioncontroller.tests.mocking.safetylabel.TestSafetyLabels.SAFETY_LABEL_PKG_1_V1
+import com.android.permissioncontroller.tests.mocking.safetylabel.TestSafetyLabels.SAFETY_LABEL_PKG_1_V2
+import com.android.permissioncontroller.tests.mocking.safetylabel.TestSafetyLabels.SAFETY_LABEL_PKG_1_V3
+import com.android.permissioncontroller.tests.mocking.safetylabel.TestSafetyLabels.SAFETY_LABEL_PKG_2_V1
+import com.android.permissioncontroller.tests.mocking.safetylabel.TestSafetyLabels.SAFETY_LABEL_PKG_2_V2
+import com.android.permissioncontroller.tests.mocking.safetylabel.TestSafetyLabels.SAFETY_LABEL_PKG_2_V3
+import com.android.permissioncontroller.tests.mocking.safetylabel.TestSafetyLabels.SAFETY_LABEL_PKG_3_V1
import com.google.common.truth.Truth.assertThat
import java.io.File
-import java.time.ZonedDateTime
import org.junit.After
import org.junit.Before
import org.junit.Test
@@ -323,6 +334,23 @@ class AppsSafetyLabelHistoryPersistenceTest {
}
@Test
+ fun getAppSafetyLabelDiffs_whenNoSafetyLabelsBeforeStartTime_returnsMoreRecentDiffs() {
+ val appsSafetyLabelHistory =
+ AppsSafetyLabelHistory(
+ listOf(
+ AppSafetyLabelHistory(
+ AppInfo(PACKAGE_NAME_2),
+ listOf(SAFETY_LABEL_PKG_2_V2, SAFETY_LABEL_PKG_2_V3))))
+ AppsSafetyLabelHistoryPersistence.write(dataFile, appsSafetyLabelHistory)
+
+ val safetyLabelDiffs: List<AppSafetyLabelDiff> =
+ AppsSafetyLabelHistoryPersistence.getAppSafetyLabelDiffs(DATE_2022_10_10, dataFile)
+
+ assertThat(safetyLabelDiffs)
+ .isEqualTo(listOf(AppSafetyLabelDiff(SAFETY_LABEL_PKG_2_V2, SAFETY_LABEL_PKG_2_V3)))
+ }
+
+ @Test
fun getAppSafetyLabelDiffs_returnsAvailableDiffs() {
val appsSafetyLabelHistory =
AppsSafetyLabelHistory(
@@ -347,7 +375,7 @@ class AppsSafetyLabelHistoryPersistenceTest {
}
@Test
- fun givenNoAppsPersisted_getSafetyLabelsLastUpdatedTimes_returnsEmptyMap() {
+ fun getSafetyLabelsLastUpdatedTimes_noAppsPersisted_returnsEmptyMap() {
val lastUpdatedTimes =
AppsSafetyLabelHistoryPersistence.getSafetyLabelsLastUpdatedTimes(dataFile)
@@ -355,7 +383,7 @@ class AppsSafetyLabelHistoryPersistenceTest {
}
@Test
- fun givenSomeAppsPersisted_getSafetyLabelsLastUpdatedTimes_returnsLastUpdatedTimes() {
+ fun getSafetyLabelsLastUpdatedTimes_appsPersisted_returnsLastUpdatedTimes() {
val appsSafetyLabelHistory =
AppsSafetyLabelHistory(
listOf(
@@ -494,60 +522,6 @@ class AppsSafetyLabelHistoryPersistenceTest {
companion object {
private const val TEST_FILE_NAME = "test_safety_label_history_file"
- private const val PACKAGE_NAME_1 = "package_name_1"
- private const val PACKAGE_NAME_2 = "package_name_2"
- private const val PACKAGE_NAME_3 = "package_name_3"
- private const val LOCATION_CATEGORY = "location"
- private const val FINANCIAL_CATEGORY = "financial"
- private val DATE_2022_09_01 = ZonedDateTime.parse("2022-09-01T00:00:00.000Z").toInstant()
- private val DATE_2022_10_10 = ZonedDateTime.parse("2022-10-10T00:00:00.000Z").toInstant()
- private val DATE_2022_10_12 = ZonedDateTime.parse("2022-10-12T00:00:00.000Z").toInstant()
- private val DATE_2022_10_14 = ZonedDateTime.parse("2022-10-14T00:00:00.000Z").toInstant()
- private val DATE_2022_12_10 = ZonedDateTime.parse("2022-12-10T00:00:00.000Z").toInstant()
- private val DATE_2022_12_30 = ZonedDateTime.parse("2022-12-30T00:00:00.000Z").toInstant()
-
- private val SAFETY_LABEL_PKG_1_V1 =
- SafetyLabel(
- AppInfo(PACKAGE_NAME_1),
- DATE_2022_09_01,
- DataLabel(mapOf(LOCATION_CATEGORY to DataCategory(true))))
-
- private val SAFETY_LABEL_PKG_1_V2 =
- SafetyLabel(
- AppInfo(PACKAGE_NAME_1),
- DATE_2022_10_14,
- DataLabel(mapOf(LOCATION_CATEGORY to DataCategory(false))))
-
- private val SAFETY_LABEL_PKG_1_V3 =
- SafetyLabel(
- AppInfo(PACKAGE_NAME_1),
- DATE_2022_12_10,
- DataLabel(mapOf(LOCATION_CATEGORY to DataCategory(false))))
-
- private val SAFETY_LABEL_PKG_2_V1 =
- SafetyLabel(
- AppInfo(PACKAGE_NAME_2),
- DATE_2022_10_10,
- DataLabel(
- mapOf(
- LOCATION_CATEGORY to DataCategory(true),
- FINANCIAL_CATEGORY to DataCategory(false))))
-
- private val SAFETY_LABEL_PKG_2_V2 =
- SafetyLabel(AppInfo(PACKAGE_NAME_2), DATE_2022_12_10, DataLabel(mapOf()))
-
- private val SAFETY_LABEL_PKG_2_V3 =
- SafetyLabel(
- AppInfo(PACKAGE_NAME_2),
- DATE_2022_12_30,
- DataLabel(mapOf(FINANCIAL_CATEGORY to DataCategory(true))))
-
- private val SAFETY_LABEL_PKG_3_V1 =
- SafetyLabel(
- AppInfo(PACKAGE_NAME_3),
- DATE_2022_10_10,
- DataLabel(mapOf(LOCATION_CATEGORY to DataCategory(true))))
-
private const val PROPERTY_MAX_SAFETY_LABELS_PERSISTED_PER_APP =
"max_safety_labels_persisted_per_app"
diff --git a/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/safetylabel/AppsSafetyLabelHistoryTest.kt b/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/safetylabel/AppsSafetyLabelHistoryTest.kt
index 48891e9c7..dedb0b1cd 100644
--- a/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/safetylabel/AppsSafetyLabelHistoryTest.kt
+++ b/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/safetylabel/AppsSafetyLabelHistoryTest.kt
@@ -23,16 +23,80 @@ import com.android.permission.safetylabel.SafetyLabel as AppMetadataSafetyLabel
import com.android.permission.safetylabel.SafetyLabel.KEY_VERSION
import com.android.permissioncontroller.safetylabel.AppsSafetyLabelHistory
import com.android.permissioncontroller.safetylabel.AppsSafetyLabelHistory.AppInfo
+import com.android.permissioncontroller.safetylabel.AppsSafetyLabelHistory.AppSafetyLabelHistory
import com.android.permissioncontroller.safetylabel.AppsSafetyLabelHistory.DataCategory
import com.android.permissioncontroller.safetylabel.AppsSafetyLabelHistory.DataLabel
import com.android.permissioncontroller.safetylabel.AppsSafetyLabelHistory.SafetyLabel
+import com.android.permissioncontroller.tests.mocking.safetylabel.TestSafetyLabels.DATE_2022_09_01
+import com.android.permissioncontroller.tests.mocking.safetylabel.TestSafetyLabels.DATE_2022_10_10
+import com.android.permissioncontroller.tests.mocking.safetylabel.TestSafetyLabels.LOCATION_CATEGORY
+import com.android.permissioncontroller.tests.mocking.safetylabel.TestSafetyLabels.PACKAGE_NAME_1
+import com.android.permissioncontroller.tests.mocking.safetylabel.TestSafetyLabels.PACKAGE_NAME_2
+import com.android.permissioncontroller.tests.mocking.safetylabel.TestSafetyLabels.SAFETY_LABEL_PKG_1_V1
+import com.android.permissioncontroller.tests.mocking.safetylabel.TestSafetyLabels.SAFETY_LABEL_PKG_1_V2
+import com.android.permissioncontroller.tests.mocking.safetylabel.TestSafetyLabels.SAFETY_LABEL_PKG_1_V3
+import com.android.permissioncontroller.tests.mocking.safetylabel.TestSafetyLabels.SAFETY_LABEL_PKG_2_V1
import com.google.common.truth.Truth.assertThat
import java.time.ZonedDateTime
+import org.junit.Assert
import org.junit.Test
/** Tests for [AppsSafetyLabelHistory]. */
@SdkSuppress(minSdkVersion = Build.VERSION_CODES.UPSIDE_DOWN_CAKE, codeName = "UpsideDownCake")
class AppsSafetyLabelHistoryTest {
+
+ @Test
+ fun createAppSafetyLabelHistory_requiresAllSafetyLabelsHaveSameApp() {
+ Assert.assertThrows(IllegalArgumentException::class.java) {
+ AppSafetyLabelHistory(
+ AppInfo(PACKAGE_NAME_1), listOf(SAFETY_LABEL_PKG_1_V1, SAFETY_LABEL_PKG_2_V1))
+ }
+ }
+
+ @Test
+ fun createAppSafetyLabelHistory_requiresOrderedByReceivedAt() {
+ Assert.assertThrows(IllegalArgumentException::class.java) {
+ AppSafetyLabelHistory(
+ AppInfo(PACKAGE_NAME_1), listOf(SAFETY_LABEL_PKG_1_V2, SAFETY_LABEL_PKG_1_V1))
+ }
+ }
+
+ @Test
+ fun withSafetyLabel_forDifferentApp_throwsIllegalArgumentException() {
+ val appSafetyLabelHistory =
+ AppSafetyLabelHistory(
+ AppInfo(PACKAGE_NAME_1), listOf(SAFETY_LABEL_PKG_1_V1, SAFETY_LABEL_PKG_1_V3))
+
+ Assert.assertThrows(IllegalArgumentException::class.java) {
+ appSafetyLabelHistory.withSafetyLabel(SAFETY_LABEL_PKG_2_V1, 20)
+ }
+ }
+
+ @Test
+ fun withSafetyLabel_returnsOrderdSafetyLabels() {
+ val appSafetyLabelHistory =
+ AppSafetyLabelHistory(
+ AppInfo(PACKAGE_NAME_1), listOf(SAFETY_LABEL_PKG_1_V1, SAFETY_LABEL_PKG_1_V3))
+
+ assertThat(appSafetyLabelHistory.withSafetyLabel(SAFETY_LABEL_PKG_1_V2, 20))
+ .isEqualTo(
+ AppSafetyLabelHistory(
+ AppInfo(PACKAGE_NAME_1),
+ listOf(SAFETY_LABEL_PKG_1_V1, SAFETY_LABEL_PKG_1_V2, SAFETY_LABEL_PKG_1_V3)))
+ }
+
+ @Test
+ fun withSafetyLabel_dropsOldLabelsWhenMaxPersisted() {
+ val appSafetyLabelHistory =
+ AppSafetyLabelHistory(
+ AppInfo(PACKAGE_NAME_1), listOf(SAFETY_LABEL_PKG_1_V1, SAFETY_LABEL_PKG_1_V3))
+
+ assertThat(appSafetyLabelHistory.withSafetyLabel(SAFETY_LABEL_PKG_1_V2, 2))
+ .isEqualTo(
+ AppSafetyLabelHistory(
+ AppInfo(PACKAGE_NAME_1), listOf(SAFETY_LABEL_PKG_1_V2, SAFETY_LABEL_PKG_1_V3)))
+ }
+
@Test
fun extractLocationSharingSafetyLabel_noSharing_returnsSafetyLabelForPersistence() {
val metadataBundle = createMetadataWithDataShared(createDataSharedNoSharing())
diff --git a/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/safetylabel/TestSafetyLabels.kt b/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/safetylabel/TestSafetyLabels.kt
new file mode 100644
index 000000000..19c5adddd
--- /dev/null
+++ b/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/safetylabel/TestSafetyLabels.kt
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2023 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.permissioncontroller.tests.mocking.safetylabel
+
+import com.android.permissioncontroller.safetylabel.AppsSafetyLabelHistory.AppInfo
+import com.android.permissioncontroller.safetylabel.AppsSafetyLabelHistory.DataCategory
+import com.android.permissioncontroller.safetylabel.AppsSafetyLabelHistory.DataLabel
+import com.android.permissioncontroller.safetylabel.AppsSafetyLabelHistory.SafetyLabel
+import java.time.Instant
+import java.time.ZonedDateTime
+
+/** Safety labels to be used in tests. */
+object TestSafetyLabels {
+ const val PACKAGE_NAME_1 = "package_name_1"
+ const val PACKAGE_NAME_2 = "package_name_2"
+ const val PACKAGE_NAME_3 = "package_name_3"
+ const val LOCATION_CATEGORY = "location"
+ const val FINANCIAL_CATEGORY = "financial"
+ val DATE_2022_09_01: Instant = ZonedDateTime.parse("2022-09-01T00:00:00.000Z").toInstant()
+ val DATE_2022_10_10: Instant = ZonedDateTime.parse("2022-10-10T00:00:00.000Z").toInstant()
+ val DATE_2022_10_12: Instant = ZonedDateTime.parse("2022-10-12T00:00:00.000Z").toInstant()
+ val DATE_2022_10_14: Instant = ZonedDateTime.parse("2022-10-14T00:00:00.000Z").toInstant()
+ val DATE_2022_12_10: Instant = ZonedDateTime.parse("2022-12-10T00:00:00.000Z").toInstant()
+ val DATE_2022_12_30: Instant = ZonedDateTime.parse("2022-12-30T00:00:00.000Z").toInstant()
+
+ /** A Safety label for [PACKAGE_NAME_1]. */
+ val SAFETY_LABEL_PKG_1_V1: SafetyLabel =
+ SafetyLabel(
+ AppInfo(PACKAGE_NAME_1),
+ DATE_2022_09_01,
+ DataLabel(mapOf(LOCATION_CATEGORY to DataCategory(true))))
+
+ /** A Safety label for [PACKAGE_NAME_1]. */
+ val SAFETY_LABEL_PKG_1_V2: SafetyLabel =
+ SafetyLabel(
+ AppInfo(PACKAGE_NAME_1),
+ DATE_2022_10_14,
+ DataLabel(mapOf(LOCATION_CATEGORY to DataCategory(false))))
+
+ /** A Safety label for [PACKAGE_NAME_1]. */
+ val SAFETY_LABEL_PKG_1_V3: SafetyLabel =
+ SafetyLabel(
+ AppInfo(PACKAGE_NAME_1),
+ DATE_2022_12_10,
+ DataLabel(mapOf(LOCATION_CATEGORY to DataCategory(false))))
+
+ /** A Safety label for [PACKAGE_NAME_2]. */
+ val SAFETY_LABEL_PKG_2_V1: SafetyLabel =
+ SafetyLabel(
+ AppInfo(PACKAGE_NAME_2),
+ DATE_2022_10_10,
+ DataLabel(
+ mapOf(
+ LOCATION_CATEGORY to DataCategory(true),
+ FINANCIAL_CATEGORY to DataCategory(false))))
+
+ /** A Safety label for [PACKAGE_NAME_2]. */
+ val SAFETY_LABEL_PKG_2_V2: SafetyLabel =
+ SafetyLabel(AppInfo(PACKAGE_NAME_2), DATE_2022_12_10, DataLabel(mapOf()))
+
+ /** A Safety label for [PACKAGE_NAME_2]. */
+ val SAFETY_LABEL_PKG_2_V3: SafetyLabel =
+ SafetyLabel(
+ AppInfo(PACKAGE_NAME_2),
+ DATE_2022_12_30,
+ DataLabel(mapOf(FINANCIAL_CATEGORY to DataCategory(true))))
+
+ /** A Safety label for [PACKAGE_NAME_3]. */
+ val SAFETY_LABEL_PKG_3_V1: SafetyLabel =
+ SafetyLabel(
+ AppInfo(PACKAGE_NAME_3),
+ DATE_2022_10_10,
+ DataLabel(mapOf(LOCATION_CATEGORY to DataCategory(true))))
+}
diff --git a/PermissionController/tests/permissionui/src/com/android/permissioncontroller/permissionui/ui/AllAppPermissionsFragmentTest.kt b/PermissionController/tests/permissionui/src/com/android/permissioncontroller/permissionui/ui/AllAppPermissionsFragmentTest.kt
index aa9a14a08..d5f574327 100644
--- a/PermissionController/tests/permissionui/src/com/android/permissioncontroller/permissionui/ui/AllAppPermissionsFragmentTest.kt
+++ b/PermissionController/tests/permissionui/src/com/android/permissioncontroller/permissionui/ui/AllAppPermissionsFragmentTest.kt
@@ -60,6 +60,8 @@ class AllAppPermissionsFragmentTest : BasePermissionUiTest() {
private val PERM_LABEL = "Permission B"
private val SECOND_PERM_LABEL = "Permission C"
+ private val TIMEOUT_SHORT = 500L
+
@Before
fun assumeNotTelevision() = assumeFalse(isTelevision)
@@ -77,6 +79,7 @@ class AllAppPermissionsFragmentTest : BasePermissionUiTest() {
instrumentationContext.startActivity(Intent(Intent.ACTION_MANAGE_APP_PERMISSIONS)
.apply {
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+ addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
putExtra(Intent.EXTRA_PACKAGE_NAME, USER_PKG)
})
}
@@ -109,7 +112,7 @@ class AllAppPermissionsFragmentTest : BasePermissionUiTest() {
install(PERMISSION_USER_APK)
eventually {
- assertNull(waitFindObjectOrNull(By.text(SECOND_PERM_LABEL)))
+ assertNull(waitFindObjectOrNull(By.text(SECOND_PERM_LABEL), TIMEOUT_SHORT))
}
}
@@ -117,7 +120,7 @@ class AllAppPermissionsFragmentTest : BasePermissionUiTest() {
fun activityIsClosedWhenUserIsUninstalled() {
uninstallApp(USER_PKG)
eventually {
- assertNull(waitFindObjectOrNull(By.text(ALL_PERMISSIONS)))
+ assertNull(waitFindObjectOrNull(By.text(ALL_PERMISSIONS), TIMEOUT_SHORT))
}
}
diff --git a/SafetyCenter/Config/tests/java/com/android/safetycenter/config/ParserConfigOverlayTest.kt b/SafetyCenter/Config/tests/java/com/android/safetycenter/config/ParserConfigOverlayTest.kt
index 00239ee5b..3c709f041 100644
--- a/SafetyCenter/Config/tests/java/com/android/safetycenter/config/ParserConfigOverlayTest.kt
+++ b/SafetyCenter/Config/tests/java/com/android/safetycenter/config/ParserConfigOverlayTest.kt
@@ -125,7 +125,8 @@ class ParserConfigOverlayTest {
private const val STATE_ENABLED = "STATE_ENABLED"
private fun getStateForOverlay(overlayPackage: String): String? {
- val result: String = runShellCommand("cmd overlay dump --user 0 state $overlayPackage")
+ val result: String =
+ runShellCommand("cmd overlay dump --user 0 state $overlayPackage | head -n 1")
if (!result.startsWith("STATE_")) {
return null
}
diff --git a/service/java/com/android/safetycenter/SafetyCenterDataFactory.java b/service/java/com/android/safetycenter/SafetyCenterDataFactory.java
index 5b18c4e79..d165d86c3 100644
--- a/service/java/com/android/safetycenter/SafetyCenterDataFactory.java
+++ b/service/java/com/android/safetycenter/SafetyCenterDataFactory.java
@@ -23,6 +23,7 @@ import static java.util.Collections.emptyList;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.app.PendingIntent;
+import android.content.Context;
import android.icu.text.ListFormatter;
import android.icu.text.MessageFormat;
import android.icu.util.ULocale;
@@ -49,6 +50,7 @@ import android.util.Log;
import androidx.annotation.RequiresApi;
import com.android.modules.utils.build.SdkLevel;
+import com.android.permission.util.UserUtils;
import com.android.safetycenter.data.SafetyCenterDataManager;
import com.android.safetycenter.internaldata.SafetyCenterEntryId;
import com.android.safetycenter.internaldata.SafetyCenterIds;
@@ -81,6 +83,7 @@ public final class SafetyCenterDataFactory {
private static final String ANDROID_LOCK_SCREEN_SOURCES_GROUP_ID = "AndroidLockScreenSources";
private static final String ISSUES_TO_GROUPS_BUNDLE_KEY = "IssuesToGroupsKey";
+ private final Context mContext;
private final SafetyCenterResourcesContext mSafetyCenterResourcesContext;
private final SafetyCenterConfigReader mSafetyCenterConfigReader;
private final SafetyCenterRefreshTracker mSafetyCenterRefreshTracker;
@@ -89,11 +92,13 @@ public final class SafetyCenterDataFactory {
private final SafetyCenterDataManager mSafetyCenterDataManager;
SafetyCenterDataFactory(
+ Context context,
SafetyCenterResourcesContext safetyCenterResourcesContext,
SafetyCenterConfigReader safetyCenterConfigReader,
SafetyCenterRefreshTracker safetyCenterRefreshTracker,
PendingIntentFactory pendingIntentFactory,
SafetyCenterDataManager safetyCenterDataManager) {
+ mContext = context;
mSafetyCenterResourcesContext = safetyCenterResourcesContext;
mSafetyCenterConfigReader = safetyCenterConfigReader;
mSafetyCenterRefreshTracker = safetyCenterRefreshTracker;
@@ -524,7 +529,14 @@ public final class SafetyCenterDataFactory {
&& TextUtils.isEmpty(groupSummary)) {
List<CharSequence> titles = new ArrayList<>();
for (int i = 0; i < entries.size(); i++) {
- titles.add(entries.get(i).getTitle());
+ SafetyCenterEntry entry = entries.get(i);
+ SafetyCenterEntryId entryId = SafetyCenterIds.entryIdFromString(entry.getId());
+
+ if (UserUtils.isManagedProfile(entryId.getUserId(), mContext)) {
+ continue;
+ }
+
+ titles.add(entry.getTitle());
}
groupSummary =
ListFormatter.getInstance(
diff --git a/service/java/com/android/safetycenter/SafetyCenterService.java b/service/java/com/android/safetycenter/SafetyCenterService.java
index ee54aa081..3c9e2ed2d 100644
--- a/service/java/com/android/safetycenter/SafetyCenterService.java
+++ b/service/java/com/android/safetycenter/SafetyCenterService.java
@@ -156,6 +156,7 @@ public final class SafetyCenterService extends SystemService {
context, mSafetyCenterConfigReader, mSafetyCenterRefreshTracker, mApiLock);
mSafetyCenterDataFactory =
new SafetyCenterDataFactory(
+ context,
mSafetyCenterResourcesContext,
mSafetyCenterConfigReader,
mSafetyCenterRefreshTracker,
diff --git a/tests/hostside/safetycenter/src/android/safetycenter/hostside/SafetySourceStateCollectedLoggingHostTest.kt b/tests/hostside/safetycenter/src/android/safetycenter/hostside/SafetySourceStateCollectedLoggingHostTest.kt
index a0a38c14c..8c00ef35c 100644
--- a/tests/hostside/safetycenter/src/android/safetycenter/hostside/SafetySourceStateCollectedLoggingHostTest.kt
+++ b/tests/hostside/safetycenter/src/android/safetycenter/hostside/SafetySourceStateCollectedLoggingHostTest.kt
@@ -110,13 +110,17 @@ class SafetySourceStateCollectedLoggingHostTest : BaseHostJUnit4Test() {
.filterNot {
// Installing/uninstalling the helper app can cause Play Protect to run a scan and
// push new data to Safety Center which interferes with the test results so we
- // specifically filter the resultant atoms out using the real encoded source ID
+ // specifically filter the resultant atoms out using the real encoded source ID.
+ // Similar failures are also observed on Android Test Hub due to the background
+ // location source (b/278782808)
it.encodedSafetySourceId == PLAY_PROTECT_ENCODED_SOURCE_ID
+ || it.encodedSafetySourceId == BACKGROUND_LOCATION_ENCODED_SOURCE_ID
}
private companion object {
const val TEST_CLASS_NAME = ".SafetySourceStateCollectedLoggingHelperTests"
const val PLAY_PROTECT_ENCODED_SOURCE_ID = 7711894340233229936L
+ const val BACKGROUND_LOCATION_ENCODED_SOURCE_ID = 7355693215512427559L
const val SOURCE_1_ENCODED_SOURCE_ID = 6446219357586936066L
const val SOURCE_2_ENCODED_SOURCE_ID = -5887429047684886602L
const val SOURCE_3_ENCODED_SOURCE_ID = -619470868366498469L
diff --git a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestListener.kt b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestListener.kt
index 727305070..d62214843 100644
--- a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestListener.kt
+++ b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestListener.kt
@@ -40,6 +40,9 @@ class SafetyCenterTestListener : OnSafetyCenterDataChangedListener {
}
override fun onError(errorDetails: SafetyCenterErrorDetails) {
+ // This call to super is needed for code coverage purposes, see b/272351657 for more
+ // details. The default impl of the interface is a no-op so the call to super is a no-op.
+ super.onError(errorDetails)
runBlockingWithTimeout { errorChannel.send(errorDetails) }
}