Merge "Update gesture nav colors and animation for dark/light theming" into sc-dev

This commit is contained in:
TreeHugger Robot
2021-05-26 22:07:52 +00:00
committed by Android (Google) Code Review
22 changed files with 6009 additions and 42 deletions

View File

@@ -13,8 +13,19 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="50dp"/>
<solid android:color="@color/gesture_tutorial_primary_color"/>
</shape>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape
android:id="@android:id/mask"
android:shape="rectangle">
<corners android:radius="50dp"/>
</shape>
</item>
<item>
<shape
android:shape="rectangle">
<corners android:radius="50dp"/>
<solid android:color="@color/gesture_tutorial_primary_color"/>
</shape>
</item>
</layer-list>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -922,7 +922,7 @@
<path
android:name="_R_G_L_3_G_D_0_P_0"
android:fillAlpha="1"
android:fillColor="#000000"
android:fillColor="@color/fake_wallpaper_color_dark_mode"
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>

File diff suppressed because it is too large Load Diff

View File

@@ -860,7 +860,7 @@
<path
android:name="_R_G_L_5_G_D_0_P_0"
android:fillAlpha="1"
android:fillColor="#000000"
android:fillColor="@color/fake_wallpaper_color_dark_mode"
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>
@@ -1600,7 +1600,7 @@
<path
android:name="_R_G_L_1_G_D_0_P_0"
android:fillAlpha="1"
android:fillColor="#3c4043"
android:fillColor="@color/gesture_tutorial_fake_previous_task_view_color"
android:fillType="nonZero"
android:pathData=" M135 -301 C135,-301 135,311 135,311 C135,319.28 128.28,326 120,326 C120,326 -120,326 -120,326 C-128.28,326 -135,319.28 -135,311 C-135,311 -135,-301 -135,-301 C-135,-309.28 -128.28,-316 -120,-316 C-120,-316 120,-316 120,-316 C128.28,-316 135,-309.28 135,-301c " />
</group>

View File

@@ -0,0 +1,263 @@
<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>

View File

@@ -20,13 +20,20 @@
android:layout_height="match_parent"
android:clipChildren="false">
<ImageView
<RelativeLayout
android:id="@+id/gesture_tutorial_fake_launcher_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
android:layout_marginBottom="70dp" />
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/gesture_tutorial_fake_hotseat_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
android:layout_marginBottom="70dp"/>
</RelativeLayout>
<com.android.launcher3.views.ClipIconView
android:id="@+id/gesture_tutorial_fake_icon_view"
@@ -119,8 +126,6 @@
app:layout_constraintTop_toTopOf="@id/gesture_tutorial_fragment_action_button"
app:layout_constraintBottom_toBottomOf="@id/gesture_tutorial_fragment_action_button"/>
<!-- android:stateListAnimator="@null" removes shadow and normal on click behavior (increase
of elevation and shadow) which is replaced by ripple effect in android:foreground -->
<Button
android:id="@+id/gesture_tutorial_fragment_action_button"
style="@style/TextAppearance.GestureTutorial.ButtonLabel"
@@ -133,7 +138,6 @@
android:paddingEnd="16dp"
android:text="@string/gesture_tutorial_action_button_label_next"
android:background="@drawable/gesture_tutorial_action_button_background"
android:foreground="?android:attr/selectableItemBackgroundBorderless"
android:stateListAnimator="@null"
android:visibility="invisible"

View File

@@ -48,7 +48,7 @@ final class BackGestureTutorialController extends TutorialController {
}
@Override
protected int getMockAppTaskThumbnailResId() {
protected int getMockAppTaskThumbnailResId(boolean forDarkMode) {
return R.drawable.mock_conversation;
}

View File

@@ -27,10 +27,14 @@ import com.android.quickstep.interaction.TutorialController.TutorialType;
public class BackGestureTutorialFragment extends TutorialFragment {
@Nullable
@Override
Integer getFeedbackVideoResId() {
Integer getFeedbackVideoResId(boolean forDarkMode) {
return mTutorialType == TutorialType.RIGHT_EDGE_BACK_NAVIGATION
? R.drawable.gesture_tutorial_motion_back_right
: R.drawable.gesture_tutorial_motion_back_left;
? (forDarkMode
? R.drawable.gesture_tutorial_motion_back_right_dark_mode
: R.drawable.gesture_tutorial_motion_back_right_light_mode)
: (forDarkMode
? R.drawable.gesture_tutorial_motion_back_left_dark_mode
: R.drawable.gesture_tutorial_motion_back_left_light_mode);
}
@Nullable

View File

@@ -42,8 +42,8 @@ final class HomeGestureTutorialController extends SwipeUpGestureTutorialControll
}
@Override
protected int getMockAppTaskThumbnailResId() {
return R.drawable.mock_webpage;
protected int getMockAppTaskThumbnailResId(boolean forDarkMode) {
return forDarkMode ? R.drawable.mock_webpage_dark_mode : R.drawable.mock_webpage_light_mode;
}
@Override

View File

@@ -24,8 +24,10 @@ import com.android.quickstep.interaction.TutorialController.TutorialType;
public class HomeGestureTutorialFragment extends TutorialFragment {
@Nullable
@Override
Integer getFeedbackVideoResId() {
return R.drawable.gesture_tutorial_motion_home;
Integer getFeedbackVideoResId(boolean forDarkMode) {
return forDarkMode
? R.drawable.gesture_tutorial_motion_home_dark_mode
: R.drawable.gesture_tutorial_motion_home_light_mode;
}
@Nullable

View File

@@ -49,7 +49,7 @@ final class OverviewGestureTutorialController extends SwipeUpGestureTutorialCont
}
@Override
protected int getMockAppTaskThumbnailResId() {
protected int getMockAppTaskThumbnailResId(boolean forDarkMode) {
return R.drawable.mock_conversations_list;
}

View File

@@ -24,8 +24,10 @@ import com.android.quickstep.interaction.TutorialController.TutorialType;
public class OverviewGestureTutorialFragment extends TutorialFragment {
@Nullable
@Override
Integer getFeedbackVideoResId() {
return R.drawable.gesture_tutorial_motion_overview;
Integer getFeedbackVideoResId(boolean forDarkMode) {
return forDarkMode
? R.drawable.gesture_tutorial_motion_overview_dark_mode
: R.drawable.gesture_tutorial_motion_overview_light_mode;
}
@Nullable

View File

@@ -72,7 +72,7 @@ abstract class SwipeUpGestureTutorialController extends TutorialController {
private AnimatorListenerAdapter mResetTaskView = new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
mFakeLauncherView.setVisibility(View.INVISIBLE);
mFakeHotseatView.setVisibility(View.INVISIBLE);
mFakeIconView.setVisibility(View.INVISIBLE);
if (mTutorialFragment.getActivity() != null) {
DisplayMetrics displayMetrics =
@@ -197,7 +197,7 @@ abstract class SwipeUpGestureTutorialController extends TutorialController {
hideFeedback(true);
cancelRunningAnimation();
mFakePreviousTaskView.setVisibility(View.INVISIBLE);
mFakeLauncherView.setVisibility(View.VISIBLE);
mFakeHotseatView.setVisibility(View.VISIBLE);
mShowPreviousTasks = false;
RectFSpringAnim rectAnim =
mTaskViewSwipeUpAnimation.handleSwipeUpToHome(finalVelocity);
@@ -299,7 +299,7 @@ abstract class SwipeUpGestureTutorialController extends TutorialController {
@Override
public RectF getWindowTargetRect() {
int fakeHomeIconSizePx = Utilities.dpToPx(60);
int fakeHomeIconLeft = mFakeLauncherView.getLeft();
int fakeHomeIconLeft = mFakeHotseatView.getLeft();
int fakeHomeIconTop = mDp.heightPx - Utilities.dpToPx(216);
return new RectF(fakeHomeIconLeft, fakeHomeIconTop,
fakeHomeIconLeft + fakeHomeIconSizePx,

View File

@@ -30,6 +30,7 @@ import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.CallSuper;
@@ -66,7 +67,8 @@ abstract class TutorialController implements BackGestureAttemptCallback,
final ViewGroup mFeedbackView;
final ImageView mFeedbackVideoView;
final ImageView mGestureVideoView;
final ImageView mFakeLauncherView;
final RelativeLayout mFakeLauncherView;
final ImageView mFakeHotseatView;
final ClipIconView mFakeIconView;
final View mFakeTaskView;
final View mFakePreviousTaskView;
@@ -90,6 +92,7 @@ abstract class TutorialController implements BackGestureAttemptCallback,
mFeedbackVideoView = rootView.findViewById(R.id.gesture_tutorial_feedback_video);
mGestureVideoView = rootView.findViewById(R.id.gesture_tutorial_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);
mFakeTaskView = rootView.findViewById(R.id.gesture_tutorial_fake_task_view);
mFakePreviousTaskView =
@@ -113,12 +116,12 @@ abstract class TutorialController implements BackGestureAttemptCallback,
}
@DrawableRes
protected int getMockLauncherResId() {
protected int getMockHotseatResId() {
return R.drawable.default_sandbox_mock_launcher;
}
@DrawableRes
protected int getMockAppTaskThumbnailResId() {
protected int getMockAppTaskThumbnailResId(boolean forDarkMode) {
return R.drawable.default_sandbox_app_task_thumbnail;
}
@@ -312,8 +315,8 @@ abstract class TutorialController implements BackGestureAttemptCallback,
updateDrawables();
mGestureCompleted = false;
if (mFakeLauncherView != null) {
mFakeLauncherView.setVisibility(View.INVISIBLE);
if (mFakeHotseatView != null) {
mFakeHotseatView.setVisibility(View.INVISIBLE);
}
}
@@ -344,10 +347,14 @@ abstract class TutorialController implements BackGestureAttemptCallback,
mTutorialFragment.getRootView().setBackground(AppCompatResources.getDrawable(
mContext, getMockWallpaperResId()));
mTutorialFragment.updateFeedbackVideo();
mFakeLauncherView.setImageDrawable(AppCompatResources.getDrawable(
mContext, getMockLauncherResId()));
mFakeLauncherView.setBackgroundColor(
mContext.getColor(Utilities.isDarkTheme(mContext)
? R.color.fake_wallpaper_color_dark_mode
: R.color.fake_wallpaper_color_light_mode));
mFakeHotseatView.setImageDrawable(AppCompatResources.getDrawable(
mContext, getMockHotseatResId()));
mFakeTaskView.setBackground(AppCompatResources.getDrawable(
mContext, getMockAppTaskThumbnailResId()));
mContext, getMockAppTaskThumbnailResId(Utilities.isDarkTheme(mContext))));
mFakeTaskView.animate().alpha(1).setListener(
AnimatorListeners.forSuccessCallback(() -> mFakeTaskView.animate().cancel()));
mFakePreviousTaskView.setBackground(AppCompatResources.getDrawable(

View File

@@ -38,6 +38,7 @@ 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 {
@@ -96,7 +97,7 @@ abstract class TutorialFragment extends Fragment implements OnTouchListener {
return null;
}
@Nullable Integer getFeedbackVideoResId() {
@Nullable Integer getFeedbackVideoResId(boolean forDarkMode) {
return null;
}
@@ -176,8 +177,12 @@ abstract class TutorialFragment extends Fragment implements OnTouchListener {
}
boolean updateFeedbackVideo() {
Integer feedbackVideoResId = getFeedbackVideoResId();
if (feedbackVideoResId == null || getContext() == null || !updateGestureVideo()) {
if (getContext() == null) {
return false;
}
Integer feedbackVideoResId = getFeedbackVideoResId(Utilities.isDarkTheme(getContext()));
if (feedbackVideoResId == null || !updateGestureVideo()) {
return false;
}
mTutorialAnimation = (AnimatedVectorDrawable) getContext().getDrawable(feedbackVideoResId);

File diff suppressed because it is too large Load Diff

View File

@@ -38,6 +38,9 @@
<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 -->