Merge changes I3e7d3c61,I1cba811c into sc-v2-dev
* changes: Convert gesture navigation feedback videos to animations with real callbacks. Convert gesture navigation tutorial still image vector drawables to layout files
This commit is contained in:
committed by
Android (Google) Code Review
commit
f4f6c0fd4f
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="oval">
|
||||
<solid android:color="@color/gesture_tutorial_primary_color" />
|
||||
<size android:width="92dp" android:height="92dp"/>
|
||||
</shape>
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,212 +0,0 @@
|
||||
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt">
|
||||
<target android:name="time_group">
|
||||
<aapt:attr name="android:animation">
|
||||
<set android:ordering="together">
|
||||
<objectAnimator
|
||||
android:duration="83"
|
||||
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="412dp"
|
||||
android:height="892dp"
|
||||
android:viewportHeight="892"
|
||||
android:viewportWidth="412">
|
||||
<group android:name="_R_G">
|
||||
<group
|
||||
android:name="_R_G_L_1_G"
|
||||
android:translateX="206"
|
||||
android:translateY="446">
|
||||
<path
|
||||
android:name="_R_G_L_1_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#dadce0"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M206 -446 C206,-446 206,446 206,446 C206,446 -206,446 -206,446 C-206,446 -206,-446 -206,-446 C-206,-446 206,-446 206,-446c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G"
|
||||
android:pivotX="206"
|
||||
android:pivotY="446"
|
||||
android:scaleX="1"
|
||||
android:scaleY="1">
|
||||
<group android:name="_R_G_L_0_G_L_0_G">
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_14_G"
|
||||
android:translateX="206"
|
||||
android:translateY="446">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_14_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#000000"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M206 -422 C206,-422 206,422 206,422 C206,435.25 195.25,446 182,446 C182,446 -182,446 -182,446 C-195.25,446 -206,435.25 -206,422 C-206,422 -206,-422 -206,-422 C-206,-435.25 -195.25,-446 -182,-446 C-182,-446 182,-446 182,-446 C195.25,-446 206,-435.25 206,-422c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_13_G"
|
||||
android:translateX="206"
|
||||
android:translateY="496.5">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_13_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#f1f3f4"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M206 -395.5 C206,-395.5 206,395.5 206,395.5 C206,395.5 -206,395.5 -206,395.5 C-206,395.5 -206,-395.5 -206,-395.5 C-206,-395.5 206,-395.5 206,-395.5c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_12_G"
|
||||
android:translateX="206"
|
||||
android:translateY="50.5">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_12_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#e8eaed"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M206 -50.5 C206,-50.5 206,50.5 206,50.5 C206,50.5 -206,50.5 -206,50.5 C-206,50.5 -206,-50.5 -206,-50.5 C-206,-50.5 206,-50.5 206,-50.5c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_11_G"
|
||||
android:translateX="206"
|
||||
android:translateY="804">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_11_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#dadce0"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M177 0 C177,12.15 167.15,22 155,22 C155,22 -155,22 -155,22 C-167.15,22 -177,12.15 -177,0 C-177,-12.15 -167.15,-22 -155,-22 C-155,-22 155,-22 155,-22 C167.15,-22 177,-12.15 177,0c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_10_G"
|
||||
android:translateX="117.5"
|
||||
android:translateY="61">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_10_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#dadce0"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M83.5 -14 C83.5,-14 83.5,14 83.5,14 C83.5,16.21 81.71,18 79.5,18 C79.5,18 -79.5,18 -79.5,18 C-81.71,18 -83.5,16.21 -83.5,14 C-83.5,14 -83.5,-14 -83.5,-14 C-83.5,-16.21 -81.71,-18 -79.5,-18 C-79.5,-18 79.5,-18 79.5,-18 C81.71,-18 83.5,-16.21 83.5,-14c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_9_G"
|
||||
android:translateX="370"
|
||||
android:translateY="61">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_9_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#dadce0"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M18 -14 C18,-14 18,14 18,14 C18,16.21 16.21,18 14,18 C14,18 -14,18 -14,18 C-16.21,18 -18,16.21 -18,14 C-18,14 -18,-14 -18,-14 C-18,-16.21 -16.21,-18 -14,-18 C-14,-18 14,-18 14,-18 C16.21,-18 18,-16.21 18,-14c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_8_G"
|
||||
android:translateX="318"
|
||||
android:translateY="61">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_8_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#dadce0"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M18 -14 C18,-14 18,14 18,14 C18,16.21 16.21,18 14,18 C14,18 -14,18 -14,18 C-16.21,18 -18,16.21 -18,14 C-18,14 -18,-14 -18,-14 C-18,-16.21 -16.21,-18 -14,-18 C-14,-18 14,-18 14,-18 C16.21,-18 18,-16.21 18,-14c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_7_G"
|
||||
android:translateX="48"
|
||||
android:translateY="618">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_7_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#dadce0"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M22 0 C22,12.15 12.15,22 0,22 C-12.15,22 -22,12.15 -22,0 C-22,-12.15 -12.15,-22 0,-22 C12.15,-22 22,-12.15 22,0c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_6_G"
|
||||
android:translateX="48"
|
||||
android:translateY="396">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_6_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#dadce0"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M22 0 C22,12.15 12.15,22 0,22 C-12.15,22 -22,12.15 -22,0 C-22,-12.15 -12.15,-22 0,-22 C12.15,-22 22,-12.15 22,0c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_5_G"
|
||||
android:translateX="259"
|
||||
android:translateY="286">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_5_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M135 -38 C135,-38 135,38 135,38 C135,47.94 126.94,56 117,56 C117,56 -117,56 -117,56 C-126.94,56 -135,47.94 -135,38 C-135,38 -135,-38 -135,-38 C-135,-47.94 -126.94,-56 -117,-56 C-117,-56 117,-56 117,-56 C126.94,-56 135,-47.94 135,-38c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_4_G"
|
||||
android:translateX="259"
|
||||
android:translateY="468">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_4_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M134.5 4 C134.5,4 134.5,14 134.5,14 C134.5,16.21 132.71,18 130.5,18 C130.5,18 44.5,18 44.5,18 C42.29,18 40.5,16.21 40.5,14 C40.5,14 40.5,4 40.5,4 C40.5,1.79 42.29,0 44.5,0 C44.5,0 130.5,0 130.5,0 C132.71,0 134.5,1.79 134.5,4c M135 0 C135,9.66 127.17,17.5 117.5,17.5 C117.5,17.5 31,17.5 31,17.5 C21.34,17.5 13.5,9.66 13.5,0 C13.5,-9.66 21.34,-17.5 31,-17.5 C31,-17.5 117.5,-17.5 117.5,-17.5 C127.17,-17.5 135,-9.66 135,0c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_3_G"
|
||||
android:translateX="259"
|
||||
android:translateY="526.5">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_3_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M135 -32.5 C135,-32.5 135,20.5 135,20.5 C135,22.71 133.21,24.5 131,24.5 C131,24.5 -95,24.5 -95,24.5 C-97.21,24.5 -99,22.71 -99,20.5 C-99,20.5 -99,-32.5 -99,-32.5 C-99,-34.71 -97.21,-36.5 -95,-36.5 C-95,-36.5 131,-36.5 131,-36.5 C133.21,-36.5 135,-34.71 135,-32.5c M135 -18.5 C135,-18.5 135,18.5 135,18.5 C135,28.44 126.94,36.5 117,36.5 C117,36.5 -117,36.5 -117,36.5 C-126.94,36.5 -135,28.44 -135,18.5 C-135,18.5 -135,-18.5 -135,-18.5 C-135,-28.44 -126.94,-36.5 -117,-36.5 C-117,-36.5 117,-36.5 117,-36.5 C126.94,-36.5 135,-28.44 135,-18.5c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_2_G"
|
||||
android:translateX="259"
|
||||
android:translateY="708.5">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_2_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M135 -18.5 C135,-18.5 135,18.5 135,18.5 C135,28.44 126.94,36.5 117,36.5 C117,36.5 -117,36.5 -117,36.5 C-126.94,36.5 -135,28.44 -135,18.5 C-135,18.5 -135,-18.5 -135,-18.5 C-135,-28.44 -126.94,-36.5 -117,-36.5 C-117,-36.5 117,-36.5 117,-36.5 C126.94,-36.5 135,-28.44 135,-18.5c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_1_G"
|
||||
android:translateX="222"
|
||||
android:translateY="617">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_1_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#e8eaed"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M45.5 0 C45.5,9.66 37.67,17.5 28,17.5 C28,17.5 -117.5,17.5 -117.5,17.5 C-127.16,17.5 -135,9.66 -135,0 C-135,-9.66 -127.16,-17.5 -117.5,-17.5 C-117.5,-17.5 28,-17.5 28,-17.5 C37.67,-17.5 45.5,-9.66 45.5,0c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_0_G"
|
||||
android:translateX="222"
|
||||
android:translateY="395.5">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_0_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#e8eaed"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M77 0 C77,9.66 69.16,17.5 59.5,17.5 C59.5,17.5 -117.5,17.5 -117.5,17.5 C-127.16,17.5 -135,9.66 -135,0 C-135,-9.66 -127.16,-17.5 -117.5,-17.5 C-117.5,-17.5 59.5,-17.5 59.5,-17.5 C69.16,-17.5 77,-9.66 77,0c " />
|
||||
</group>
|
||||
</group>
|
||||
</group>
|
||||
</group>
|
||||
<group android:name="time_group" />
|
||||
</vector>
|
||||
</aapt:attr>
|
||||
</animated-vector>
|
||||
@@ -1,361 +0,0 @@
|
||||
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt">
|
||||
<target android:name="time_group">
|
||||
<aapt:attr name="android:animation">
|
||||
<set android:ordering="together">
|
||||
<objectAnimator
|
||||
android:duration="83"
|
||||
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="412dp"
|
||||
android:height="892dp"
|
||||
android:viewportHeight="892"
|
||||
android:viewportWidth="412">
|
||||
<group android:name="_R_G">
|
||||
<group
|
||||
android:name="_R_G_L_1_G"
|
||||
android:translateX="206"
|
||||
android:translateY="446">
|
||||
<path
|
||||
android:name="_R_G_L_1_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#dadce0"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M206 -446 C206,-446 206,446 206,446 C206,446 -206,446 -206,446 C-206,446 -206,-446 -206,-446 C-206,-446 206,-446 206,-446c " />
|
||||
</group>
|
||||
<group android:name="_R_G_L_0_G">
|
||||
<group android:name="_R_G_L_0_G_L_0_G">
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_28_G"
|
||||
android:translateX="206"
|
||||
android:translateY="446">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_28_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#000000"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M206 -422 C206,-422 206,422 206,422 C206,435.25 195.25,446 182,446 C182,446 -182,446 -182,446 C-195.25,446 -206,435.25 -206,422 C-206,422 -206,-422 -206,-422 C-206,-435.25 -195.25,-446 -182,-446 C-182,-446 182,-446 182,-446 C195.25,-446 206,-435.25 206,-422c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_27_G"
|
||||
android:translateX="206"
|
||||
android:translateY="422.5">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_27_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#dadce0"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M206 -395.5 C206,-395.5 206,395.5 206,395.5 C206,395.5 -206,395.5 -206,395.5 C-206,395.5 -206,-395.5 -206,-395.5 C-206,-395.5 206,-395.5 206,-395.5c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_26_G"
|
||||
android:translateX="206"
|
||||
android:translateY="496.5">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_26_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#dadce0"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M206 -377.5 C206,-377.5 206,377.5 206,377.5 C206,387.43 197.93,395.5 188,395.5 C188,395.5 -188,395.5 -188,395.5 C-197.93,395.5 -206,387.43 -206,377.5 C-206,377.5 -206,-377.5 -206,-377.5 C-206,-387.43 -197.93,-395.5 -188,-395.5 C-188,-395.5 188,-395.5 188,-395.5 C197.93,-395.5 206,-387.43 206,-377.5c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_25_G"
|
||||
android:translateX="206"
|
||||
android:translateY="50.5">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_25_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#e8eaed"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M206 -23.5 C206,-23.5 206,50.5 206,50.5 C206,50.5 -206,50.5 -206,50.5 C-206,50.5 -206,-23.5 -206,-23.5 C-206,-23.5 206,-23.5 206,-23.5c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_24_G"
|
||||
android:translateX="206"
|
||||
android:translateY="50.5">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_24_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#e8eaed"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M206 -32.5 C206,-32.5 206,32.5 206,32.5 C206,42.43 197.93,50.5 188,50.5 C188,50.5 -188,50.5 -188,50.5 C-197.93,50.5 -206,42.43 -206,32.5 C-206,32.5 -206,-32.5 -206,-32.5 C-206,-42.43 -197.93,-50.5 -188,-50.5 C-188,-50.5 188,-50.5 188,-50.5 C197.93,-50.5 206,-42.43 206,-32.5c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_23_G"
|
||||
android:translateX="54"
|
||||
android:translateY="157">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_23_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#9aa0a6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M28 0 C28,15.46 15.46,28 0,28 C-15.46,28 -28,15.46 -28,0 C-28,-15.46 -15.46,-28 0,-28 C15.46,-28 28,-15.46 28,0c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_22_G"
|
||||
android:translateX="54"
|
||||
android:translateY="157">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_22_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#9aa0a6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M28 0 C28,15.46 15.46,28 0,28 C-15.46,28 -28,15.46 -28,0 C-28,-15.46 -15.46,-28 0,-28 C15.46,-28 28,-15.46 28,0c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_21_G"
|
||||
android:translateX="148.5"
|
||||
android:translateY="148">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_21_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M46.5 -5 C46.5,-5 46.5,5 46.5,5 C46.5,7.21 44.71,9 42.5,9 C42.5,9 -42.5,9 -42.5,9 C-44.71,9 -46.5,7.21 -46.5,5 C-46.5,5 -46.5,-5 -46.5,-5 C-46.5,-7.21 -44.71,-9 -42.5,-9 C-42.5,-9 42.5,-9 42.5,-9 C44.71,-9 46.5,-7.21 46.5,-5c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_20_G"
|
||||
android:translateX="186"
|
||||
android:translateY="169">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_20_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M84 -4 C84,-4 84,4 84,4 C84,6.21 82.21,8 80,8 C80,8 -80,8 -80,8 C-82.21,8 -84,6.21 -84,4 C-84,4 -84,-4 -84,-4 C-84,-6.21 -82.21,-8 -80,-8 C-80,-8 80,-8 80,-8 C82.21,-8 84,-6.21 84,-4c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_19_G"
|
||||
android:translateX="54"
|
||||
android:translateY="245">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_19_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#9aa0a6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M28 0 C28,15.46 15.46,28 0,28 C-15.46,28 -28,15.46 -28,0 C-28,-15.46 -15.46,-28 0,-28 C15.46,-28 28,-15.46 28,0c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_18_G"
|
||||
android:translateX="162"
|
||||
android:translateY="236">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_18_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M60 -5 C60,-5 60,5 60,5 C60,7.21 58.21,9 56,9 C56,9 -56,9 -56,9 C-58.21,9 -60,7.21 -60,5 C-60,5 -60,-5 -60,-5 C-60,-7.21 -58.21,-9 -56,-9 C-56,-9 56,-9 56,-9 C58.21,-9 60,-7.21 60,-5c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_17_G"
|
||||
android:translateX="171.5"
|
||||
android:translateY="257">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_17_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M69.5 -4 C69.5,-4 69.5,4 69.5,4 C69.5,6.21 67.71,8 65.5,8 C65.5,8 -65.5,8 -65.5,8 C-67.71,8 -69.5,6.21 -69.5,4 C-69.5,4 -69.5,-4 -69.5,-4 C-69.5,-6.21 -67.71,-8 -65.5,-8 C-65.5,-8 65.5,-8 65.5,-8 C67.71,-8 69.5,-6.21 69.5,-4c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_16_G"
|
||||
android:translateX="54"
|
||||
android:translateY="333">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_16_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#9aa0a6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M28 0 C28,15.46 15.46,28 0,28 C-15.46,28 -28,15.46 -28,0 C-28,-15.46 -15.46,-28 0,-28 C15.46,-28 28,-15.46 28,0c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_15_G"
|
||||
android:translateX="158"
|
||||
android:translateY="324">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_15_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M56 -5 C56,-5 56,5 56,5 C56,7.21 54.21,9 52,9 C52,9 -52,9 -52,9 C-54.21,9 -56,7.21 -56,5 C-56,5 -56,-5 -56,-5 C-56,-7.21 -54.21,-9 -52,-9 C-52,-9 52,-9 52,-9 C54.21,-9 56,-7.21 56,-5c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_14_G"
|
||||
android:translateX="217.5"
|
||||
android:translateY="345">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_14_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M115.5 -4 C115.5,-4 115.5,4 115.5,4 C115.5,6.21 113.71,8 111.5,8 C111.5,8 -111.5,8 -111.5,8 C-113.71,8 -115.5,6.21 -115.5,4 C-115.5,4 -115.5,-4 -115.5,-4 C-115.5,-6.21 -113.71,-8 -111.5,-8 C-111.5,-8 111.5,-8 111.5,-8 C113.71,-8 115.5,-6.21 115.5,-4c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_13_G"
|
||||
android:translateX="54"
|
||||
android:translateY="421">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_13_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#9aa0a6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M28 0 C28,15.46 15.46,28 0,28 C-15.46,28 -28,15.46 -28,0 C-28,-15.46 -15.46,-28 0,-28 C15.46,-28 28,-15.46 28,0c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_12_G"
|
||||
android:translateX="170"
|
||||
android:translateY="412">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_12_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M68 -5 C68,-5 68,5 68,5 C68,7.21 66.21,9 64,9 C64,9 -64,9 -64,9 C-66.21,9 -68,7.21 -68,5 C-68,5 -68,-5 -68,-5 C-68,-7.21 -66.21,-9 -64,-9 C-64,-9 64,-9 64,-9 C66.21,-9 68,-7.21 68,-5c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_11_G"
|
||||
android:translateX="198.5"
|
||||
android:translateY="433">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_11_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M96.5 -4 C96.5,-4 96.5,4 96.5,4 C96.5,6.21 94.71,8 92.5,8 C92.5,8 -92.5,8 -92.5,8 C-94.71,8 -96.5,6.21 -96.5,4 C-96.5,4 -96.5,-4 -96.5,-4 C-96.5,-6.21 -94.71,-8 -92.5,-8 C-92.5,-8 92.5,-8 92.5,-8 C94.71,-8 96.5,-6.21 96.5,-4c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_10_G"
|
||||
android:translateX="54"
|
||||
android:translateY="509">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_10_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#9aa0a6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M28 0 C28,15.46 15.46,28 0,28 C-15.46,28 -28,15.46 -28,0 C-28,-15.46 -15.46,-28 0,-28 C15.46,-28 28,-15.46 28,0c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_9_G"
|
||||
android:translateX="135"
|
||||
android:translateY="500">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_9_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M33 -5 C33,-5 33,5 33,5 C33,7.21 31.21,9 29,9 C29,9 -29,9 -29,9 C-31.21,9 -33,7.21 -33,5 C-33,5 -33,-5 -33,-5 C-33,-7.21 -31.21,-9 -29,-9 C-29,-9 29,-9 29,-9 C31.21,-9 33,-7.21 33,-5c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_8_G"
|
||||
android:translateX="185.5"
|
||||
android:translateY="521">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_8_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M83.5 -4 C83.5,-4 83.5,4 83.5,4 C83.5,6.21 81.71,8 79.5,8 C79.5,8 -79.5,8 -79.5,8 C-81.71,8 -83.5,6.21 -83.5,4 C-83.5,4 -83.5,-4 -83.5,-4 C-83.5,-6.21 -81.71,-8 -79.5,-8 C-79.5,-8 79.5,-8 79.5,-8 C81.71,-8 83.5,-6.21 83.5,-4c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_7_G"
|
||||
android:translateX="54"
|
||||
android:translateY="597">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_7_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#9aa0a6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M28 0 C28,15.46 15.46,28 0,28 C-15.46,28 -28,15.46 -28,0 C-28,-15.46 -15.46,-28 0,-28 C15.46,-28 28,-15.46 28,0c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_6_G"
|
||||
android:translateX="168.5"
|
||||
android:translateY="588">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_6_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M66.5 -5 C66.5,-5 66.5,5 66.5,5 C66.5,7.21 64.71,9 62.5,9 C62.5,9 -62.5,9 -62.5,9 C-64.71,9 -66.5,7.21 -66.5,5 C-66.5,5 -66.5,-5 -66.5,-5 C-66.5,-7.21 -64.71,-9 -62.5,-9 C-62.5,-9 62.5,-9 62.5,-9 C64.71,-9 66.5,-7.21 66.5,-5c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_5_G"
|
||||
android:translateX="198.5"
|
||||
android:translateY="609">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_5_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M96.5 -4 C96.5,-4 96.5,4 96.5,4 C96.5,6.21 94.71,8 92.5,8 C92.5,8 -92.5,8 -92.5,8 C-94.71,8 -96.5,6.21 -96.5,4 C-96.5,4 -96.5,-4 -96.5,-4 C-96.5,-6.21 -94.71,-8 -92.5,-8 C-92.5,-8 92.5,-8 92.5,-8 C94.71,-8 96.5,-6.21 96.5,-4c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_4_G"
|
||||
android:translateX="54"
|
||||
android:translateY="685">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_4_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#9aa0a6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M28 0 C28,15.46 15.46,28 0,28 C-15.46,28 -28,15.46 -28,0 C-28,-15.46 -15.46,-28 0,-28 C15.46,-28 28,-15.46 28,0c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_3_G"
|
||||
android:translateX="162.5"
|
||||
android:translateY="676">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_3_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M60.5 -5 C60.5,-5 60.5,5 60.5,5 C60.5,7.21 58.71,9 56.5,9 C56.5,9 -56.5,9 -56.5,9 C-58.71,9 -60.5,7.21 -60.5,5 C-60.5,5 -60.5,-5 -60.5,-5 C-60.5,-7.21 -58.71,-9 -56.5,-9 C-56.5,-9 56.5,-9 56.5,-9 C58.71,-9 60.5,-7.21 60.5,-5c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_2_G"
|
||||
android:translateX="174"
|
||||
android:translateY="697">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_2_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M72 -4 C72,-4 72,4 72,4 C72,6.21 70.21,8 68,8 C68,8 -68,8 -68,8 C-70.21,8 -72,6.21 -72,4 C-72,4 -72,-4 -72,-4 C-72,-6.21 -70.21,-8 -68,-8 C-68,-8 68,-8 68,-8 C70.21,-8 72,-6.21 72,-4c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_1_G"
|
||||
android:translateX="313.5"
|
||||
android:translateY="798">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_1_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M74.5 0 C74.5,0 74.5,0 74.5,0 C74.5,15.45 61.95,28 46.5,28 C46.5,28 -46.5,28 -46.5,28 C-61.95,28 -74.5,15.45 -74.5,0 C-74.5,0 -74.5,0 -74.5,0 C-74.5,-15.45 -61.95,-28 -46.5,-28 C-46.5,-28 46.5,-28 46.5,-28 C61.95,-28 74.5,-15.45 74.5,0c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_0_G"
|
||||
android:translateX="205.5"
|
||||
android:translateY="61">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_0_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#f8f9fa"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M171.5 -14 C171.5,-14 171.5,14 171.5,14 C171.5,16.21 169.71,18 167.5,18 C167.5,18 -167.5,18 -167.5,18 C-169.71,18 -171.5,16.21 -171.5,14 C-171.5,14 -171.5,-14 -171.5,-14 C-171.5,-16.21 -169.71,-18 -167.5,-18 C-167.5,-18 167.5,-18 167.5,-18 C169.71,-18 171.5,-16.21 171.5,-14c " />
|
||||
</group>
|
||||
</group>
|
||||
</group>
|
||||
</group>
|
||||
<group android:name="time_group" />
|
||||
</vector>
|
||||
</aapt:attr>
|
||||
</animated-vector>
|
||||
@@ -1,251 +0,0 @@
|
||||
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt">
|
||||
<target android:name="time_group">
|
||||
<aapt:attr name="android:animation">
|
||||
<set android:ordering="together">
|
||||
<objectAnimator
|
||||
android:duration="83"
|
||||
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="412dp"
|
||||
android:height="892dp"
|
||||
android:viewportHeight="892"
|
||||
android:viewportWidth="412">
|
||||
<group android:name="_R_G">
|
||||
<group android:name="_R_G_L_0_G">
|
||||
<group android:name="_R_G_L_0_G_L_3_G">
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_3_G_L_11_G"
|
||||
android:scaleX="0.87473"
|
||||
android:scaleY="0.98643"
|
||||
android:translateX="206"
|
||||
android:translateY="472.769">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_3_G_L_11_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#dadce0"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M235.5 -407 C235.5,-407 235.5,407 235.5,407 C235.5,416.93 227.43,425 217.5,425 C217.5,425 -217.5,425 -217.5,425 C-227.43,425 -235.5,416.93 -235.5,407 C-235.5,407 -235.5,-407 -235.5,-407 C-235.5,-416.93 -227.43,-425 -217.5,-425 C-217.5,-425 217.5,-425 217.5,-425 C227.43,-425 235.5,-416.93 235.5,-407c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_3_G_L_10_G"
|
||||
android:translateX="182.5"
|
||||
android:translateY="831">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_3_G_L_10_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M158.5 -3 C158.5,-3 158.5,3 158.5,3 C158.5,7.42 154.92,11 150.5,11 C150.5,11 -150.5,11 -150.5,11 C-154.92,11 -158.5,7.42 -158.5,3 C-158.5,3 -158.5,-3 -158.5,-3 C-158.5,-7.42 -154.92,-11 -150.5,-11 C-150.5,-11 150.5,-11 150.5,-11 C154.92,-11 158.5,-7.42 158.5,-3c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_3_G_L_9_G"
|
||||
android:translateX="186"
|
||||
android:translateY="801">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_3_G_L_9_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M162 -3 C162,-3 162,3 162,3 C162,7.42 158.42,11 154,11 C154,11 -154,11 -154,11 C-158.42,11 -162,7.42 -162,3 C-162,3 -162,-3 -162,-3 C-162,-7.42 -158.42,-11 -154,-11 C-154,-11 154,-11 154,-11 C158.42,-11 162,-7.42 162,-3c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_3_G_L_8_G"
|
||||
android:translateX="119"
|
||||
android:translateY="755">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_3_G_L_8_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M95 -3 C95,-3 95,3 95,3 C95,7.42 91.42,11 87,11 C87,11 -87,11 -87,11 C-91.42,11 -95,7.42 -95,3 C-95,3 -95,-3 -95,-3 C-95,-7.42 -91.42,-11 -87,-11 C-87,-11 87,-11 87,-11 C91.42,-11 95,-7.42 95,-3c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_3_G_L_7_G"
|
||||
android:translateX="182.5"
|
||||
android:translateY="725">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_3_G_L_7_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M158.5 -3 C158.5,-3 158.5,3 158.5,3 C158.5,7.42 154.92,11 150.5,11 C150.5,11 -150.5,11 -150.5,11 C-154.92,11 -158.5,7.42 -158.5,3 C-158.5,3 -158.5,-3 -158.5,-3 C-158.5,-7.42 -154.92,-11 -150.5,-11 C-150.5,-11 150.5,-11 150.5,-11 C154.92,-11 158.5,-7.42 158.5,-3c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_3_G_L_6_G"
|
||||
android:translateX="197.5"
|
||||
android:translateY="695">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_3_G_L_6_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M173.5 -3 C173.5,-3 173.5,3 173.5,3 C173.5,7.42 169.92,11 165.5,11 C165.5,11 -165.5,11 -165.5,11 C-169.92,11 -173.5,7.42 -173.5,3 C-173.5,3 -173.5,-3 -173.5,-3 C-173.5,-7.42 -169.92,-11 -165.5,-11 C-165.5,-11 165.5,-11 165.5,-11 C169.92,-11 173.5,-7.42 173.5,-3c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_3_G_L_5_G"
|
||||
android:translateX="192"
|
||||
android:translateY="665">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_3_G_L_5_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M168 -3 C168,-3 168,3 168,3 C168,7.42 164.42,11 160,11 C160,11 -160,11 -160,11 C-164.42,11 -168,7.42 -168,3 C-168,3 -168,-3 -168,-3 C-168,-7.42 -164.42,-11 -160,-11 C-160,-11 160,-11 160,-11 C164.42,-11 168,-7.42 168,-3c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_3_G_L_4_G"
|
||||
android:translateX="105.5"
|
||||
android:translateY="360">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_3_G_L_4_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M23.5 -2 C23.5,-2 23.5,2 23.5,2 C23.5,4.21 21.71,6 19.5,6 C19.5,6 -19.5,6 -19.5,6 C-21.71,6 -23.5,4.21 -23.5,2 C-23.5,2 -23.5,-2 -23.5,-2 C-23.5,-4.21 -21.71,-6 -19.5,-6 C-19.5,-6 19.5,-6 19.5,-6 C21.71,-6 23.5,-4.21 23.5,-2c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_3_G_L_3_G"
|
||||
android:translateX="47.5"
|
||||
android:translateY="360">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_3_G_L_3_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M23.5 -2 C23.5,-2 23.5,2 23.5,2 C23.5,4.21 21.71,6 19.5,6 C19.5,6 -19.5,6 -19.5,6 C-21.71,6 -23.5,4.21 -23.5,2 C-23.5,2 -23.5,-2 -23.5,-2 C-23.5,-4.21 -21.71,-6 -19.5,-6 C-19.5,-6 19.5,-6 19.5,-6 C21.71,-6 23.5,-4.21 23.5,-2c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_3_G_L_2_G"
|
||||
android:translateX="142.5"
|
||||
android:translateY="328">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_3_G_L_2_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M118.5 -10 C118.5,-10 118.5,10 118.5,10 C118.5,14.42 114.92,18 110.5,18 C110.5,18 -110.5,18 -110.5,18 C-114.92,18 -118.5,14.42 -118.5,10 C-118.5,10 -118.5,-10 -118.5,-10 C-118.5,-14.42 -114.92,-18 -110.5,-18 C-110.5,-18 110.5,-18 110.5,-18 C114.92,-18 118.5,-14.42 118.5,-10c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_3_G_L_1_G"
|
||||
android:translateX="186"
|
||||
android:translateY="284">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_3_G_L_1_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M162 -10 C162,-10 162,10 162,10 C162,14.42 158.42,18 154,18 C154,18 -154,18 -154,18 C-158.42,18 -162,14.42 -162,10 C-162,10 -162,-10 -162,-10 C-162,-14.42 -158.42,-18 -154,-18 C-154,-18 154,-18 154,-18 C158.42,-18 162,-14.42 162,-10c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_3_G_L_0_G"
|
||||
android:translateX="155"
|
||||
android:translateY="240">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_3_G_L_0_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M131 -10 C131,-10 131,10 131,10 C131,14.42 127.42,18 123,18 C123,18 -123,18 -123,18 C-127.42,18 -131,14.42 -131,10 C-131,10 -131,-10 -131,-10 C-131,-14.42 -127.42,-18 -123,-18 C-123,-18 123,-18 123,-18 C127.42,-18 131,-14.42 131,-10c " />
|
||||
</group>
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_2_G"
|
||||
android:translateX="24"
|
||||
android:translateY="390">
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_2_G_L_0_G"
|
||||
android:translateX="182"
|
||||
android:translateY="120">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_2_G_L_0_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M182 -98 C182,-98 182,98 182,98 C182,110.14 172.14,120 160,120 C160,120 -160,120 -160,120 C-172.14,120 -182,110.14 -182,98 C-182,98 -182,-98 -182,-98 C-182,-110.14 -172.14,-120 -160,-120 C-160,-120 160,-120 160,-120 C172.14,-120 182,-110.14 182,-98c " />
|
||||
</group>
|
||||
</group>
|
||||
<group android:name="_R_G_L_0_G_L_1_G">
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_1_G_L_2_G"
|
||||
android:translateX="206"
|
||||
android:translateY="145">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_1_G_L_2_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#e8eaed"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M206 -95.63 C206,-95.63 206,42.37 206,42.37 C206,43.47 205.1,44.37 204,44.37 C204,44.37 -204,44.37 -204,44.37 C-205.1,44.37 -206,43.47 -206,42.37 C-206,42.37 -206,-95.63 -206,-95.63 C-206,-96.73 -205.1,-97.63 -204,-97.63 C-204,-97.63 204,-97.63 204,-97.63 C205.1,-97.63 206,-96.73 206,-95.63c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_1_G_L_1_G"
|
||||
android:translateX="206"
|
||||
android:translateY="145">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_1_G_L_1_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#80868b"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M109 -14 C109,-14 109,14 109,14 C109,15.1 108.1,16 107,16 C107,16 -107,16 -107,16 C-108.1,16 -109,15.1 -109,14 C-109,14 -109,-14 -109,-14 C-109,-15.1 -108.1,-16 -107,-16 C-107,-16 107,-16 107,-16 C108.1,-16 109,-15.1 109,-14c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_1_G_L_0_G"
|
||||
android:translateX="46"
|
||||
android:translateY="145">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_1_G_L_0_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#80868b"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M22 -14 C22,-14 22,14 22,14 C22,18.42 18.42,22 14,22 C14,22 -14,22 -14,22 C-18.42,22 -22,18.42 -22,14 C-22,14 -22,-14 -22,-14 C-22,-18.42 -18.42,-22 -14,-22 C-14,-22 14,-22 14,-22 C18.42,-22 22,-18.42 22,-14c " />
|
||||
</group>
|
||||
</group>
|
||||
<group android:name="_R_G_L_0_G_L_0_G">
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_2_G"
|
||||
android:translateX="206"
|
||||
android:translateY="51">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_2_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#202124"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M206 -0.27 C206,-0.27 206,49.73 206,49.73 C206,49.73 -206,49.73 -206,49.73 C-206,49.73 -206,-0.27 -206,-0.27 C-206,-0.27 206,-0.27 206,-0.27c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_1_G"
|
||||
android:translateX="206"
|
||||
android:translateY="50.5">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_1_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#202124"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M206 -32.5 C206,-32.5 206,32.5 206,32.5 C206,42.43 197.93,50.5 188,50.5 C188,50.5 -188,50.5 -188,50.5 C-197.93,50.5 -206,42.43 -206,32.5 C-206,32.5 -206,-32.5 -206,-32.5 C-206,-42.43 -197.93,-50.5 -188,-50.5 C-188,-50.5 188,-50.5 188,-50.5 C197.93,-50.5 206,-42.43 206,-32.5c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G_L_0_G"
|
||||
android:translateX="206"
|
||||
android:translateY="66.5">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_L_0_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#3c4043"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M190 0 C190,0 190,0 190,0 C190,10.21 181.71,18.5 171.5,18.5 C171.5,18.5 -171.5,18.5 -171.5,18.5 C-181.71,18.5 -190,10.21 -190,0 C-190,0 -190,0 -190,0 C-190,-10.21 -181.71,-18.5 -171.5,-18.5 C-171.5,-18.5 171.5,-18.5 171.5,-18.5 C181.71,-18.5 190,-10.21 190,0c " />
|
||||
</group>
|
||||
</group>
|
||||
</group>
|
||||
</group>
|
||||
<group android:name="time_group" />
|
||||
</vector>
|
||||
</aapt:attr>
|
||||
</animated-vector>
|
||||
@@ -1,263 +0,0 @@
|
||||
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt">
|
||||
<target android:name="time_group">
|
||||
<aapt:attr name="android:animation">
|
||||
<set android:ordering="together">
|
||||
<objectAnimator
|
||||
android:duration="83"
|
||||
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="412dp"
|
||||
android:height="892dp"
|
||||
android:viewportHeight="892"
|
||||
android:viewportWidth="412">
|
||||
<group android:name="_R_G">
|
||||
<group android:name="_R_G_L_0_G">
|
||||
<group android:name="_R_G_L_0_G_L_4_G">
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_4_G_L_11_G"
|
||||
android:scaleX="0.87473"
|
||||
android:scaleY="0.98643"
|
||||
android:translateX="206"
|
||||
android:translateY="472.769">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_4_G_L_11_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#dadce0"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M235.5 -407 C235.5,-407 235.5,407 235.5,407 C235.5,416.93 227.43,425 217.5,425 C217.5,425 -217.5,425 -217.5,425 C-227.43,425 -235.5,416.93 -235.5,407 C-235.5,407 -235.5,-407 -235.5,-407 C-235.5,-416.93 -227.43,-425 -217.5,-425 C-217.5,-425 217.5,-425 217.5,-425 C227.43,-425 235.5,-416.93 235.5,-407c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_4_G_L_10_G"
|
||||
android:translateX="182.5"
|
||||
android:translateY="831">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_4_G_L_10_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M158.5 -3 C158.5,-3 158.5,3 158.5,3 C158.5,7.42 154.92,11 150.5,11 C150.5,11 -150.5,11 -150.5,11 C-154.92,11 -158.5,7.42 -158.5,3 C-158.5,3 -158.5,-3 -158.5,-3 C-158.5,-7.42 -154.92,-11 -150.5,-11 C-150.5,-11 150.5,-11 150.5,-11 C154.92,-11 158.5,-7.42 158.5,-3c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_4_G_L_9_G"
|
||||
android:translateX="186"
|
||||
android:translateY="801">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_4_G_L_9_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M162 -3 C162,-3 162,3 162,3 C162,7.42 158.42,11 154,11 C154,11 -154,11 -154,11 C-158.42,11 -162,7.42 -162,3 C-162,3 -162,-3 -162,-3 C-162,-7.42 -158.42,-11 -154,-11 C-154,-11 154,-11 154,-11 C158.42,-11 162,-7.42 162,-3c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_4_G_L_8_G"
|
||||
android:translateX="119"
|
||||
android:translateY="755">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_4_G_L_8_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M95 -3 C95,-3 95,3 95,3 C95,7.42 91.42,11 87,11 C87,11 -87,11 -87,11 C-91.42,11 -95,7.42 -95,3 C-95,3 -95,-3 -95,-3 C-95,-7.42 -91.42,-11 -87,-11 C-87,-11 87,-11 87,-11 C91.42,-11 95,-7.42 95,-3c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_4_G_L_7_G"
|
||||
android:translateX="182.5"
|
||||
android:translateY="725">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_4_G_L_7_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M158.5 -3 C158.5,-3 158.5,3 158.5,3 C158.5,7.42 154.92,11 150.5,11 C150.5,11 -150.5,11 -150.5,11 C-154.92,11 -158.5,7.42 -158.5,3 C-158.5,3 -158.5,-3 -158.5,-3 C-158.5,-7.42 -154.92,-11 -150.5,-11 C-150.5,-11 150.5,-11 150.5,-11 C154.92,-11 158.5,-7.42 158.5,-3c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_4_G_L_6_G"
|
||||
android:translateX="197.5"
|
||||
android:translateY="695">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_4_G_L_6_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M173.5 -3 C173.5,-3 173.5,3 173.5,3 C173.5,7.42 169.92,11 165.5,11 C165.5,11 -165.5,11 -165.5,11 C-169.92,11 -173.5,7.42 -173.5,3 C-173.5,3 -173.5,-3 -173.5,-3 C-173.5,-7.42 -169.92,-11 -165.5,-11 C-165.5,-11 165.5,-11 165.5,-11 C169.92,-11 173.5,-7.42 173.5,-3c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_4_G_L_5_G"
|
||||
android:translateX="192"
|
||||
android:translateY="665">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_4_G_L_5_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M168 -3 C168,-3 168,3 168,3 C168,7.42 164.42,11 160,11 C160,11 -160,11 -160,11 C-164.42,11 -168,7.42 -168,3 C-168,3 -168,-3 -168,-3 C-168,-7.42 -164.42,-11 -160,-11 C-160,-11 160,-11 160,-11 C164.42,-11 168,-7.42 168,-3c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_4_G_L_4_G"
|
||||
android:translateX="105.5"
|
||||
android:translateY="360">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_4_G_L_4_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M23.5 -2 C23.5,-2 23.5,2 23.5,2 C23.5,4.21 21.71,6 19.5,6 C19.5,6 -19.5,6 -19.5,6 C-21.71,6 -23.5,4.21 -23.5,2 C-23.5,2 -23.5,-2 -23.5,-2 C-23.5,-4.21 -21.71,-6 -19.5,-6 C-19.5,-6 19.5,-6 19.5,-6 C21.71,-6 23.5,-4.21 23.5,-2c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_4_G_L_3_G"
|
||||
android:translateX="47.5"
|
||||
android:translateY="360">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_4_G_L_3_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M23.5 -2 C23.5,-2 23.5,2 23.5,2 C23.5,4.21 21.71,6 19.5,6 C19.5,6 -19.5,6 -19.5,6 C-21.71,6 -23.5,4.21 -23.5,2 C-23.5,2 -23.5,-2 -23.5,-2 C-23.5,-4.21 -21.71,-6 -19.5,-6 C-19.5,-6 19.5,-6 19.5,-6 C21.71,-6 23.5,-4.21 23.5,-2c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_4_G_L_2_G"
|
||||
android:translateX="142.5"
|
||||
android:translateY="328">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_4_G_L_2_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M118.5 -10 C118.5,-10 118.5,10 118.5,10 C118.5,14.42 114.92,18 110.5,18 C110.5,18 -110.5,18 -110.5,18 C-114.92,18 -118.5,14.42 -118.5,10 C-118.5,10 -118.5,-10 -118.5,-10 C-118.5,-14.42 -114.92,-18 -110.5,-18 C-110.5,-18 110.5,-18 110.5,-18 C114.92,-18 118.5,-14.42 118.5,-10c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_4_G_L_1_G"
|
||||
android:translateX="186"
|
||||
android:translateY="284">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_4_G_L_1_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M162 -10 C162,-10 162,10 162,10 C162,14.42 158.42,18 154,18 C154,18 -154,18 -154,18 C-158.42,18 -162,14.42 -162,10 C-162,10 -162,-10 -162,-10 C-162,-14.42 -158.42,-18 -154,-18 C-154,-18 154,-18 154,-18 C158.42,-18 162,-14.42 162,-10c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_4_G_L_0_G"
|
||||
android:translateX="155"
|
||||
android:translateY="240">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_4_G_L_0_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M131 -10 C131,-10 131,10 131,10 C131,14.42 127.42,18 123,18 C123,18 -123,18 -123,18 C-127.42,18 -131,14.42 -131,10 C-131,10 -131,-10 -131,-10 C-131,-14.42 -127.42,-18 -123,-18 C-123,-18 123,-18 123,-18 C127.42,-18 131,-14.42 131,-10c " />
|
||||
</group>
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_3_G"
|
||||
android:translateX="24"
|
||||
android:translateY="390">
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_3_G_L_0_G"
|
||||
android:translateX="182"
|
||||
android:translateY="120">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_3_G_L_0_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bdc1c6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M182 -98 C182,-98 182,98 182,98 C182,110.14 172.14,120 160,120 C160,120 -160,120 -160,120 C-172.14,120 -182,110.14 -182,98 C-182,98 -182,-98 -182,-98 C-182,-110.14 -172.14,-120 -160,-120 C-160,-120 160,-120 160,-120 C172.14,-120 182,-110.14 182,-98c " />
|
||||
</group>
|
||||
</group>
|
||||
<group android:name="_R_G_L_0_G_L_2_G">
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_2_G_L_2_G"
|
||||
android:translateX="206"
|
||||
android:translateY="145">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_2_G_L_2_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#e8eaed"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M206 -95.63 C206,-95.63 206,42.37 206,42.37 C206,43.47 205.1,44.37 204,44.37 C204,44.37 -204,44.37 -204,44.37 C-205.1,44.37 -206,43.47 -206,42.37 C-206,42.37 -206,-95.63 -206,-95.63 C-206,-96.73 -205.1,-97.63 -204,-97.63 C-204,-97.63 204,-97.63 204,-97.63 C205.1,-97.63 206,-96.73 206,-95.63c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_2_G_L_1_G"
|
||||
android:translateX="206"
|
||||
android:translateY="145">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_2_G_L_1_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#80868b"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M109 -14 C109,-14 109,14 109,14 C109,15.1 108.1,16 107,16 C107,16 -107,16 -107,16 C-108.1,16 -109,15.1 -109,14 C-109,14 -109,-14 -109,-14 C-109,-15.1 -108.1,-16 -107,-16 C-107,-16 107,-16 107,-16 C108.1,-16 109,-15.1 109,-14c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_2_G_L_0_G"
|
||||
android:translateX="46"
|
||||
android:translateY="145">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_2_G_L_0_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#80868b"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M22 -14 C22,-14 22,14 22,14 C22,18.42 18.42,22 14,22 C14,22 -14,22 -14,22 C-18.42,22 -22,18.42 -22,14 C-22,14 -22,-14 -22,-14 C-22,-18.42 -18.42,-22 -14,-22 C-14,-22 14,-22 14,-22 C18.42,-22 22,-18.42 22,-14c " />
|
||||
</group>
|
||||
</group>
|
||||
<group android:name="_R_G_L_0_G_L_1_G">
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_1_G_L_2_G"
|
||||
android:translateX="206"
|
||||
android:translateY="51">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_1_G_L_2_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#6e7175"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M206 -0.27 C206,-0.27 206,49.73 206,49.73 C206,49.73 -206,49.73 -206,49.73 C-206,49.73 -206,-0.27 -206,-0.27 C-206,-0.27 206,-0.27 206,-0.27c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_1_G_L_1_G"
|
||||
android:translateX="206"
|
||||
android:translateY="50.5">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_1_G_L_1_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#6e7175"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M206 -32.5 C206,-32.5 206,32.5 206,32.5 C206,42.43 197.93,50.5 188,50.5 C188,50.5 -188,50.5 -188,50.5 C-197.93,50.5 -206,42.43 -206,32.5 C-206,32.5 -206,-32.5 -206,-32.5 C-206,-42.43 -197.93,-50.5 -188,-50.5 C-188,-50.5 188,-50.5 188,-50.5 C197.93,-50.5 206,-42.43 206,-32.5c " />
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_1_G_L_0_G"
|
||||
android:translateX="206"
|
||||
android:translateY="66.5">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_1_G_L_0_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#9a9a9a"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M190 0 C190,0 190,0 190,0 C190,10.21 181.71,18.5 171.5,18.5 C171.5,18.5 -171.5,18.5 -171.5,18.5 C-181.71,18.5 -190,10.21 -190,0 C-190,0 -190,0 -190,0 C-190,-10.21 -181.71,-18.5 -171.5,-18.5 C-171.5,-18.5 171.5,-18.5 171.5,-18.5 C181.71,-18.5 190,-10.21 190,0c " />
|
||||
</group>
|
||||
</group>
|
||||
<group
|
||||
android:name="_R_G_L_0_G_L_0_G"
|
||||
android:scaleY="0"
|
||||
android:translateX="206"
|
||||
android:translateY="446">
|
||||
<path
|
||||
android:name="_R_G_L_0_G_L_0_G_D_0_P_0"
|
||||
android:fillAlpha="1"
|
||||
android:fillColor="#bac4d6"
|
||||
android:fillType="nonZero"
|
||||
android:pathData=" M206.06 -430.06 C206.06,-430.06 206,431 206,431 C206,446 189.75,446 189.79,446 C189.79,446 -189.98,446 -189.98,446 C-189.94,446 -206,446 -206,431 C-206,431 -206,-430 -206,-430 C-206,-446 -189.97,-446 -190.01,-446 C-190.01,-446 188.98,-446.06 188.98,-446.06 C188.94,-446.06 206,-446 206.06,-430.06c " />
|
||||
</group>
|
||||
</group>
|
||||
</group>
|
||||
<group android:name="time_group" />
|
||||
</vector>
|
||||
</aapt:attr>
|
||||
</animated-vector>
|
||||
@@ -1,4 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2021 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
android:scaleY="0.98"
|
||||
android:visibility="invisible" />
|
||||
|
||||
<View
|
||||
<FrameLayout
|
||||
android:id="@+id/gesture_tutorial_fake_task_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
@@ -62,7 +62,7 @@
|
||||
android:background="@drawable/gesture_tutorial_ripple"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/gesture_tutorial_feedback_video"
|
||||
android:id="@+id/gesture_tutorial_edge_gesture_video"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_alignParentTop="true"
|
||||
@@ -73,14 +73,12 @@
|
||||
android:visibility="gone"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/gesture_tutorial_gesture_video"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:scaleType="fitXY"
|
||||
android:id="@+id/gesture_tutorial_finger_dot"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/gesture_tutorial_finger_dot"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
|
||||
@@ -0,0 +1,242 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2021 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/top_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="101dp"
|
||||
android:background="@color/mock_conversation_top_bar"
|
||||
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent">
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="43dp"
|
||||
android:layout_marginBottom="22dp"
|
||||
android:layout_marginStart="34dp"
|
||||
android:layout_marginEnd="211dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="4dp"
|
||||
app:cardBackgroundColor="@color/mock_conversation_top_bar_item"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="43dp"
|
||||
android:layout_marginBottom="22dp"
|
||||
android:layout_marginStart="300dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="4dp"
|
||||
app:cardBackgroundColor="@color/mock_conversation_top_bar_item"
|
||||
app:layout_constraintDimensionRatio="1:1"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/top_bar_button"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/top_bar_button"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="43dp"
|
||||
android:layout_marginBottom="22dp"
|
||||
android:layout_marginStart="300dp"
|
||||
android:layout_marginEnd="24dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="4dp"
|
||||
app:cardBackgroundColor="@color/mock_conversation_top_bar_item"
|
||||
app:layout_constraintDimensionRatio="1:1"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:background="@color/mock_conversation_background"
|
||||
android:paddingBottom="66dp"
|
||||
|
||||
app:layout_constraintTop_toBottomOf="@id/top_bar"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:paddingBottom="36dp"
|
||||
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/message_bar"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent">
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/message_1"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="112dp"
|
||||
android:layout_marginBottom="32dp"
|
||||
android:layout_marginStart="124dp"
|
||||
android:layout_marginEnd="18dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="18dp"
|
||||
app:cardBackgroundColor="@color/mock_conversation_sent_message"
|
||||
app:layout_constraintBottom_toTopOf="@id/reply_icon_1"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/reply_icon_1"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginBottom="32dp"
|
||||
android:layout_marginStart="26dp"
|
||||
android:layout_marginEnd="342dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="100dp"
|
||||
app:cardBackgroundColor="@color/mock_conversation_profile_icon"
|
||||
app:layout_constraintDimensionRatio="1:1"
|
||||
app:layout_constraintBottom_toTopOf="@id/message_2"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="36dp"
|
||||
android:layout_marginStart="17dp"
|
||||
android:layout_marginEnd="112dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="18dp"
|
||||
app:cardBackgroundColor="@color/mock_conversation_received_message"
|
||||
app:layout_constraintTop_toTopOf="@id/reply_icon_1"
|
||||
app:layout_constraintBottom_toBottomOf="@id/reply_icon_1"
|
||||
app:layout_constraintStart_toEndOf="@id/reply_icon_1"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/message_2"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="36dp"
|
||||
android:layout_marginBottom="4dp"
|
||||
android:layout_marginStart="280dp"
|
||||
android:layout_marginEnd="18dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="18dp"
|
||||
app:cardBackgroundColor="@color/mock_conversation_sent_message"
|
||||
app:layout_constraintBottom_toTopOf="@id/message_3"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/message_3"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="74dp"
|
||||
android:layout_marginBottom="32dp"
|
||||
android:layout_marginStart="124dp"
|
||||
android:layout_marginEnd="18dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="18dp"
|
||||
app:cardBackgroundColor="@color/mock_conversation_sent_message"
|
||||
app:layout_constraintBottom_toTopOf="@id/reply_icon_2"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/reply_icon_2"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginBottom="32dp"
|
||||
android:layout_marginStart="26dp"
|
||||
android:layout_marginEnd="342dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="100dp"
|
||||
app:cardBackgroundColor="@color/mock_conversation_profile_icon"
|
||||
app:layout_constraintDimensionRatio="1:1"
|
||||
app:layout_constraintBottom_toTopOf="@id/message_4"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="36dp"
|
||||
android:layout_marginStart="17dp"
|
||||
android:layout_marginEnd="144dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="18dp"
|
||||
app:cardBackgroundColor="@color/mock_conversation_received_message"
|
||||
app:layout_constraintTop_toTopOf="@id/reply_icon_2"
|
||||
app:layout_constraintBottom_toBottomOf="@id/reply_icon_2"
|
||||
app:layout_constraintStart_toEndOf="@id/reply_icon_2"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/message_4"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="74dp"
|
||||
android:layout_marginStart="124dp"
|
||||
android:layout_marginEnd="18dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="18dp"
|
||||
app:cardBackgroundColor="@color/mock_conversation_sent_message"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/message_bar"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="44dp"
|
||||
android:layout_marginTop="36dp"
|
||||
android:layout_marginStart="34dp"
|
||||
android:layout_marginEnd="24dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="164dp"
|
||||
app:cardBackgroundColor="@color/mock_conversation_message_input"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1,394 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2021 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/top_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="101dp"
|
||||
android:background="@color/mock_list_top_bar"
|
||||
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent">
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="43dp"
|
||||
android:layout_marginBottom="22dp"
|
||||
android:layout_marginStart="34dp"
|
||||
android:layout_marginEnd="35dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="4dp"
|
||||
app:cardBackgroundColor="@color/mock_list_top_bar_item"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:background="@color/mock_list_background"
|
||||
android:paddingBottom="66dp"
|
||||
|
||||
app:layout_constraintTop_toBottomOf="@id/top_bar"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:paddingTop="28dp"
|
||||
android:paddingStart="26dp"
|
||||
android:paddingBottom="14dp"
|
||||
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/mock_button">
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/conversation_icon_1"
|
||||
android:layout_width="56dp"
|
||||
android:layout_height="56dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="100dp"
|
||||
app:cardBackgroundColor="@color/mock_list_profile_icon"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/conversation_line_1"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="18dp"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginEnd="217dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="4dp"
|
||||
app:cardBackgroundColor="@color/mock_list_preview_message"
|
||||
app:layout_constraintVertical_chainStyle="packed"
|
||||
app:layout_constraintTop_toTopOf="@id/conversation_icon_1"
|
||||
app:layout_constraintStart_toEndOf="@id/conversation_icon_1"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/conversation_line_2"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/conversation_line_2"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="16dp"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginEnd="142dp"
|
||||
android:layout_marginTop="4dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="4dp"
|
||||
app:cardBackgroundColor="@color/mock_list_preview_message"
|
||||
app:layout_constraintTop_toBottomOf="@id/conversation_line_1"
|
||||
app:layout_constraintStart_toEndOf="@id/conversation_icon_1"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="@id/conversation_icon_1"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/conversation_icon_2"
|
||||
android:layout_width="56dp"
|
||||
android:layout_height="56dp"
|
||||
android:layout_marginTop="32dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="100dp"
|
||||
app:cardBackgroundColor="@color/mock_list_profile_icon"
|
||||
app:layout_constraintTop_toBottomOf="@id/conversation_icon_1"
|
||||
app:layout_constraintStart_toStartOf="parent"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/conversation_line_3"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="18dp"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginEnd="190dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="4dp"
|
||||
app:cardBackgroundColor="@color/mock_list_preview_message"
|
||||
app:layout_constraintVertical_chainStyle="packed"
|
||||
app:layout_constraintTop_toTopOf="@id/conversation_icon_2"
|
||||
app:layout_constraintStart_toEndOf="@id/conversation_icon_2"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/conversation_line_4"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/conversation_line_4"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="16dp"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginEnd="171dp"
|
||||
android:layout_marginTop="4dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="4dp"
|
||||
app:cardBackgroundColor="@color/mock_list_preview_message"
|
||||
app:layout_constraintTop_toBottomOf="@id/conversation_line_3"
|
||||
app:layout_constraintStart_toEndOf="@id/conversation_icon_2"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="@id/conversation_icon_2"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/conversation_icon_3"
|
||||
android:layout_width="56dp"
|
||||
android:layout_height="56dp"
|
||||
android:layout_marginTop="32dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="100dp"
|
||||
app:cardBackgroundColor="@color/mock_list_profile_icon"
|
||||
app:layout_constraintTop_toBottomOf="@id/conversation_icon_2"
|
||||
app:layout_constraintStart_toStartOf="parent"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/conversation_line_5"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="18dp"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginEnd="198dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="4dp"
|
||||
app:cardBackgroundColor="@color/mock_list_preview_message"
|
||||
app:layout_constraintVertical_chainStyle="packed"
|
||||
app:layout_constraintTop_toTopOf="@id/conversation_icon_3"
|
||||
app:layout_constraintStart_toEndOf="@id/conversation_icon_3"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/conversation_line_6"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/conversation_line_6"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="16dp"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginEnd="79dp"
|
||||
android:layout_marginTop="4dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="4dp"
|
||||
app:cardBackgroundColor="@color/mock_list_preview_message"
|
||||
app:layout_constraintTop_toBottomOf="@id/conversation_line_5"
|
||||
app:layout_constraintStart_toEndOf="@id/conversation_icon_3"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="@id/conversation_icon_3"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/conversation_icon_4"
|
||||
android:layout_width="56dp"
|
||||
android:layout_height="56dp"
|
||||
android:layout_marginTop="32dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="100dp"
|
||||
app:cardBackgroundColor="@color/mock_list_profile_icon"
|
||||
app:layout_constraintTop_toBottomOf="@id/conversation_icon_3"
|
||||
app:layout_constraintStart_toStartOf="parent"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/conversation_line_7"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="18dp"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginEnd="174dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="4dp"
|
||||
app:cardBackgroundColor="@color/mock_list_preview_message"
|
||||
app:layout_constraintVertical_chainStyle="packed"
|
||||
app:layout_constraintTop_toTopOf="@id/conversation_icon_4"
|
||||
app:layout_constraintStart_toEndOf="@id/conversation_icon_4"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/conversation_line_8"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/conversation_line_8"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="16dp"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginEnd="117dp"
|
||||
android:layout_marginTop="4dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="4dp"
|
||||
app:cardBackgroundColor="@color/mock_list_preview_message"
|
||||
app:layout_constraintTop_toBottomOf="@id/conversation_line_7"
|
||||
app:layout_constraintStart_toEndOf="@id/conversation_icon_4"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="@id/conversation_icon_4"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/conversation_icon_5"
|
||||
android:layout_width="56dp"
|
||||
android:layout_height="56dp"
|
||||
android:layout_marginTop="32dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="100dp"
|
||||
app:cardBackgroundColor="@color/mock_list_profile_icon"
|
||||
app:layout_constraintTop_toBottomOf="@id/conversation_icon_4"
|
||||
app:layout_constraintStart_toStartOf="parent"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/conversation_line_9"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="18dp"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginEnd="244dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="4dp"
|
||||
app:cardBackgroundColor="@color/mock_list_preview_message"
|
||||
app:layout_constraintVertical_chainStyle="packed"
|
||||
app:layout_constraintTop_toTopOf="@id/conversation_icon_5"
|
||||
app:layout_constraintStart_toEndOf="@id/conversation_icon_5"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/conversation_line_10"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/conversation_line_10"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="16dp"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginEnd="143dp"
|
||||
android:layout_marginTop="4dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="4dp"
|
||||
app:cardBackgroundColor="@color/mock_list_preview_message"
|
||||
app:layout_constraintTop_toBottomOf="@id/conversation_line_9"
|
||||
app:layout_constraintStart_toEndOf="@id/conversation_icon_5"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="@id/conversation_icon_5"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/conversation_icon_6"
|
||||
android:layout_width="56dp"
|
||||
android:layout_height="56dp"
|
||||
android:layout_marginTop="32dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="100dp"
|
||||
app:cardBackgroundColor="@color/mock_list_profile_icon"
|
||||
app:layout_constraintTop_toBottomOf="@id/conversation_icon_5"
|
||||
app:layout_constraintStart_toStartOf="parent"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/conversation_line_11"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="18dp"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginEnd="177dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="4dp"
|
||||
app:cardBackgroundColor="@color/mock_list_preview_message"
|
||||
app:layout_constraintVertical_chainStyle="packed"
|
||||
app:layout_constraintTop_toTopOf="@id/conversation_icon_6"
|
||||
app:layout_constraintStart_toEndOf="@id/conversation_icon_6"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/conversation_line_12"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/conversation_line_12"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="16dp"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginEnd="117dp"
|
||||
android:layout_marginTop="4dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="4dp"
|
||||
app:cardBackgroundColor="@color/mock_list_preview_message"
|
||||
app:layout_constraintTop_toBottomOf="@id/conversation_line_11"
|
||||
app:layout_constraintStart_toEndOf="@id/conversation_icon_6"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="@id/conversation_icon_6"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/conversation_icon_7"
|
||||
android:layout_width="56dp"
|
||||
android:layout_height="56dp"
|
||||
android:layout_marginTop="32dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="100dp"
|
||||
app:cardBackgroundColor="@color/mock_list_profile_icon"
|
||||
app:layout_constraintTop_toBottomOf="@id/conversation_icon_6"
|
||||
app:layout_constraintStart_toStartOf="parent"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/conversation_line_13"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="18dp"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginEnd="189dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="4dp"
|
||||
app:cardBackgroundColor="@color/mock_list_preview_message"
|
||||
app:layout_constraintVertical_chainStyle="packed"
|
||||
app:layout_constraintTop_toTopOf="@id/conversation_icon_7"
|
||||
app:layout_constraintStart_toEndOf="@id/conversation_icon_7"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/conversation_line_14"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/conversation_line_14"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="16dp"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginEnd="166dp"
|
||||
android:layout_marginTop="4dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="4dp"
|
||||
app:cardBackgroundColor="@color/mock_list_preview_message"
|
||||
app:layout_constraintTop_toBottomOf="@id/conversation_line_13"
|
||||
app:layout_constraintStart_toEndOf="@id/conversation_icon_7"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="@id/conversation_icon_7"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/mock_button"
|
||||
android:layout_width="149dp"
|
||||
android:layout_height="56dp"
|
||||
android:layout_marginEnd="24dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="164dp"
|
||||
app:cardBackgroundColor="@color/mock_list_button"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1,274 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2021 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/url_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="101dp"
|
||||
android:background="@color/mock_webpage_url_bar"
|
||||
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent">
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="48dp"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="100dp"
|
||||
app:cardBackgroundColor="@color/mock_webpage_url_bar_item"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/top_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="88dp"
|
||||
android:background="@color/mock_webpage_top_bar"
|
||||
|
||||
app:layout_constraintTop_toBottomOf="@id/url_bar"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent">
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/top_bar_button"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="22dp"
|
||||
android:layout_marginBottom="22dp"
|
||||
android:layout_marginStart="24dp"
|
||||
android:layout_marginEnd="344dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="8dp"
|
||||
app:cardBackgroundColor="@color/mock_webpage_top_bar_item"
|
||||
app:layout_constraintDimensionRatio="1:1"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="28dp"
|
||||
android:layout_marginBottom="28dp"
|
||||
android:layout_marginStart="97dp"
|
||||
android:layout_marginEnd="97dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="2dp"
|
||||
app:cardBackgroundColor="@color/mock_webpage_top_bar_item"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:background="@color/mock_webpage_background"
|
||||
android:paddingTop="32dp"
|
||||
android:paddingStart="24dp"
|
||||
android:paddingBottom="50dp"
|
||||
|
||||
app:layout_constraintTop_toBottomOf="@id/top_bar"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent">
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/mock_line_1"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="36dp"
|
||||
android:layout_marginEnd="126dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="4dp"
|
||||
app:cardBackgroundColor="@color/mock_webpage_page_text"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/mock_line_2"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="36dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="64dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="4dp"
|
||||
app:cardBackgroundColor="@color/mock_webpage_page_text"
|
||||
app:layout_constraintTop_toBottomOf="@id/mock_line_1"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/mock_line_3"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="36dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="151dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="4dp"
|
||||
app:cardBackgroundColor="@color/mock_webpage_page_text"
|
||||
app:layout_constraintTop_toBottomOf="@id/mock_line_2"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/mock_button"
|
||||
android:layout_width="47dp"
|
||||
android:layout_height="12dp"
|
||||
android:layout_marginTop="8dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="4dp"
|
||||
app:cardBackgroundColor="@color/mock_webpage_page_text"
|
||||
app:layout_constraintTop_toBottomOf="@id/mock_line_3"
|
||||
app:layout_constraintStart_toStartOf="parent"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:layout_width="47dp"
|
||||
android:layout_height="12dp"
|
||||
android:background="@color/mock_webpage_page_text"
|
||||
android:layout_marginStart="11dp"
|
||||
android:layout_marginTop="8dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="4dp"
|
||||
app:cardBackgroundColor="@color/mock_webpage_page_text"
|
||||
app:layout_constraintTop_toBottomOf="@id/mock_line_3"
|
||||
app:layout_constraintStart_toEndOf="@id/mock_button"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/mock_block"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="240dp"
|
||||
android:layout_marginTop="24dp"
|
||||
android:layout_marginEnd="24dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="22dp"
|
||||
app:cardBackgroundColor="@color/mock_webpage_page_text"
|
||||
app:layout_constraintTop_toBottomOf="@id/mock_button"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/mock_line_4"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="22dp"
|
||||
android:layout_marginTop="24dp"
|
||||
android:layout_marginEnd="52dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="8dp"
|
||||
app:cardBackgroundColor="@color/mock_webpage_page_text"
|
||||
app:layout_constraintTop_toBottomOf="@id/mock_block"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/mock_line_5"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="22dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="41dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="8dp"
|
||||
app:cardBackgroundColor="@color/mock_webpage_page_text"
|
||||
app:layout_constraintTop_toBottomOf="@id/mock_line_4"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/mock_line_6"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="22dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="71dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="8dp"
|
||||
app:cardBackgroundColor="@color/mock_webpage_page_text"
|
||||
app:layout_constraintTop_toBottomOf="@id/mock_line_5"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/mock_line_7"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="22dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="198dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="8dp"
|
||||
app:cardBackgroundColor="@color/mock_webpage_page_text"
|
||||
app:layout_constraintTop_toBottomOf="@id/mock_line_6"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/mock_line_8"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="22dp"
|
||||
android:layout_marginTop="24dp"
|
||||
android:layout_marginEnd="64dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="8dp"
|
||||
app:cardBackgroundColor="@color/mock_webpage_page_text"
|
||||
app:layout_constraintTop_toBottomOf="@id/mock_line_7"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="22dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="71dp"
|
||||
|
||||
app:cardElevation="0dp"
|
||||
app:cardCornerRadius="8dp"
|
||||
app:cardBackgroundColor="@color/mock_webpage_page_text"
|
||||
app:layout_constraintTop_toBottomOf="@id/mock_line_8"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2021 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<resources>
|
||||
|
||||
<color name="gesture_tutorial_back_arrow_color">#99000000</color>
|
||||
|
||||
<color name="gesture_tutorial_fake_wallpaper_color">#000000</color> <!-- Black -->
|
||||
|
||||
<color name="mock_webpage_url_bar">#202124</color>
|
||||
<color name="mock_webpage_url_bar_item">#3c4043</color>
|
||||
|
||||
</resources>
|
||||
@@ -14,8 +14,6 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
<resources>
|
||||
<color name="back_arrow_color_light">#FFFFFFFF</color>
|
||||
<color name="back_arrow_color_dark">#99000000</color>
|
||||
|
||||
<color name="chip_hint_foreground_color">#fff</color>
|
||||
<color name="chip_scrim_start_color">#39000000</color>
|
||||
@@ -31,4 +29,40 @@
|
||||
|
||||
<color name="taskbar_stashed_handle_light_color">#EBffffff</color>
|
||||
<color name="taskbar_stashed_handle_dark_color">#99000000</color>
|
||||
|
||||
<!-- Gesture navigation tutorial -->
|
||||
<color name="gesture_tutorial_back_arrow_color">#FFFFFFFF</color>
|
||||
|
||||
<color name="gesture_tutorial_fake_wallpaper_color">#f9f9f9</color> <!-- White -->
|
||||
<color name="gesture_tutorial_ripple_color">#A0C2F9</color> <!-- Light Blue -->
|
||||
<color name="gesture_tutorial_fake_task_view_color">#6DA1FF</color> <!-- Light Blue -->
|
||||
<!-- Must contrast gesture_tutorial_fake_wallpaper_color -->
|
||||
<color name="gesture_tutorial_fake_previous_task_view_color">#3C4043</color> <!-- Gray -->
|
||||
<color name="gesture_tutorial_action_button_label_color">#FF000000</color>
|
||||
<color name="gesture_tutorial_primary_color">#B7F29F</color> <!-- Light Green -->
|
||||
|
||||
<!-- Mock conversation -->
|
||||
<color name="mock_conversation_background">#f1f3f4</color>
|
||||
<color name="mock_conversation_top_bar">#e8eaed</color>
|
||||
<color name="mock_conversation_top_bar_item">#dadce0</color>
|
||||
<color name="mock_conversation_sent_message">#bdc1c6</color>
|
||||
<color name="mock_conversation_received_message">#e8eaed</color>
|
||||
<color name="mock_conversation_message_input">#dadce0</color>
|
||||
<color name="mock_conversation_profile_icon">#dadce0</color>
|
||||
|
||||
<!-- Mock conversations list -->
|
||||
<color name="mock_list_background">#dadce0</color>
|
||||
<color name="mock_list_top_bar">#e8eaed</color>
|
||||
<color name="mock_list_top_bar_item">#f8f9fa</color>
|
||||
<color name="mock_list_profile_icon">#9aa0a6</color>
|
||||
<color name="mock_list_preview_message">#bdc1c6</color>
|
||||
<color name="mock_list_button">#bdc1c6</color>
|
||||
|
||||
<!-- Mock web page -->
|
||||
<color name="mock_webpage_background">#f1f3f4</color>
|
||||
<color name="mock_webpage_url_bar">#6e7175</color>
|
||||
<color name="mock_webpage_url_bar_item">#9a9a9a</color>
|
||||
<color name="mock_webpage_top_bar">#e8eaed</color>
|
||||
<color name="mock_webpage_top_bar_item">#80868b</color>
|
||||
<color name="mock_webpage_page_text">#bdc1c6</color>
|
||||
</resources>
|
||||
-1
@@ -68,7 +68,6 @@ final class AssistantGestureTutorialController extends TutorialController {
|
||||
showFeedback(R.string.assistant_gesture_feedback_swipe_too_far_from_corner);
|
||||
break;
|
||||
case ASSISTANT_COMPLETED:
|
||||
hideFeedback(true);
|
||||
showRippleEffect(null);
|
||||
showFeedback(R.string.assistant_gesture_tutorial_playground_subtitle);
|
||||
break;
|
||||
|
||||
@@ -18,10 +18,9 @@ package com.android.quickstep.interaction;
|
||||
import static com.android.quickstep.interaction.TutorialController.TutorialType.BACK_NAVIGATION;
|
||||
import static com.android.quickstep.interaction.TutorialController.TutorialType.BACK_NAVIGATION_COMPLETE;
|
||||
|
||||
import android.annotation.LayoutRes;
|
||||
import android.graphics.PointF;
|
||||
|
||||
import androidx.appcompat.content.res.AppCompatResources;
|
||||
|
||||
import com.android.launcher3.R;
|
||||
import com.android.quickstep.interaction.EdgeBackGestureHandler.BackGestureResult;
|
||||
import com.android.quickstep.interaction.NavBarGestureHandler.NavBarGestureResult;
|
||||
@@ -44,8 +43,18 @@ final class BackGestureTutorialController extends TutorialController {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getMockAppTaskThumbnailResId(boolean forDarkMode) {
|
||||
return R.drawable.mock_conversation;
|
||||
protected int getMockAppTaskLayoutResId() {
|
||||
return getMockAppTaskCurrentPageLayoutResId();
|
||||
}
|
||||
|
||||
@LayoutRes
|
||||
int getMockAppTaskCurrentPageLayoutResId() {
|
||||
return R.layout.gesture_tutorial_mock_conversation;
|
||||
}
|
||||
|
||||
@LayoutRes
|
||||
int getMockAppTaskPreviousPageLayoutResId() {
|
||||
return R.layout.gesture_tutorial_mock_conversation_list;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -70,10 +79,8 @@ final class BackGestureTutorialController extends TutorialController {
|
||||
switch (result) {
|
||||
case BACK_COMPLETED_FROM_LEFT:
|
||||
case BACK_COMPLETED_FROM_RIGHT:
|
||||
mTutorialFragment.releaseGestureVideoView();
|
||||
hideFeedback(true);
|
||||
mFakeTaskView.setBackground(AppCompatResources.getDrawable(mContext,
|
||||
R.drawable.mock_conversations_list));
|
||||
mTutorialFragment.releaseFeedbackAnimation();
|
||||
updateFakeAppTaskViewLayout(getMockAppTaskPreviousPageLayoutResId());
|
||||
int subtitleResId = mTutorialFragment.isAtFinalStep()
|
||||
? R.string.back_gesture_feedback_complete_without_follow_up
|
||||
: R.string.back_gesture_feedback_complete_with_overview_follow_up;
|
||||
|
||||
@@ -15,6 +15,10 @@
|
||||
*/
|
||||
package com.android.quickstep.interaction;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.AnimatorSet;
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
|
||||
@@ -23,18 +27,76 @@ import androidx.annotation.Nullable;
|
||||
import com.android.launcher3.R;
|
||||
import com.android.quickstep.interaction.TutorialController.TutorialType;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/** Shows the Back gesture interactive tutorial. */
|
||||
public class BackGestureTutorialFragment extends TutorialFragment {
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
Integer getFeedbackVideoResId(boolean forDarkMode) {
|
||||
return R.drawable.gesture_tutorial_motion_back;
|
||||
Integer getEdgeAnimationResId() {
|
||||
return R.drawable.gesture_tutorial_loop_back;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
Integer getGestureVideoResId() {
|
||||
return R.drawable.gesture_tutorial_loop_back;
|
||||
protected Animator createGestureAnimation() {
|
||||
if (!(mTutorialController instanceof BackGestureTutorialController)) {
|
||||
return null;
|
||||
}
|
||||
BackGestureTutorialController controller =
|
||||
(BackGestureTutorialController) mTutorialController;
|
||||
float fingerDotStartTranslationX = (float) -(mRootView.getWidth() / 2);
|
||||
|
||||
AnimatorSet fingerDotAppearanceAnimator = controller.createFingerDotAppearanceAnimatorSet();
|
||||
fingerDotAppearanceAnimator.addListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationStart(Animator animation) {
|
||||
super.onAnimationStart(animation);
|
||||
mFingerDotView.setTranslationX(fingerDotStartTranslationX);
|
||||
}
|
||||
});
|
||||
|
||||
ObjectAnimator translationAnimator = ObjectAnimator.ofFloat(
|
||||
mFingerDotView, View.TRANSLATION_X, fingerDotStartTranslationX, 0);
|
||||
translationAnimator.addListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
super.onAnimationEnd(animation);
|
||||
controller.updateFakeAppTaskViewLayout(
|
||||
controller.getMockAppTaskPreviousPageLayoutResId());
|
||||
}
|
||||
});
|
||||
translationAnimator.setDuration(1000);
|
||||
|
||||
Animator animationPause = controller.createAnimationPause();
|
||||
animationPause.addListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
super.onAnimationEnd(animation);
|
||||
controller.updateFakeAppTaskViewLayout(
|
||||
controller.getMockAppTaskCurrentPageLayoutResId());
|
||||
}
|
||||
});
|
||||
ArrayList<Animator> animators = new ArrayList<>();
|
||||
|
||||
animators.add(fingerDotAppearanceAnimator);
|
||||
animators.add(translationAnimator);
|
||||
animators.add(controller.createFingerDotDisappearanceAnimatorSet());
|
||||
animators.add(animationPause);
|
||||
|
||||
AnimatorSet finalAnimation = new AnimatorSet();
|
||||
finalAnimation.addListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationCancel(Animator animation) {
|
||||
super.onAnimationCancel(animation);
|
||||
controller.updateFakeAppTaskViewLayout(
|
||||
controller.getMockAppTaskCurrentPageLayoutResId());
|
||||
}
|
||||
});
|
||||
finalAnimation.playSequentially(animators);
|
||||
|
||||
return finalAnimation;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -49,6 +111,7 @@ public class BackGestureTutorialFragment extends TutorialFragment {
|
||||
|
||||
@Override
|
||||
public boolean onTouch(View view, MotionEvent motionEvent) {
|
||||
releaseFeedbackAnimation();
|
||||
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN && mTutorialController != null) {
|
||||
mTutorialController.setRippleHotspot(motionEvent.getX(), motionEvent.getY());
|
||||
}
|
||||
|
||||
@@ -282,9 +282,7 @@ public class EdgeBackGesturePanel extends View {
|
||||
.setDampingRatio(SpringForce.DAMPING_RATIO_LOW_BOUNCY));
|
||||
int currentNightMode =
|
||||
context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
|
||||
mPaint.setColor(context.getColor(currentNightMode == Configuration.UI_MODE_NIGHT_YES
|
||||
? R.color.back_arrow_color_light
|
||||
: R.color.back_arrow_color_dark));
|
||||
mPaint.setColor(context.getColor(R.color.gesture_tutorial_back_arrow_color));
|
||||
loadDimens();
|
||||
updateArrowDirection();
|
||||
|
||||
|
||||
@@ -42,8 +42,8 @@ final class HomeGestureTutorialController extends SwipeUpGestureTutorialControll
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getMockAppTaskThumbnailResId(boolean forDarkMode) {
|
||||
return forDarkMode ? R.drawable.mock_webpage_dark_mode : R.drawable.mock_webpage_light_mode;
|
||||
protected int getMockAppTaskLayoutResId() {
|
||||
return R.layout.gesture_tutorial_mock_webpage;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -80,7 +80,7 @@ final class HomeGestureTutorialController extends SwipeUpGestureTutorialControll
|
||||
case HOME_NAVIGATION:
|
||||
switch (result) {
|
||||
case HOME_GESTURE_COMPLETED: {
|
||||
mTutorialFragment.releaseGestureVideoView();
|
||||
mTutorialFragment.releaseFeedbackAnimation();
|
||||
animateFakeTaskViewHome(finalVelocity, null);
|
||||
int subtitleResId = mTutorialFragment.isAtFinalStep()
|
||||
? R.string.home_gesture_feedback_complete_without_follow_up
|
||||
|
||||
@@ -15,25 +15,73 @@
|
||||
*/
|
||||
package com.android.quickstep.interaction;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.AnimatorSet;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.android.launcher3.R;
|
||||
import com.android.quickstep.interaction.TutorialController.TutorialType;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/** Shows the Home gesture interactive tutorial. */
|
||||
public class HomeGestureTutorialFragment extends TutorialFragment {
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
Integer getFeedbackVideoResId(boolean forDarkMode) {
|
||||
return forDarkMode
|
||||
? R.drawable.gesture_tutorial_motion_home_dark_mode
|
||||
: R.drawable.gesture_tutorial_motion_home_light_mode;
|
||||
Integer getEdgeAnimationResId() {
|
||||
return R.drawable.gesture_tutorial_loop_home;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
Integer getGestureVideoResId() {
|
||||
return R.drawable.gesture_tutorial_loop_home;
|
||||
protected Animator createGestureAnimation() {
|
||||
if (!(mTutorialController instanceof HomeGestureTutorialController)) {
|
||||
return null;
|
||||
}
|
||||
float fingerDotStartTranslationY = (float) mRootView.getFullscreenHeight() / 2;
|
||||
HomeGestureTutorialController controller =
|
||||
(HomeGestureTutorialController) mTutorialController;
|
||||
|
||||
AnimatorSet fingerDotAppearanceAnimator = controller.createFingerDotAppearanceAnimatorSet();
|
||||
fingerDotAppearanceAnimator.addListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationStart(Animator animation) {
|
||||
super.onAnimationStart(animation);
|
||||
mFingerDotView.setTranslationY(fingerDotStartTranslationY);
|
||||
}
|
||||
});
|
||||
|
||||
Animator animationPause = controller.createAnimationPause();
|
||||
animationPause.addListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
super.onAnimationEnd(animation);
|
||||
controller.resetFakeTaskView();
|
||||
}
|
||||
});
|
||||
ArrayList<Animator> animators = new ArrayList<>();
|
||||
|
||||
animators.add(fingerDotAppearanceAnimator);
|
||||
animators.add(controller.createFingerDotHomeSwipeAnimator(fingerDotStartTranslationY));
|
||||
animators.add(controller.createFingerDotDisappearanceAnimatorSet());
|
||||
animators.add(animationPause);
|
||||
|
||||
AnimatorSet finalAnimation = new AnimatorSet();
|
||||
finalAnimation.addListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationCancel(Animator animation) {
|
||||
super.onAnimationCancel(animation);
|
||||
controller.resetFakeTaskView();
|
||||
}
|
||||
});
|
||||
finalAnimation.playSequentially(animators);
|
||||
|
||||
return finalAnimation;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -45,4 +93,10 @@ public class HomeGestureTutorialFragment extends TutorialFragment {
|
||||
Class<? extends TutorialController> getControllerClass() {
|
||||
return HomeGestureTutorialController.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onTouch(View view, MotionEvent motionEvent) {
|
||||
releaseFeedbackAnimation();
|
||||
return super.onTouch(view, motionEvent);
|
||||
}
|
||||
}
|
||||
|
||||
+13
-9
@@ -49,8 +49,8 @@ final class OverviewGestureTutorialController extends SwipeUpGestureTutorialCont
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getMockAppTaskThumbnailResId(boolean forDarkMode) {
|
||||
return R.drawable.mock_conversations_list;
|
||||
protected int getMockAppTaskLayoutResId() {
|
||||
return R.layout.gesture_tutorial_mock_conversation_list;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -98,13 +98,8 @@ final class OverviewGestureTutorialController extends SwipeUpGestureTutorialCont
|
||||
showFeedback(R.string.overview_gesture_feedback_swipe_too_far_from_edge);
|
||||
break;
|
||||
case OVERVIEW_GESTURE_COMPLETED:
|
||||
mTutorialFragment.releaseGestureVideoView();
|
||||
PendingAnimation anim = new PendingAnimation(300);
|
||||
anim.setFloat(mTaskViewSwipeUpAnimation
|
||||
.getCurrentShift(), AnimatedFloat.VALUE, 1, ACCEL);
|
||||
AnimatorSet animset = anim.buildAnim();
|
||||
animset.start();
|
||||
mRunningWindowAnim = SwipeUpAnimationLogic.RunningWindowAnim.wrap(animset);
|
||||
mTutorialFragment.releaseFeedbackAnimation();
|
||||
animateTaskViewToOverview();
|
||||
onMotionPaused(true /*arbitrary value*/);
|
||||
int subtitleResId = mTutorialFragment.getNumSteps() > 1
|
||||
&& mTutorialFragment.isAtFinalStep()
|
||||
@@ -126,4 +121,13 @@ final class OverviewGestureTutorialController extends SwipeUpGestureTutorialCont
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void animateTaskViewToOverview() {
|
||||
PendingAnimation anim = new PendingAnimation(300);
|
||||
anim.setFloat(mTaskViewSwipeUpAnimation
|
||||
.getCurrentShift(), AnimatedFloat.VALUE, 1, ACCEL);
|
||||
AnimatorSet animset = anim.buildAnim();
|
||||
animset.start();
|
||||
mRunningWindowAnim = SwipeUpAnimationLogic.RunningWindowAnim.wrap(animset);
|
||||
}
|
||||
}
|
||||
|
||||
+83
-6
@@ -15,25 +15,96 @@
|
||||
*/
|
||||
package com.android.quickstep.interaction;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.AnimatorSet;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.android.launcher3.R;
|
||||
import com.android.quickstep.interaction.TutorialController.TutorialType;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/** Shows the Overview gesture interactive tutorial. */
|
||||
public class OverviewGestureTutorialFragment extends TutorialFragment {
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
Integer getFeedbackVideoResId(boolean forDarkMode) {
|
||||
return forDarkMode
|
||||
? R.drawable.gesture_tutorial_motion_overview_dark_mode
|
||||
: R.drawable.gesture_tutorial_motion_overview_light_mode;
|
||||
Integer getEdgeAnimationResId() {
|
||||
return R.drawable.gesture_tutorial_loop_overview;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
Integer getGestureVideoResId() {
|
||||
return R.drawable.gesture_tutorial_loop_overview;
|
||||
protected Animator createGestureAnimation() {
|
||||
if (!(mTutorialController instanceof OverviewGestureTutorialController)) {
|
||||
return null;
|
||||
}
|
||||
float fingerDotStartTranslationY = (float) mRootView.getFullscreenHeight() / 2;
|
||||
OverviewGestureTutorialController controller =
|
||||
(OverviewGestureTutorialController) mTutorialController;
|
||||
|
||||
AnimatorSet fingerDotAppearanceAnimator = controller.createFingerDotAppearanceAnimatorSet();
|
||||
fingerDotAppearanceAnimator.addListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationStart(Animator animation) {
|
||||
super.onAnimationStart(animation);
|
||||
|
||||
mFingerDotView.setTranslationY(fingerDotStartTranslationY);
|
||||
}
|
||||
});
|
||||
|
||||
Animator swipeAnimator =
|
||||
controller.createFingerDotOverviewSwipeAnimator(fingerDotStartTranslationY);
|
||||
swipeAnimator.addListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
super.onAnimationEnd(animation);
|
||||
mFakePreviousTaskView.setVisibility(View.VISIBLE);
|
||||
controller.onMotionPaused(true /*arbitrary value*/);
|
||||
}
|
||||
});
|
||||
|
||||
AnimatorSet fingerDotDisappearanceAnimator =
|
||||
controller.createFingerDotDisappearanceAnimatorSet();
|
||||
fingerDotDisappearanceAnimator.addListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationStart(Animator animation) {
|
||||
super.onAnimationStart(animation);
|
||||
controller.animateTaskViewToOverview();
|
||||
}
|
||||
});
|
||||
|
||||
Animator animationPause = controller.createAnimationPause();
|
||||
animationPause.addListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
super.onAnimationEnd(animation);
|
||||
controller.resetFakeTaskView();
|
||||
}
|
||||
});
|
||||
ArrayList<Animator> animators = new ArrayList<>();
|
||||
|
||||
animators.add(fingerDotAppearanceAnimator);
|
||||
animators.add(swipeAnimator);
|
||||
animators.add(controller.createAnimationPause());
|
||||
animators.add(fingerDotDisappearanceAnimator);
|
||||
animators.add(animationPause);
|
||||
|
||||
AnimatorSet finalAnimation = new AnimatorSet();
|
||||
finalAnimation.addListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationCancel(Animator animation) {
|
||||
super.onAnimationCancel(animation);
|
||||
controller.resetFakeTaskView();
|
||||
}
|
||||
});
|
||||
finalAnimation.playSequentially(animators);
|
||||
|
||||
return finalAnimation;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -45,4 +116,10 @@ public class OverviewGestureTutorialFragment extends TutorialFragment {
|
||||
Class<? extends TutorialController> getControllerClass() {
|
||||
return OverviewGestureTutorialController.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onTouch(View view, MotionEvent motionEvent) {
|
||||
releaseFeedbackAnimation();
|
||||
return super.onTouch(view, motionEvent);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,8 +16,10 @@
|
||||
package com.android.quickstep.interaction;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Insets;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.WindowInsets;
|
||||
import android.widget.RelativeLayout;
|
||||
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
@@ -41,4 +43,13 @@ public class RootSandboxLayout extends RelativeLayout {
|
||||
return ((TutorialFragment) FragmentManager.findFragment(this))
|
||||
.onInterceptTouch(motionEvent);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns this view's fullscreen height. This method is agnostic of this view's actual height.
|
||||
*/
|
||||
public int getFullscreenHeight() {
|
||||
Insets insets = getRootWindowInsets().getInsets(WindowInsets.Type.systemBars());
|
||||
|
||||
return getHeight() + insets.top + insets.bottom;
|
||||
}
|
||||
}
|
||||
|
||||
+49
-15
@@ -25,6 +25,7 @@ import static com.android.quickstep.interaction.TutorialController.TutorialType.
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.AnimatorSet;
|
||||
import android.animation.ValueAnimator;
|
||||
import android.annotation.TargetApi;
|
||||
import android.content.Context;
|
||||
import android.graphics.Outline;
|
||||
@@ -32,7 +33,6 @@ import android.graphics.PointF;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.RectF;
|
||||
import android.os.Build;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.view.SurfaceControl;
|
||||
import android.view.View;
|
||||
import android.view.ViewOutlineProvider;
|
||||
@@ -63,23 +63,24 @@ abstract class SwipeUpGestureTutorialController extends TutorialController {
|
||||
|
||||
private static final int FAKE_PREVIOUS_TASK_MARGIN = Utilities.dpToPx(12);
|
||||
|
||||
private static final long HOME_SWIPE_ANIMATION_DURATION_MILLIS = 625;
|
||||
private static final long OVERVIEW_SWIPE_ANIMATION_DURATION_MILLIS = 1000;
|
||||
|
||||
final ViewSwipeUpAnimation mTaskViewSwipeUpAnimation;
|
||||
private float mFakeTaskViewRadius;
|
||||
private Rect mFakeTaskViewRect = new Rect();
|
||||
private final Rect mFakeTaskViewRect = new Rect();
|
||||
RunningWindowAnim mRunningWindowAnim;
|
||||
private boolean mShowTasks = false;
|
||||
private boolean mShowPreviousTasks = false;
|
||||
|
||||
private AnimatorListenerAdapter mResetTaskView = new AnimatorListenerAdapter() {
|
||||
private final AnimatorListenerAdapter mResetTaskView = new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
mFakeHotseatView.setVisibility(View.INVISIBLE);
|
||||
mFakeIconView.setVisibility(View.INVISIBLE);
|
||||
if (mTutorialFragment.getActivity() != null) {
|
||||
DisplayMetrics displayMetrics =
|
||||
mTutorialFragment.getResources().getDisplayMetrics();
|
||||
int height = displayMetrics.heightPixels;
|
||||
int width = displayMetrics.widthPixels;
|
||||
int height = mTutorialFragment.getRootView().getFullscreenHeight();
|
||||
int width = mTutorialFragment.getRootView().getWidth();
|
||||
mFakeTaskViewRect.set(0, 0, width, height);
|
||||
}
|
||||
mFakeTaskViewRadius = 0;
|
||||
@@ -108,9 +109,8 @@ abstract class SwipeUpGestureTutorialController extends TutorialController {
|
||||
.copy(mContext);
|
||||
mTaskViewSwipeUpAnimation.initDp(dp);
|
||||
|
||||
DisplayMetrics displayMetrics = mContext.getResources().getDisplayMetrics();
|
||||
int height = displayMetrics.heightPixels;
|
||||
int width = displayMetrics.widthPixels;
|
||||
int height = mTutorialFragment.getRootView().getFullscreenHeight();
|
||||
int width = mTutorialFragment.getRootView().getWidth();
|
||||
mFakeTaskViewRect.set(0, 0, width, height);
|
||||
mFakeTaskViewRadius = 0;
|
||||
|
||||
@@ -138,7 +138,6 @@ abstract class SwipeUpGestureTutorialController extends TutorialController {
|
||||
/** Fades the task view, optionally after animating to a fake Overview. */
|
||||
void fadeOutFakeTaskView(boolean toOverviewFirst, boolean reset,
|
||||
@Nullable Runnable onEndRunnable) {
|
||||
hideFeedback(true);
|
||||
cancelRunningAnimation();
|
||||
PendingAnimation anim = new PendingAnimation(300);
|
||||
if (toOverviewFirst) {
|
||||
@@ -184,6 +183,7 @@ abstract class SwipeUpGestureTutorialController extends TutorialController {
|
||||
}
|
||||
|
||||
void resetFakeTaskView() {
|
||||
mFakeTaskView.setVisibility(View.VISIBLE);
|
||||
PendingAnimation anim = new PendingAnimation(300);
|
||||
anim.setFloat(mTaskViewSwipeUpAnimation
|
||||
.getCurrentShift(), AnimatedFloat.VALUE, 0, ACCEL);
|
||||
@@ -195,7 +195,6 @@ abstract class SwipeUpGestureTutorialController extends TutorialController {
|
||||
}
|
||||
|
||||
void animateFakeTaskViewHome(PointF finalVelocity, @Nullable Runnable onEndRunnable) {
|
||||
hideFeedback(true);
|
||||
cancelRunningAnimation();
|
||||
mFakePreviousTaskView.setVisibility(View.INVISIBLE);
|
||||
mFakeHotseatView.setVisibility(View.VISIBLE);
|
||||
@@ -218,9 +217,6 @@ abstract class SwipeUpGestureTutorialController extends TutorialController {
|
||||
if (mGestureCompleted) {
|
||||
return;
|
||||
}
|
||||
if (displacement != null) {
|
||||
hideFeedback(true);
|
||||
}
|
||||
if (mTutorialType == HOME_NAVIGATION_COMPLETE
|
||||
|| mTutorialType == OVERVIEW_NAVIGATION_COMPLETE) {
|
||||
mFakeTaskView.setVisibility(View.INVISIBLE);
|
||||
@@ -336,6 +332,44 @@ abstract class SwipeUpGestureTutorialController extends TutorialController {
|
||||
}
|
||||
}
|
||||
|
||||
protected Animator createFingerDotHomeSwipeAnimator(float fingerDotStartTranslationY) {
|
||||
Animator homeSwipeAnimator = createFingerDotSwipeUpAnimator(fingerDotStartTranslationY)
|
||||
.setDuration(HOME_SWIPE_ANIMATION_DURATION_MILLIS);
|
||||
|
||||
homeSwipeAnimator.addListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
super.onAnimationEnd(animation);
|
||||
animateFakeTaskViewHome(
|
||||
new PointF(
|
||||
0f,
|
||||
fingerDotStartTranslationY / HOME_SWIPE_ANIMATION_DURATION_MILLIS),
|
||||
null);
|
||||
}
|
||||
});
|
||||
|
||||
return homeSwipeAnimator;
|
||||
}
|
||||
|
||||
protected Animator createFingerDotOverviewSwipeAnimator(float fingerDotStartTranslationY) {
|
||||
return createFingerDotSwipeUpAnimator(fingerDotStartTranslationY)
|
||||
.setDuration(OVERVIEW_SWIPE_ANIMATION_DURATION_MILLIS);
|
||||
}
|
||||
|
||||
|
||||
private Animator createFingerDotSwipeUpAnimator(float fingerDotStartTranslationY) {
|
||||
ValueAnimator swipeAnimator = ValueAnimator.ofFloat(0f, 1f);
|
||||
|
||||
swipeAnimator.addUpdateListener(valueAnimator -> {
|
||||
float gestureProgress =
|
||||
-fingerDotStartTranslationY * valueAnimator.getAnimatedFraction();
|
||||
setNavBarGestureProgress(gestureProgress);
|
||||
mFingerDotView.setTranslationY(fingerDotStartTranslationY + gestureProgress);
|
||||
});
|
||||
|
||||
return swipeAnimator;
|
||||
}
|
||||
|
||||
private class FakeTransformParams extends TransformParams {
|
||||
|
||||
@Override
|
||||
|
||||
@@ -16,25 +16,32 @@
|
||||
package com.android.quickstep.interaction;
|
||||
|
||||
import static android.view.View.GONE;
|
||||
import static android.view.View.NO_ID;
|
||||
import static android.view.View.inflate;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.AnimatorSet;
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.animation.ValueAnimator;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.graphics.drawable.Animatable2;
|
||||
import android.graphics.drawable.AnimatedVectorDrawable;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.graphics.drawable.RippleDrawable;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.accessibility.AccessibilityEvent;
|
||||
import android.widget.Button;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.CallSuper;
|
||||
import androidx.annotation.DrawableRes;
|
||||
import androidx.annotation.LayoutRes;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.StringRes;
|
||||
@@ -48,18 +55,25 @@ import com.android.launcher3.views.ClipIconView;
|
||||
import com.android.quickstep.interaction.EdgeBackGestureHandler.BackGestureAttemptCallback;
|
||||
import com.android.quickstep.interaction.NavBarGestureHandler.NavBarGestureAttemptCallback;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
abstract class TutorialController implements BackGestureAttemptCallback,
|
||||
NavBarGestureAttemptCallback {
|
||||
|
||||
private static final String TAG = "TutorialController";
|
||||
|
||||
private static final float FINGER_DOT_VISIBLE_ALPHA = 0.6f;
|
||||
private static final float FINGER_DOT_SMALL_SCALE = 0.7f;
|
||||
private static final int FINGER_DOT_ANIMATION_DURATION_MILLIS = 500;
|
||||
|
||||
private static final String PIXEL_TIPS_APP_PACKAGE_NAME = "com.google.android.apps.tips";
|
||||
private static final CharSequence DEFAULT_PIXEL_TIPS_APP_NAME = "Pixel Tips";
|
||||
|
||||
private static final int FEEDBACK_ANIMATION_MS = 250;
|
||||
private static final int FEEDBACK_ANIMATION_MS = 133;
|
||||
private static final int RIPPLE_VISIBLE_MS = 300;
|
||||
private static final int GESTURE_ANIMATION_DELAY_MS = 1500;
|
||||
private static final int ADVANCE_TUTORIAL_TIMEOUT_MS = 4000;
|
||||
private static final long GESTURE_ANIMATION_PAUSE_DURATION_MILLIS = 1000;
|
||||
|
||||
final TutorialFragment mTutorialFragment;
|
||||
TutorialType mTutorialType;
|
||||
@@ -68,17 +82,17 @@ abstract class TutorialController implements BackGestureAttemptCallback,
|
||||
final TextView mCloseButton;
|
||||
final ViewGroup mFeedbackView;
|
||||
final TextView mFeedbackTitleView;
|
||||
final ImageView mFeedbackVideoView;
|
||||
final ImageView mGestureVideoView;
|
||||
final ImageView mEdgeGestureVideoView;
|
||||
final RelativeLayout mFakeLauncherView;
|
||||
final ImageView mFakeHotseatView;
|
||||
final ClipIconView mFakeIconView;
|
||||
final View mFakeTaskView;
|
||||
final FrameLayout mFakeTaskView;
|
||||
final View mFakePreviousTaskView;
|
||||
final View mRippleView;
|
||||
final RippleDrawable mRippleDrawable;
|
||||
final Button mActionButton;
|
||||
final TutorialStepIndicator mTutorialStepView;
|
||||
final ImageView mFingerDotView;
|
||||
private final AlertDialog mSkipTutorialDialog;
|
||||
|
||||
protected boolean mGestureCompleted = false;
|
||||
@@ -87,7 +101,8 @@ abstract class TutorialController implements BackGestureAttemptCallback,
|
||||
// views before posting new callbacks.
|
||||
private final Runnable mTitleViewCallback;
|
||||
@Nullable private Runnable mFeedbackViewCallback;
|
||||
@Nullable private Runnable mFeedbackVideoViewCallback;
|
||||
@Nullable private Runnable mFakeTaskViewCallback;
|
||||
private final Runnable mShowFeedbackRunnable;
|
||||
|
||||
TutorialController(TutorialFragment tutorialFragment, TutorialType tutorialType) {
|
||||
mTutorialFragment = tutorialFragment;
|
||||
@@ -100,8 +115,7 @@ abstract class TutorialController implements BackGestureAttemptCallback,
|
||||
mFeedbackView = rootView.findViewById(R.id.gesture_tutorial_fragment_feedback_view);
|
||||
mFeedbackTitleView = mFeedbackView.findViewById(
|
||||
R.id.gesture_tutorial_fragment_feedback_title);
|
||||
mFeedbackVideoView = rootView.findViewById(R.id.gesture_tutorial_feedback_video);
|
||||
mGestureVideoView = rootView.findViewById(R.id.gesture_tutorial_gesture_video);
|
||||
mEdgeGestureVideoView = rootView.findViewById(R.id.gesture_tutorial_edge_gesture_video);
|
||||
mFakeLauncherView = rootView.findViewById(R.id.gesture_tutorial_fake_launcher_view);
|
||||
mFakeHotseatView = rootView.findViewById(R.id.gesture_tutorial_fake_hotseat_view);
|
||||
mFakeIconView = rootView.findViewById(R.id.gesture_tutorial_fake_icon_view);
|
||||
@@ -113,10 +127,34 @@ abstract class TutorialController implements BackGestureAttemptCallback,
|
||||
mActionButton = rootView.findViewById(R.id.gesture_tutorial_fragment_action_button);
|
||||
mTutorialStepView =
|
||||
rootView.findViewById(R.id.gesture_tutorial_fragment_feedback_tutorial_step);
|
||||
mFingerDotView = rootView.findViewById(R.id.gesture_tutorial_finger_dot);
|
||||
mSkipTutorialDialog = createSkipTutorialDialog();
|
||||
|
||||
mTitleViewCallback = () -> mFeedbackTitleView.sendAccessibilityEvent(
|
||||
AccessibilityEvent.TYPE_VIEW_FOCUSED);
|
||||
mShowFeedbackRunnable = () -> {
|
||||
mFeedbackView.setAlpha(0f);
|
||||
mFeedbackView.setScaleX(0.95f);
|
||||
mFeedbackView.setScaleY(0.95f);
|
||||
mFeedbackView.setVisibility(View.VISIBLE);
|
||||
mFeedbackView.animate()
|
||||
.setDuration(FEEDBACK_ANIMATION_MS)
|
||||
.alpha(1f)
|
||||
.scaleX(1f)
|
||||
.scaleY(1f)
|
||||
.withEndAction(() -> {
|
||||
if (mGestureCompleted && !mTutorialFragment.isAtFinalStep()) {
|
||||
if (mFeedbackViewCallback != null) {
|
||||
mFeedbackView.removeCallbacks(mFeedbackViewCallback);
|
||||
}
|
||||
mFeedbackViewCallback = mTutorialFragment::continueTutorial;
|
||||
mFeedbackView.postDelayed(mFeedbackViewCallback,
|
||||
ADVANCE_TUTORIAL_TIMEOUT_MS);
|
||||
}
|
||||
})
|
||||
.start();
|
||||
mFeedbackTitleView.postDelayed(mTitleViewCallback, FEEDBACK_ANIMATION_MS);
|
||||
};
|
||||
}
|
||||
|
||||
private void showSkipTutorialDialog() {
|
||||
@@ -134,9 +172,9 @@ abstract class TutorialController implements BackGestureAttemptCallback,
|
||||
return R.drawable.default_sandbox_mock_launcher;
|
||||
}
|
||||
|
||||
@DrawableRes
|
||||
protected int getMockAppTaskThumbnailResId(boolean forDarkMode) {
|
||||
return R.drawable.default_sandbox_app_task_thumbnail;
|
||||
@LayoutRes
|
||||
protected int getMockAppTaskLayoutResId() {
|
||||
return View.NO_ID;
|
||||
}
|
||||
|
||||
@DrawableRes
|
||||
@@ -173,17 +211,10 @@ abstract class TutorialController implements BackGestureAttemptCallback,
|
||||
mFeedbackView.setTranslationY(0);
|
||||
return;
|
||||
}
|
||||
AnimatedVectorDrawable tutorialAnimation = mTutorialFragment.getTutorialAnimation();
|
||||
AnimatedVectorDrawable gestureAnimation = mTutorialFragment.getGestureAnimation();
|
||||
|
||||
if (tutorialAnimation != null && gestureAnimation != null) {
|
||||
TextView title = mFeedbackView.findViewById(
|
||||
R.id.gesture_tutorial_fragment_feedback_title);
|
||||
|
||||
playFeedbackVideo(tutorialAnimation, gestureAnimation, () -> {
|
||||
mFeedbackView.setTranslationY(0);
|
||||
title.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
|
||||
}, true);
|
||||
Animator gestureAnimation = mTutorialFragment.getGestureAnimation();
|
||||
AnimatedVectorDrawable edgeAnimation = mTutorialFragment.getEdgeAnimation();
|
||||
if (gestureAnimation != null && edgeAnimation != null) {
|
||||
playFeedbackAnimation(gestureAnimation, edgeAnimation, mShowFeedbackRunnable, true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -215,8 +246,13 @@ abstract class TutorialController implements BackGestureAttemptCallback,
|
||||
int subtitleResId,
|
||||
boolean isGestureSuccessful,
|
||||
boolean useGestureAnimationDelay) {
|
||||
mFeedbackTitleView.setText(titleResId);
|
||||
mFeedbackTitleView.removeCallbacks(mTitleViewCallback);
|
||||
if (mFeedbackViewCallback != null) {
|
||||
mFeedbackView.removeCallbacks(mFeedbackViewCallback);
|
||||
mFeedbackViewCallback = null;
|
||||
}
|
||||
|
||||
mFeedbackTitleView.setText(titleResId);
|
||||
TextView subtitle =
|
||||
mFeedbackView.findViewById(R.id.gesture_tutorial_fragment_feedback_subtitle);
|
||||
subtitle.setText(subtitleResId);
|
||||
@@ -226,77 +262,68 @@ abstract class TutorialController implements BackGestureAttemptCallback,
|
||||
showActionButton();
|
||||
}
|
||||
|
||||
if (mFeedbackVideoViewCallback != null) {
|
||||
mFeedbackVideoView.removeCallbacks(mFeedbackVideoViewCallback);
|
||||
mFeedbackVideoViewCallback = null;
|
||||
if (mFakeTaskViewCallback != null) {
|
||||
mFakeTaskView.removeCallbacks(mFakeTaskViewCallback);
|
||||
mFakeTaskViewCallback = null;
|
||||
}
|
||||
}
|
||||
mGestureCompleted = isGestureSuccessful;
|
||||
|
||||
AnimatedVectorDrawable tutorialAnimation = mTutorialFragment.getTutorialAnimation();
|
||||
AnimatedVectorDrawable gestureAnimation = mTutorialFragment.getGestureAnimation();
|
||||
if (tutorialAnimation != null && gestureAnimation != null) {
|
||||
if (!isGestureSuccessful) {
|
||||
playFeedbackVideo(tutorialAnimation, gestureAnimation, () -> {
|
||||
mFeedbackView.setTranslationY(
|
||||
-mFeedbackView.getHeight() - mFeedbackView.getTop());
|
||||
mFeedbackView.setVisibility(View.VISIBLE);
|
||||
mFeedbackView.animate()
|
||||
.setDuration(FEEDBACK_ANIMATION_MS)
|
||||
.translationY(0)
|
||||
.start();
|
||||
mFeedbackTitleView.postDelayed(mTitleViewCallback, FEEDBACK_ANIMATION_MS);
|
||||
}, useGestureAnimationDelay);
|
||||
return;
|
||||
} else {
|
||||
mTutorialFragment.releaseFeedbackVideoView();
|
||||
}
|
||||
Animator gestureAnimation = mTutorialFragment.getGestureAnimation();
|
||||
AnimatedVectorDrawable edgeAnimation = mTutorialFragment.getEdgeAnimation();
|
||||
if (!isGestureSuccessful && gestureAnimation != null && edgeAnimation != null) {
|
||||
playFeedbackAnimation(
|
||||
gestureAnimation,
|
||||
edgeAnimation,
|
||||
mShowFeedbackRunnable,
|
||||
useGestureAnimationDelay);
|
||||
return;
|
||||
} else {
|
||||
mTutorialFragment.releaseFeedbackAnimation();
|
||||
}
|
||||
mFeedbackView.setTranslationY(-mFeedbackView.getHeight() - mFeedbackView.getTop());
|
||||
mFeedbackView.setVisibility(View.VISIBLE);
|
||||
mFeedbackView.animate()
|
||||
.setDuration(FEEDBACK_ANIMATION_MS)
|
||||
.translationY(0)
|
||||
.withEndAction(() -> {
|
||||
if (isGestureSuccessful && !mTutorialFragment.isAtFinalStep()) {
|
||||
if (mFeedbackViewCallback != null) {
|
||||
mFeedbackView.removeCallbacks(mFeedbackViewCallback);
|
||||
}
|
||||
mFeedbackViewCallback = mTutorialFragment::continueTutorial;
|
||||
mFeedbackView.postDelayed(mFeedbackViewCallback,
|
||||
ADVANCE_TUTORIAL_TIMEOUT_MS);
|
||||
}
|
||||
})
|
||||
.start();
|
||||
mFeedbackTitleView.postDelayed(mTitleViewCallback, FEEDBACK_ANIMATION_MS);
|
||||
mFeedbackViewCallback = mShowFeedbackRunnable;
|
||||
|
||||
mFeedbackView.post(mFeedbackViewCallback);
|
||||
}
|
||||
|
||||
void hideFeedback(boolean releaseFeedbackVideo) {
|
||||
void hideFeedback() {
|
||||
cancelQueuedGestureAnimation();
|
||||
mFeedbackView.clearAnimation();
|
||||
mFeedbackView.setVisibility(View.INVISIBLE);
|
||||
if (releaseFeedbackVideo) {
|
||||
mTutorialFragment.releaseFeedbackVideoView();
|
||||
}
|
||||
}
|
||||
|
||||
private void playFeedbackVideo(
|
||||
@NonNull AnimatedVectorDrawable tutorialAnimation,
|
||||
@NonNull AnimatedVectorDrawable gestureAnimation,
|
||||
void cancelQueuedGestureAnimation() {
|
||||
if (mFeedbackViewCallback != null) {
|
||||
mFeedbackView.removeCallbacks(mFeedbackViewCallback);
|
||||
mFeedbackViewCallback = null;
|
||||
}
|
||||
if (mFakeTaskViewCallback != null) {
|
||||
mFakeTaskView.removeCallbacks(mFakeTaskViewCallback);
|
||||
mFakeTaskViewCallback = null;
|
||||
}
|
||||
mFeedbackTitleView.removeCallbacks(mTitleViewCallback);
|
||||
}
|
||||
|
||||
private void playFeedbackAnimation(
|
||||
@NonNull Animator gestureAnimation,
|
||||
@NonNull AnimatedVectorDrawable edgeAnimation,
|
||||
@NonNull Runnable onStartRunnable,
|
||||
boolean useGestureAnimationDelay) {
|
||||
|
||||
if (tutorialAnimation.isRunning()) {
|
||||
tutorialAnimation.reset();
|
||||
if (gestureAnimation.isRunning()) {
|
||||
gestureAnimation.cancel();
|
||||
}
|
||||
tutorialAnimation.registerAnimationCallback(new Animatable2.AnimationCallback() {
|
||||
|
||||
if (edgeAnimation.isRunning()) {
|
||||
edgeAnimation.reset();
|
||||
}
|
||||
gestureAnimation.addListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationStart(Drawable drawable) {
|
||||
super.onAnimationStart(drawable);
|
||||
public void onAnimationStart(Animator animation) {
|
||||
super.onAnimationStart(animation);
|
||||
|
||||
mGestureVideoView.setVisibility(GONE);
|
||||
if (gestureAnimation.isRunning()) {
|
||||
gestureAnimation.stop();
|
||||
mEdgeGestureVideoView.setVisibility(GONE);
|
||||
if (edgeAnimation.isRunning()) {
|
||||
edgeAnimation.stop();
|
||||
}
|
||||
|
||||
if (!useGestureAnimationDelay) {
|
||||
@@ -305,37 +332,25 @@ abstract class TutorialController implements BackGestureAttemptCallback,
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAnimationEnd(Drawable drawable) {
|
||||
super.onAnimationEnd(drawable);
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
super.onAnimationEnd(animation);
|
||||
|
||||
mGestureVideoView.setVisibility(View.VISIBLE);
|
||||
gestureAnimation.start();
|
||||
mEdgeGestureVideoView.setVisibility(View.VISIBLE);
|
||||
edgeAnimation.start();
|
||||
|
||||
tutorialAnimation.unregisterAnimationCallback(this);
|
||||
gestureAnimation.removeListener(this);
|
||||
}
|
||||
});
|
||||
|
||||
if (mFeedbackViewCallback != null) {
|
||||
mFeedbackVideoView.removeCallbacks(mFeedbackViewCallback);
|
||||
mFeedbackViewCallback = null;
|
||||
}
|
||||
if (mFeedbackVideoViewCallback != null) {
|
||||
mFeedbackVideoView.removeCallbacks(mFeedbackVideoViewCallback);
|
||||
mFeedbackVideoViewCallback = null;
|
||||
}
|
||||
cancelQueuedGestureAnimation();
|
||||
if (useGestureAnimationDelay) {
|
||||
mFeedbackViewCallback = onStartRunnable;
|
||||
mFeedbackVideoViewCallback = () -> {
|
||||
mFeedbackVideoView.setVisibility(View.VISIBLE);
|
||||
tutorialAnimation.start();
|
||||
};
|
||||
mFakeTaskViewCallback = gestureAnimation::start;
|
||||
|
||||
mFeedbackVideoView.setVisibility(View.GONE);
|
||||
mFeedbackView.post(mFeedbackViewCallback);
|
||||
mFeedbackVideoView.postDelayed(mFeedbackVideoViewCallback, GESTURE_ANIMATION_DELAY_MS);
|
||||
mFakeTaskView.postDelayed(mFakeTaskViewCallback, GESTURE_ANIMATION_DELAY_MS);
|
||||
} else {
|
||||
mFeedbackVideoView.setVisibility(View.VISIBLE);
|
||||
tutorialAnimation.start();
|
||||
gestureAnimation.start();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -360,7 +375,7 @@ abstract class TutorialController implements BackGestureAttemptCallback,
|
||||
|
||||
@CallSuper
|
||||
void transitToController() {
|
||||
hideFeedback(false);
|
||||
hideFeedback();
|
||||
hideActionButton();
|
||||
updateSubtext();
|
||||
updateDrawables();
|
||||
@@ -395,6 +410,17 @@ abstract class TutorialController implements BackGestureAttemptCallback,
|
||||
mActionButton.setOnClickListener(this::onActionButtonClicked);
|
||||
}
|
||||
|
||||
void updateFakeAppTaskViewLayout(@LayoutRes int mockAppTaskLayoutResId) {
|
||||
mFakeTaskView.removeAllViews();
|
||||
if (mockAppTaskLayoutResId != NO_ID) {
|
||||
mFakeTaskView.addView(
|
||||
inflate(mContext, mockAppTaskLayoutResId, null),
|
||||
new FrameLayout.LayoutParams(
|
||||
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
ViewGroup.LayoutParams.MATCH_PARENT));
|
||||
}
|
||||
}
|
||||
|
||||
private void updateSubtext() {
|
||||
mTutorialStepView.setTutorialProgress(
|
||||
mTutorialFragment.getCurrentStep(), mTutorialFragment.getNumSteps());
|
||||
@@ -404,15 +430,12 @@ abstract class TutorialController implements BackGestureAttemptCallback,
|
||||
if (mContext != null) {
|
||||
mTutorialFragment.getRootView().setBackground(AppCompatResources.getDrawable(
|
||||
mContext, getMockWallpaperResId()));
|
||||
mTutorialFragment.updateFeedbackVideo();
|
||||
mTutorialFragment.updateFeedbackAnimation();
|
||||
mFakeLauncherView.setBackgroundColor(
|
||||
mContext.getColor(Utilities.isDarkTheme(mContext)
|
||||
? R.color.fake_wallpaper_color_dark_mode
|
||||
: R.color.fake_wallpaper_color_light_mode));
|
||||
mContext.getColor(R.color.gesture_tutorial_fake_wallpaper_color));
|
||||
mFakeHotseatView.setImageDrawable(AppCompatResources.getDrawable(
|
||||
mContext, getMockHotseatResId()));
|
||||
mFakeTaskView.setBackground(AppCompatResources.getDrawable(
|
||||
mContext, getMockAppTaskThumbnailResId(Utilities.isDarkTheme(mContext))));
|
||||
updateFakeAppTaskViewLayout(getMockAppTaskLayoutResId());
|
||||
mFakeTaskView.animate().alpha(1).setListener(
|
||||
AnimatorListeners.forSuccessCallback(() -> mFakeTaskView.animate().cancel()));
|
||||
mFakePreviousTaskView.setBackground(AppCompatResources.getDrawable(
|
||||
@@ -485,6 +508,52 @@ abstract class TutorialController implements BackGestureAttemptCallback,
|
||||
return null;
|
||||
}
|
||||
|
||||
protected AnimatorSet createFingerDotAppearanceAnimatorSet() {
|
||||
ObjectAnimator alphaAnimator = ObjectAnimator.ofFloat(
|
||||
mFingerDotView, View.ALPHA, 0f, FINGER_DOT_VISIBLE_ALPHA);
|
||||
ObjectAnimator yScaleAnimator = ObjectAnimator.ofFloat(
|
||||
mFingerDotView, View.SCALE_Y, FINGER_DOT_SMALL_SCALE, 1f);
|
||||
ObjectAnimator xScaleAnimator = ObjectAnimator.ofFloat(
|
||||
mFingerDotView, View.SCALE_X, FINGER_DOT_SMALL_SCALE, 1f);
|
||||
ArrayList<Animator> animators = new ArrayList<>();
|
||||
|
||||
animators.add(alphaAnimator);
|
||||
animators.add(xScaleAnimator);
|
||||
animators.add(yScaleAnimator);
|
||||
|
||||
AnimatorSet appearanceAnimatorSet = new AnimatorSet();
|
||||
|
||||
appearanceAnimatorSet.playTogether(animators);
|
||||
appearanceAnimatorSet.setDuration(FINGER_DOT_ANIMATION_DURATION_MILLIS);
|
||||
|
||||
return appearanceAnimatorSet;
|
||||
}
|
||||
|
||||
protected AnimatorSet createFingerDotDisappearanceAnimatorSet() {
|
||||
ObjectAnimator alphaAnimator = ObjectAnimator.ofFloat(
|
||||
mFingerDotView, View.ALPHA, FINGER_DOT_VISIBLE_ALPHA, 0f);
|
||||
ObjectAnimator yScaleAnimator = ObjectAnimator.ofFloat(
|
||||
mFingerDotView, View.SCALE_Y, 1f, FINGER_DOT_SMALL_SCALE);
|
||||
ObjectAnimator xScaleAnimator = ObjectAnimator.ofFloat(
|
||||
mFingerDotView, View.SCALE_X, 1f, FINGER_DOT_SMALL_SCALE);
|
||||
ArrayList<Animator> animators = new ArrayList<>();
|
||||
|
||||
animators.add(alphaAnimator);
|
||||
animators.add(xScaleAnimator);
|
||||
animators.add(yScaleAnimator);
|
||||
|
||||
AnimatorSet appearanceAnimatorSet = new AnimatorSet();
|
||||
|
||||
appearanceAnimatorSet.playTogether(animators);
|
||||
appearanceAnimatorSet.setDuration(FINGER_DOT_ANIMATION_DURATION_MILLIS);
|
||||
|
||||
return appearanceAnimatorSet;
|
||||
}
|
||||
|
||||
protected Animator createAnimationPause() {
|
||||
return ValueAnimator.ofFloat(0f, 1f).setDuration(GESTURE_ANIMATION_PAUSE_DURATION_MILLIS);
|
||||
}
|
||||
|
||||
/** Denotes the type of the tutorial. */
|
||||
enum TutorialType {
|
||||
BACK_NAVIGATION,
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
*/
|
||||
package com.android.quickstep.interaction;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@@ -29,6 +31,7 @@ import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.View.OnTouchListener;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.ViewTreeObserver;
|
||||
import android.view.WindowInsets;
|
||||
import android.widget.ImageView;
|
||||
|
||||
@@ -38,7 +41,6 @@ import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
|
||||
import com.android.launcher3.R;
|
||||
import com.android.launcher3.Utilities;
|
||||
import com.android.quickstep.interaction.TutorialController.TutorialType;
|
||||
|
||||
abstract class TutorialFragment extends Fragment implements OnTouchListener {
|
||||
@@ -49,13 +51,14 @@ abstract class TutorialFragment extends Fragment implements OnTouchListener {
|
||||
TutorialType mTutorialType;
|
||||
@Nullable TutorialController mTutorialController = null;
|
||||
RootSandboxLayout mRootView;
|
||||
View mFingerDotView;
|
||||
View mFakePreviousTaskView;
|
||||
EdgeBackGestureHandler mEdgeBackGestureHandler;
|
||||
NavBarGestureHandler mNavBarGestureHandler;
|
||||
private ImageView mFeedbackVideoView;
|
||||
private ImageView mGestureVideoView;
|
||||
private ImageView mEdgeGestureVideoView;
|
||||
|
||||
@Nullable private AnimatedVectorDrawable mTutorialAnimation = null;
|
||||
@Nullable private AnimatedVectorDrawable mGestureAnimation = null;
|
||||
@Nullable private Animator mGestureAnimation = null;
|
||||
@Nullable private AnimatedVectorDrawable mEdgeAnimation = null;
|
||||
private boolean mIntroductionShown = false;
|
||||
|
||||
private boolean mFragmentStopped = false;
|
||||
@@ -96,24 +99,26 @@ abstract class TutorialFragment extends Fragment implements OnTouchListener {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable Integer getFeedbackVideoResId(boolean forDarkMode) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable Integer getGestureVideoResId() {
|
||||
@Nullable Integer getEdgeAnimationResId() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
AnimatedVectorDrawable getTutorialAnimation() {
|
||||
return mTutorialAnimation;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
AnimatedVectorDrawable getGestureAnimation() {
|
||||
Animator getGestureAnimation() {
|
||||
return mGestureAnimation;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
AnimatedVectorDrawable getEdgeAnimation() {
|
||||
return mEdgeAnimation;
|
||||
}
|
||||
|
||||
|
||||
@Nullable
|
||||
protected Animator createGestureAnimation() {
|
||||
return null;
|
||||
}
|
||||
|
||||
abstract TutorialController createController(TutorialType type);
|
||||
|
||||
abstract Class<? extends TutorialController> getControllerClass();
|
||||
@@ -147,21 +152,22 @@ abstract class TutorialFragment extends Fragment implements OnTouchListener {
|
||||
return insets;
|
||||
});
|
||||
mRootView.setOnTouchListener(this);
|
||||
mFeedbackVideoView = mRootView.findViewById(R.id.gesture_tutorial_feedback_video);
|
||||
mGestureVideoView = mRootView.findViewById(R.id.gesture_tutorial_gesture_video);
|
||||
mEdgeGestureVideoView = mRootView.findViewById(R.id.gesture_tutorial_edge_gesture_video);
|
||||
mFingerDotView = mRootView.findViewById(R.id.gesture_tutorial_finger_dot);
|
||||
mFakePreviousTaskView = mRootView.findViewById(
|
||||
R.id.gesture_tutorial_fake_previous_task_view);
|
||||
return mRootView;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
super.onStop();
|
||||
releaseFeedbackVideoView();
|
||||
releaseGestureVideoView();
|
||||
releaseFeedbackAnimation();
|
||||
mFragmentStopped = true;
|
||||
}
|
||||
|
||||
void initializeFeedbackVideoView() {
|
||||
if (!updateFeedbackVideo()) {
|
||||
if (!updateFeedbackAnimation()) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -176,87 +182,90 @@ abstract class TutorialFragment extends Fragment implements OnTouchListener {
|
||||
}
|
||||
}
|
||||
|
||||
boolean updateFeedbackVideo() {
|
||||
if (getContext() == null) {
|
||||
boolean updateFeedbackAnimation() {
|
||||
if (!updateEdgeAnimation()) {
|
||||
return false;
|
||||
}
|
||||
Integer feedbackVideoResId = getFeedbackVideoResId(Utilities.isDarkTheme(getContext()));
|
||||
|
||||
if (feedbackVideoResId == null || !updateGestureVideo()) {
|
||||
return false;
|
||||
}
|
||||
mTutorialAnimation = (AnimatedVectorDrawable) getContext().getDrawable(feedbackVideoResId);
|
||||
|
||||
if (mTutorialAnimation != null) {
|
||||
mTutorialAnimation.registerAnimationCallback(new Animatable2.AnimationCallback() {
|
||||
|
||||
@Override
|
||||
public void onAnimationStart(Drawable drawable) {
|
||||
super.onAnimationStart(drawable);
|
||||
|
||||
mFeedbackVideoView.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAnimationEnd(Drawable drawable) {
|
||||
super.onAnimationEnd(drawable);
|
||||
|
||||
releaseFeedbackVideoView();
|
||||
}
|
||||
});
|
||||
}
|
||||
mFeedbackVideoView.setImageDrawable(mTutorialAnimation);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
boolean updateGestureVideo() {
|
||||
Integer gestureVideoResId = getGestureVideoResId();
|
||||
if (gestureVideoResId == null || getContext() == null) {
|
||||
return false;
|
||||
}
|
||||
mGestureAnimation = (AnimatedVectorDrawable) getContext().getDrawable(gestureVideoResId);
|
||||
mGestureAnimation = createGestureAnimation();
|
||||
|
||||
if (mGestureAnimation != null) {
|
||||
mGestureAnimation.registerAnimationCallback(new Animatable2.AnimationCallback() {
|
||||
mGestureAnimation.addListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationStart(Animator animation) {
|
||||
super.onAnimationStart(animation);
|
||||
mFingerDotView.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAnimationCancel(Animator animation) {
|
||||
super.onAnimationCancel(animation);
|
||||
mFingerDotView.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
super.onAnimationEnd(animation);
|
||||
mFingerDotView.setVisibility(View.GONE);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return mGestureAnimation != null;
|
||||
}
|
||||
|
||||
boolean updateEdgeAnimation() {
|
||||
Integer edgeAnimationResId = getEdgeAnimationResId();
|
||||
if (edgeAnimationResId == null || getContext() == null) {
|
||||
return false;
|
||||
}
|
||||
mEdgeAnimation = (AnimatedVectorDrawable) getContext().getDrawable(edgeAnimationResId);
|
||||
|
||||
if (mEdgeAnimation != null) {
|
||||
mEdgeAnimation.registerAnimationCallback(new Animatable2.AnimationCallback() {
|
||||
|
||||
@Override
|
||||
public void onAnimationEnd(Drawable drawable) {
|
||||
super.onAnimationEnd(drawable);
|
||||
|
||||
mGestureAnimation.start();
|
||||
mEdgeAnimation.start();
|
||||
}
|
||||
});
|
||||
}
|
||||
mGestureVideoView.setImageDrawable(mGestureAnimation);
|
||||
mEdgeGestureVideoView.setImageDrawable(mEdgeAnimation);
|
||||
|
||||
return true;
|
||||
return mEdgeAnimation != null;
|
||||
}
|
||||
|
||||
void releaseFeedbackVideoView() {
|
||||
if (mTutorialAnimation != null && mTutorialAnimation.isRunning()) {
|
||||
mTutorialAnimation.stop();
|
||||
void releaseFeedbackAnimation() {
|
||||
if (mTutorialController != null) {
|
||||
mTutorialController.cancelQueuedGestureAnimation();
|
||||
}
|
||||
|
||||
mFeedbackVideoView.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
void releaseGestureVideoView() {
|
||||
if (mGestureAnimation != null && mGestureAnimation.isRunning()) {
|
||||
mGestureAnimation.stop();
|
||||
mGestureAnimation.cancel();
|
||||
}
|
||||
if (mEdgeAnimation != null && mEdgeAnimation.isRunning()) {
|
||||
mEdgeAnimation.stop();
|
||||
}
|
||||
|
||||
mGestureVideoView.setVisibility(View.GONE);
|
||||
mEdgeGestureVideoView.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
releaseFeedbackAnimation();
|
||||
if (mFragmentStopped && mTutorialController != null) {
|
||||
mTutorialController.showFeedback();
|
||||
mFragmentStopped = false;
|
||||
} else {
|
||||
changeController(mTutorialType);
|
||||
mRootView.getViewTreeObserver().addOnGlobalLayoutListener(
|
||||
new ViewTreeObserver.OnGlobalLayoutListener() {
|
||||
@Override
|
||||
public void onGlobalLayout() {
|
||||
changeController(mTutorialType);
|
||||
mRootView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -292,6 +301,7 @@ abstract class TutorialFragment extends Fragment implements OnTouchListener {
|
||||
mEdgeBackGestureHandler.registerBackGestureAttemptCallback(mTutorialController);
|
||||
mNavBarGestureHandler.registerNavBarGestureAttemptCallback(mTutorialController);
|
||||
mTutorialType = tutorialType;
|
||||
|
||||
initializeFeedbackVideoView();
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -36,15 +36,6 @@
|
||||
|
||||
<color name="icon_background">#E0E0E0</color> <!-- Gray 300 -->
|
||||
|
||||
<color name="gesture_tutorial_ripple_color">#A0C2F9</color> <!-- Light Blue -->
|
||||
<color name="gesture_tutorial_fake_task_view_color">#6DA1FF</color> <!-- Light Blue -->
|
||||
<color name="fake_wallpaper_color_dark_mode">#000000</color> <!-- Black -->
|
||||
<color name="fake_wallpaper_color_light_mode">#f9f9f9</color> <!-- White -->
|
||||
<!-- Must contrast fake_wallpaper_color_dark_mode and fake_wallpaper_color_light_mode -->
|
||||
<color name="gesture_tutorial_fake_previous_task_view_color">#3C4043</color> <!-- Gray -->
|
||||
<color name="gesture_tutorial_action_button_label_color">#FF000000</color>
|
||||
<color name="gesture_tutorial_primary_color">#B7F29F</color> <!-- Light Green -->
|
||||
|
||||
<color name="popup_color_primary_light">#FFF</color>
|
||||
<color name="popup_color_secondary_light">#F1F3F4</color>
|
||||
<color name="popup_color_tertiary_light">#E0E0E0</color> <!-- Gray 300 -->
|
||||
|
||||
Reference in New Issue
Block a user