Merge "Import translations. DO NOT MERGE ANYWHERE" into sc-dev
diff --git a/AndroidManifest-common.xml b/AndroidManifest-common.xml
index 87a08af..d725a16 100644
--- a/AndroidManifest-common.xml
+++ b/AndroidManifest-common.xml
@@ -107,7 +107,7 @@
android:value="true" />
<activity android:name="com.android.launcher3.dragndrop.AddItemActivity"
- android:theme="@style/AppItemActivityTheme"
+ android:theme="@style/AddItemActivityTheme"
android:excludeFromRecents="true"
android:autoRemoveFromRecents="true"
android:exported="true">
diff --git a/go/quickstep/res/layout/overview_actions_container.xml b/go/quickstep/res/layout/overview_actions_container.xml
index 6a331ea..b36214b 100644
--- a/go/quickstep/res/layout/overview_actions_container.xml
+++ b/go/quickstep/res/layout/overview_actions_container.xml
@@ -24,11 +24,15 @@
<LinearLayout
android:id="@+id/action_buttons"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
+ android:layout_height="@dimen/overview_actions_height"
android:layout_gravity="top|center_horizontal"
android:orientation="horizontal">
<Space
+ android:layout_width="@dimen/go_overview_button_width"
+ android:layout_height="1dp" />
+
+ <Space
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_weight="1" />
@@ -86,6 +90,10 @@
android:layout_height="1dp"
android:layout_weight="1" />
+ <Space
+ android:layout_width="@dimen/go_overview_button_width"
+ android:layout_height="1dp" />
+
<!-- Will be enabled in a future version. -->
<LinearLayout
style="@style/GoOverviewActionButtonContainer"
diff --git a/go/quickstep/res/values-as/strings.xml b/go/quickstep/res/values-as/strings.xml
new file mode 100644
index 0000000..a3b95c4
--- /dev/null
+++ b/go/quickstep/res/values-as/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_share_drop_target_label" msgid="5804774105974539508">"এপ্ শ্বেয়াৰ কৰক"</string>
+ <string name="action_listen" msgid="2370304050784689486">"শুনক"</string>
+ <string name="action_translate" msgid="8028378961867277746">"অনুবাদ কৰক"</string>
+ <string name="action_search" msgid="6269564710943755464">"লেন্স"</string>
+</resources>
diff --git a/go/quickstep/res/values-bn/strings.xml b/go/quickstep/res/values-bn/strings.xml
new file mode 100644
index 0000000..b5c8ec9
--- /dev/null
+++ b/go/quickstep/res/values-bn/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_share_drop_target_label" msgid="5804774105974539508">"অ্যাপ শেয়ার করুন"</string>
+ <string name="action_listen" msgid="2370304050784689486">"শুনুন"</string>
+ <string name="action_translate" msgid="8028378961867277746">"অনুবাদ করুন"</string>
+ <string name="action_search" msgid="6269564710943755464">"লেন্স"</string>
+</resources>
diff --git a/go/quickstep/res/values-hi/strings.xml b/go/quickstep/res/values-hi/strings.xml
index e19001b..cdf83db 100644
--- a/go/quickstep/res/values-hi/strings.xml
+++ b/go/quickstep/res/values-hi/strings.xml
@@ -4,5 +4,5 @@
<string name="app_share_drop_target_label" msgid="5804774105974539508">"ऐप्लिकेशन शेयर करें"</string>
<string name="action_listen" msgid="2370304050784689486">"सुनें"</string>
<string name="action_translate" msgid="8028378961867277746">"Translate"</string>
- <string name="action_search" msgid="6269564710943755464">"Lens"</string>
+ <string name="action_search" msgid="6269564710943755464">"Google Lens"</string>
</resources>
diff --git a/go/quickstep/res/values-it/strings.xml b/go/quickstep/res/values-it/strings.xml
index 59ed75c..485dcd6 100644
--- a/go/quickstep/res/values-it/strings.xml
+++ b/go/quickstep/res/values-it/strings.xml
@@ -3,6 +3,6 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_share_drop_target_label" msgid="5804774105974539508">"Condividi l\'app"</string>
<string name="action_listen" msgid="2370304050784689486">"Ascolta"</string>
- <string name="action_translate" msgid="8028378961867277746">"Traduci"</string>
+ <string name="action_translate" msgid="8028378961867277746">"Traduttore"</string>
<string name="action_search" msgid="6269564710943755464">"Lens"</string>
</resources>
diff --git a/go/quickstep/res/values-ja/strings.xml b/go/quickstep/res/values-ja/strings.xml
new file mode 100644
index 0000000..f8cbbab
--- /dev/null
+++ b/go/quickstep/res/values-ja/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_share_drop_target_label" msgid="5804774105974539508">"アプリを共有"</string>
+ <string name="action_listen" msgid="2370304050784689486">"聴く"</string>
+ <string name="action_translate" msgid="8028378961867277746">"翻訳"</string>
+ <string name="action_search" msgid="6269564710943755464">"レンズ"</string>
+</resources>
diff --git a/go/quickstep/res/values-kk/strings.xml b/go/quickstep/res/values-kk/strings.xml
index ed59c9c..c897dd8 100644
--- a/go/quickstep/res/values-kk/strings.xml
+++ b/go/quickstep/res/values-kk/strings.xml
@@ -4,5 +4,5 @@
<string name="app_share_drop_target_label" msgid="5804774105974539508">"Қолданбаны бөлісу"</string>
<string name="action_listen" msgid="2370304050784689486">"Тыңдау"</string>
<string name="action_translate" msgid="8028378961867277746">"Аудару"</string>
- <string name="action_search" msgid="6269564710943755464">"Lens"</string>
+ <string name="action_search" msgid="6269564710943755464">"Объектив"</string>
</resources>
diff --git a/go/quickstep/res/values-mr/strings.xml b/go/quickstep/res/values-mr/strings.xml
new file mode 100644
index 0000000..f1fb72a
--- /dev/null
+++ b/go/quickstep/res/values-mr/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_share_drop_target_label" msgid="5804774105974539508">"अॅप शेअर करा"</string>
+ <string name="action_listen" msgid="2370304050784689486">"ऐका"</string>
+ <string name="action_translate" msgid="8028378961867277746">"Translate"</string>
+ <string name="action_search" msgid="6269564710943755464">"Lens"</string>
+</resources>
diff --git a/go/quickstep/res/values-sq/strings.xml b/go/quickstep/res/values-sq/strings.xml
new file mode 100644
index 0000000..56b6ec6
--- /dev/null
+++ b/go/quickstep/res/values-sq/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_share_drop_target_label" msgid="5804774105974539508">"Ndaj aplikacionin"</string>
+ <string name="action_listen" msgid="2370304050784689486">"Dëgjo"</string>
+ <string name="action_translate" msgid="8028378961867277746">"Përkthe"</string>
+ <string name="action_search" msgid="6269564710943755464">"Lentja"</string>
+</resources>
diff --git a/go/quickstep/res/values-te/strings.xml b/go/quickstep/res/values-te/strings.xml
new file mode 100644
index 0000000..2fb3b59
--- /dev/null
+++ b/go/quickstep/res/values-te/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_share_drop_target_label" msgid="5804774105974539508">"యాప్ను షేర్ చేయండి"</string>
+ <string name="action_listen" msgid="2370304050784689486">"వినండి"</string>
+ <string name="action_translate" msgid="8028378961867277746">"అనువదించండి"</string>
+ <string name="action_search" msgid="6269564710943755464">"Lens"</string>
+</resources>
diff --git a/go/quickstep/res/values-uz/strings.xml b/go/quickstep/res/values-uz/strings.xml
index 4e375c7..bc75148 100644
--- a/go/quickstep/res/values-uz/strings.xml
+++ b/go/quickstep/res/values-uz/strings.xml
@@ -3,6 +3,6 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_share_drop_target_label" msgid="5804774105974539508">"Ilovani ulashish"</string>
<string name="action_listen" msgid="2370304050784689486">"Tinglash"</string>
- <string name="action_translate" msgid="8028378961867277746">"Tarjimon"</string>
+ <string name="action_translate" msgid="8028378961867277746">"Tarjima"</string>
<string name="action_search" msgid="6269564710943755464">"Lens"</string>
</resources>
diff --git a/go/quickstep/res/values/dimens.xml b/go/quickstep/res/values/dimens.xml
index cb260b5..da684fa 100644
--- a/go/quickstep/res/values/dimens.xml
+++ b/go/quickstep/res/values/dimens.xml
@@ -23,4 +23,8 @@
<dimen name="go_overview_button_height">60dp</dimen>
<dimen name="go_overview_button_container_width">80dp</dimen>
<dimen name="go_overview_button_caption_margin">8dp</dimen>
+ <dimen name="overview_actions_height">96dp</dimen>
+ <dimen name="overview_proactive_row_height">0dp</dimen>
+ <dimen name="overview_proactive_row_bottom_margin">24dp</dimen>
+ <dimen name="task_corner_radius_override">28dp</dimen>
</resources>
diff --git a/go/quickstep/res/values/styles.xml b/go/quickstep/res/values/styles.xml
index df49ecd..9b3fe67 100644
--- a/go/quickstep/res/values/styles.xml
+++ b/go/quickstep/res/values/styles.xml
@@ -25,7 +25,7 @@
</style>
<style name="GoOverviewActionButtonCaption">
- <item name="android:fontFamily">roboto-medium</item>
+ <item name="android:fontFamily">sans-serif-medium</item>
<item name="android:textSize">14dp</item>
<item name="android:textColor">@color/go_overview_button_icon_color</item>
<item name="android:lineHeight">20dp</item>
diff --git a/quickstep/res/layout/taskbar.xml b/quickstep/res/layout/taskbar.xml
index 240fe55..c436221 100644
--- a/quickstep/res/layout/taskbar.xml
+++ b/quickstep/res/layout/taskbar.xml
@@ -22,9 +22,29 @@
<com.android.launcher3.taskbar.TaskbarView
android:id="@+id/taskbar_view"
- android:layout_width="wrap_content"
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:gravity="center"/>
+ android:gravity="center"
+ android:forceHasOverlappingRendering="false"
+ android:layout_gravity="bottom" >
+
+ <LinearLayout
+ android:id="@+id/system_button_layout"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:paddingLeft="@dimen/taskbar_nav_buttons_spacing"
+ android:paddingRight="@dimen/taskbar_nav_buttons_spacing"
+ android:forceHasOverlappingRendering="false"
+ android:gravity="center" />
+
+ <LinearLayout
+ android:id="@+id/hotseat_icons_layout"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:forceHasOverlappingRendering="false"
+ android:gravity="center" />
+
+ </com.android.launcher3.taskbar.TaskbarView>
<com.android.launcher3.taskbar.ImeBarView
android:id="@+id/ime_bar_view"
diff --git a/quickstep/res/values-af/strings.xml b/quickstep/res/values-af/strings.xml
index 3ac5a37..69d5d1f 100644
--- a/quickstep/res/values-af/strings.xml
+++ b/quickstep/res/values-af/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Voorspelde program: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Maak seker dat jy van die rand heel links af swiep."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Maak seker dat jy van die linkerrand na die middel van die skerm swiep en laat los."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Mooi so! Swiep nou van die regterkant om terug te gaan"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Swiep van regs na middel van skerm om terug te gaan na laaste skerm."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Maak seker dat jy van die rand heel regs af swiep."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Maak seker dat jy van die regterrand na die middel van die skerm swiep en laat los."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Jy het die \"gaan terug\"-gebaar voltooi. Nou kan jy leer hoe om tussen programme te wissel."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Jy het die \"gaan terug\"-gebaar voltooi."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Maak seker dat jy nie te naby aan die onderkant van die skerm swiep nie."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Gaan na Instellings om sensitiwiteit van teruggebaar te verander"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Swiep van links af om terug te gaan"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Swiep van linkerkant na middel van skerm om terug te gaan na laaste skerm waarop jy was."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Maak seker dat jy van die onderrand van die skerm af opswiep."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Maak seker jy onderbreek nie voordat jy laat los nie."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Maak seker jy swiep reguit op."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Jy het die \"gaan na tuisskerm\"-gebaar voltooi. Nou kan jy leer hoe om terug te gaan."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Jy het die \"gaan na tuisskerm\"-gebaar voltooi."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Swiep om na tuisskerm toe te gaan"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Swiep op van die onderkant van jou skerm af. Hierdie gebaar neem jou altyd na die tuisskerm toe."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Maak seker dat jy van die onderrand van die skerm af opswiep."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Probeer om die venster langer te hou voordat jy laat los."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Maak seker dat jy reguit opswiep en dan onderbreek."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Jy het geleer hoe om gebare te gebruik. Gaan na Instellings om gebare af te skakel."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Jy het die \"wissel tussen programme\"-gebaar voltooi."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Swiep om tussen programme te wissel"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Swiep op van die onderkant van jou skerm af, hou en laat los dan."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Gereed"</string>
diff --git a/quickstep/res/values-am/strings.xml b/quickstep/res/values-am/strings.xml
index 6dd34c1..8e3fe8a 100644
--- a/quickstep/res/values-am/strings.xml
+++ b/quickstep/res/values-am/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"የተገመተው መተግበሪያ፦ <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"ከግራ ጠርዝ ጥግ ጀምሮ ማንሸራተትዎን ያረጋግጡ።"</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"ከግራ ጠርዝ ወደ ማያ ገጹ መሃል ማንሸራተትዎን እና መልቀቅዎን ያረጋግጡ።"</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"ጥሩ! አሁን ወደ ኋላ ለመመለስ ከቀኝ ያንሸራትቱ"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"እንዲሁም ከቀኝ ጠርዝ ወደ ማያ ገጹ መሃል በማንሸራተት ወደ መጨረሻው ማያ ገጽ መመለስ ይችላሉ።"</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"ከቀኝ ጠርዝ ጥግ ጀምሮ ማንሸራተትዎን ያረጋግጡ።"</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"ከቀኝ ጠርዝ ወደ ማያ ገጹ መሃል ማንሸራተትዎን እና መልቀቅዎን ያረጋግጡ።"</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"ወደኋላ የመመለስ ምልክትን አጠናቀዋል። ቀጥሎም መተግበሪያዎችን እንዴት መቀየር እንደሚችሉ ይወቁ።"</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"ወደኋላ የመመለስ ምልክትን አጠናቀዋል።"</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"ከማያ ገጹ ታችኛው ክፍል ጋር በጣም ጠጋ ብለው አለማንሸራተትዎን ያረጋግጡ።"</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"ከኋላ ስሜት ሰጭነት ደረጃ ለመለወጥ ወደ ቅንብሮች ይመለሱ"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"ወደ ኋላ ለመመለስ ከግራ ጀምረው ያንሸራትቱ"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"ወደነበሩበት የመጨረሻው ማያ ገጽ ለመመለስ ከግራ ጠርዝ ወደ ማያ ገጹ መሃል ያንሸራትቱ።"</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"ከማያ ገጹ የታችኛው ጫፍ ወደ ላይ ማንሸራተትዎን ያረጋግጡ።"</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"ከመልቀቅዎ በፊት ለአፍታ እንዳልቆሙ ያረጋግጡ።"</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"በቀጥታ ወደ ላይ ማንሸራተትዎን ያረጋግጡ።"</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"የወደ መነሻ ሂድ ምልክትን አጠናቀዋል። ቀጥሎም ወደ ኋላ እንዴት መሄድ እንደሚችሉ ይወቁ።"</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"የወደ መነሻ ሂድ ምልክትን አጠናቀዋል።"</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"ወደ መነሻ ለመሄድ ያንሸራትቱ"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"ከእርስዎ ማያ ገጽ ግርጌ ላይ ወደ ላይ በጣት ጠረግ ያድርጉ። ይህ የእጅ ውዝዋዜ ሁልጊዜ ወደ መነሻ ማያ ገጽ ይወስድዎታል።"</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"ከማያ ገጹ የታችኛው ጫፍ ወደ ላይ ማንሸራተትዎን ያረጋግጡ።"</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"ከመልቀቅዎ በፊት መስኮቱን ረዘም ላለ ጊዜ ለመያዝ ይሞክሩ።"</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"በቀጥታ ወደ ላይ ማንሸራተትዎን ያረጋግጡ፣ ከዚያ ለአፍታ ያቁሙ።"</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"የእጅ ምልክቶችን እንዴት እንደሚጠቀሙ ተምረዋል። የእጅ ምልክቶችን ለማጥፋት ወደ ቅንብሮች ይሂዱ።"</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"መተግበሪያዎችን የመቀያየር ምልክትን አጠናቀዋል።"</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"መተግበሪያዎችን ለመቀየር ያንሸራትቱ"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"ከእርስዎ ማያ ገጽ ግርጌ ላይ ወደ ላይ በጣት ጠረግ ያድርጉ፣ ይያዙ፣ በመቀጠል ይልቀቁ።"</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"ሁሉም ዝግጁ"</string>
diff --git a/quickstep/res/values-ar/strings.xml b/quickstep/res/values-ar/strings.xml
index 337fba7..b716419 100644
--- a/quickstep/res/values-ar/strings.xml
+++ b/quickstep/res/values-ar/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"التطبيق المتوقع: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"تأكّد من التمرير سريعًا من أقصى الحافة اليمنى."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"تأكّد من التمرير سريعًا من الحافة اليمنى إلى وسط الشاشة ثم ارفع إصبعك."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"أحسنت. والآن مرِّر سريعًا من اليسار للرجوع."</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"يمكنك أيضًا الرجوع إلى الشاشة السابقة عن طريق التمرير سريعًا من الحافة اليسرى إلى وسط الشاشة"</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"تأكّد من التمرير سريعًا من أقصى الحافة اليسرى."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"تأكّد من التمرير سريعًا من الحافة اليسرى إلى وسط الشاشة ثم ارفع إصبعك."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"لقد أكملت التدريب على إيماءة الرجوع. تعرّف بعد ذلك على كيفية التبديل بين التطبيقات."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"لقد أكملت التدريب على إيماءة الرجوع."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"تأكّد من عدم التمرير بالقرب من أسفل الشاشة."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"لتغيير مستوى حساسية إيماءة الرجوع، انتقِل إلى \"الإعدادات\""</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"مرِّر سريعًا من اليسار للرجوع."</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"للرجوع إلى الشاشة السابقة، مرِّر سريعًا من الحافة اليمنى إلى وسط الشاشة"</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"تأكّد من التمرير سريعًا من الحافة السفلى للشاشة إلى أعلاها."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"تأكّد من عدم التوقّف قليلاً قبل رفع إصبعك."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"تأكّد من التمرير إلى الأعلى مباشرةً."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"أكملت التدريب على إيماءة الانتقال إلى الشاشة الرئيسية. تعرّف بعد ذلك على كيفية الرجوع."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"أكملت التدريب على إيماءة الانتقال إلى الشاشة الرئيسية."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"مرِّر سريعًا للانتقال إلى الشاشة الرئيسية"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"مرِّر سريعًا من أسفل الشاشة إلى أعلاها. تنقلك هذه الإيماءة دائمًا إلى الشاشة الرئيسية."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"تأكّد من التمرير سريعًا من الحافة السفلى للشاشة إلى أعلاها."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"حاوِل إبقاء إصبعك على النافذة لمدة أطول قبل رفعه."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"تأكّد من التمرير سريعًا للأعلى مباشرةً ثم التوقّف قليلاً."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"تعرّفت على كيفية استخدام الإيماءات. لإيقاف الإيماءات، انتقِل إلى \"الإعدادات\"."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"أكملت التدريب على إيماءة التبديل بين التطبيقات."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"مرِّر سريعًا للتبديل بين التطبيقات"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"مرِّر سريعًا من أسفل الشاشة إلى أعلاها، وأبقِ إصبعك على الشاشة قليلاً ثم ارفعه."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"اكتمل التدريب على الإيماءة"</string>
diff --git a/quickstep/res/values-as/strings.xml b/quickstep/res/values-as/strings.xml
index d152abf..0832b1b 100644
--- a/quickstep/res/values-as/strings.xml
+++ b/quickstep/res/values-as/strings.xml
@@ -88,14 +88,10 @@
<string name="gesture_tutorial_try_again" msgid="65962545858556697">"পুনৰ চেষ্টা কৰক"</string>
<string name="gesture_tutorial_nice" msgid="2936275692616928280">"সুন্দৰ!"</string>
<string name="gesture_tutorial_step" msgid="1279786122817620968">"টিউট’ৰিয়েল <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
- <!-- no translation found for allset_title (5021126669778966707) -->
- <skip />
- <!-- no translation found for allset_hint (459504134589971527) -->
- <skip />
- <!-- no translation found for allset_description (6350320429953234580) -->
- <skip />
- <!-- no translation found for allset_navigation_settings (417773244979225071) -->
- <skip />
+ <string name="allset_title" msgid="5021126669778966707">"সকলো সাজু!"</string>
+ <string name="allset_hint" msgid="459504134589971527">"গৃহ স্ক্ৰীনলৈ যাবলৈ ওপৰলৈ ছোৱাইপ কৰক"</string>
+ <string name="allset_description" msgid="6350320429953234580">"আপুনি আপোনাৰ ফ’নটো ব্যৱহাৰ কৰিবলৈ সাজু"</string>
+ <string name="allset_navigation_settings" msgid="417773244979225071"><annotation id="link">"সাধ্য-সুবিধাৰ বাবে নেভিগেশ্বনৰ ছেটিং"</annotation></string>
<string name="action_share" msgid="2648470652637092375">"শ্বেয়াৰ কৰক"</string>
<string name="action_screenshot" msgid="8171125848358142917">"স্ক্ৰীনশ্বট"</string>
<string name="blocked_by_policy" msgid="2071401072261365546">"এপ্টোৱে অথবা আপোনাৰ প্ৰতিষ্ঠানে এই কাৰ্যটোৰ অনুমতি নিদিয়ে"</string>
diff --git a/quickstep/res/values-az/strings.xml b/quickstep/res/values-az/strings.xml
index ad4ad90..674302d 100644
--- a/quickstep/res/values-az/strings.xml
+++ b/quickstep/res/values-az/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Proqnozlaşdırılan tətbiq: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Ən sol tərəfdən sürüşdürdüyünüzə əmin olun."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Ekranın sol kənarından ortasına sürüşdürüb buraxın."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Əla! İndi geri qayıtmaq üçün sağdan sürüşdürün"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Həmçinin ekranın sağ kənarından ortasına sürüşdürərək son ekrana qayıda bilərsiniz."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Ən sağ tərəfdən sürüşdürdüyünüzə əmin olun."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Ekranın sağ kənarından ortasına sürüşdürüb buraxın."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Geri getmə jestini tamamladınız. Sonra tətbiqləri keçirməyi öyrənin."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Geri getmə jestini tamamladınız."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Ekranın altına çox yaxın sürüşdürmədiyinizə əmin olun."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Geri qayıtma jestinin həssaslığını dəyişmək üçün Ayarlara keçin"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Geri qayıtmaq üçün soldan sürüşdürün"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Son ekrana qayıtmaq üçün ekranın sol kənarından ortasına doğru sürüşdürün."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Ekranın aşağı kənarından yuxarı sürüşdürdüyünüzə əmin olun."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Buraxmazdan əvvəl durdurmadığınıza əmin olun."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Birbaşa yuxarı sürüşdürdüyünüzə əmin olun."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Əsas səhifəyə keçmə jestini tamamladınız. Sonra geri qayıtmağı öyrənin."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Əsas səhifəyə keçmə jestini tamamladınız."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Əsas səhifəyə keçmək üçün sürüşdürün"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Ekranın aşağısından yuxarısına sürüşdürün. Bu jest həmişə Əsas səhifəyə aparır."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Ekranın aşağı kənarından yuxarı sürüşdürdüyünüzə əmin olun."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Buraxmadan əvvəl pəncərəni daha uzun müddət saxlamağa çalışın."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Birbaşa yuxarı sürüşdürdüyünüzə, sonra durdurduğunuza əmin olun."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Jestlərdən istifadə qaydasını öyrəndiniz. Jestləri deaktiv etmək üçün Ayarlara keçin."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Tətbiqləri keçirmə jestini tamamladınız."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Tətbiqi keçirmək üçün sürüşdürün"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Ekranın aşağısından yuxarı doğru sürüşdürüb saxlayın, sonra buraxın."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Tam hazır"</string>
diff --git a/quickstep/res/values-b+sr+Latn/strings.xml b/quickstep/res/values-b+sr+Latn/strings.xml
index 7298d1a..4519deb 100644
--- a/quickstep/res/values-b+sr+Latn/strings.xml
+++ b/quickstep/res/values-b+sr+Latn/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Predviđamo aplikaciju: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Obavezno prevucite od same leve ivice."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Obavezno prevucite od leve ivice do sredine ekrana i otpustite."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Svaka čast! Sada prevucite zdesna da biste se vratili"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Vratite se na poslednji ekran prevlačenjem zdesna ka sredini."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Obavezno prevucite od same desne ivice."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Obavezno prevucite od desne ivice do sredine ekrana i otpustite."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Dovršili ste pokret za povratak. Sada saznajte kako da promenite aplikacije."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Dovršili ste pokret za povratak."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Nikako ne prevlačite previše blizu dna ekrana."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Osetljivost pok. za nazad možete da promenite u Podešavanjima"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Prevucite sa leve strane da biste se vratili"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Da biste se vratili na poslednji ekran, prevucite od leve ivice ka sredini ekrana."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Obavezno prevucite nagore od donje ivice ekrana."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Nikako ne stajte pre otpuštanja."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Obavezno prevucite pravo nagore."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Dovršili ste pokret za povratak na početnu stranicu. Sada saznajte kako da se vratite."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Dovršili ste pokret za povratak na početnu stranicu."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Prevucite da biste otišli na početnu stranicu"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Prevucite nagore od dna ekrana. Ovaj pokret vas uvek vodi na početni ekran."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Obavezno prevucite nagore od donje ivice ekrana."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Probajte da držite prozor duže pre otpuštanja."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Obavezno prevucite pravo nagore, pa zastanite."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Naučili ste kako da koristite pokrete. Da biste isključili pokrete, idite na podešavanja."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Dovršili ste pokret za promenu aplikacija."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Prevucite da biste promenili aplikacije"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Prevucite nagore od dna ekrana, zadržite, pa pustite."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"To je to"</string>
diff --git a/quickstep/res/values-be/strings.xml b/quickstep/res/values-be/strings.xml
index be617a4..20e09ca 100644
--- a/quickstep/res/values-be/strings.xml
+++ b/quickstep/res/values-be/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Праграма з падказкі: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Пераканайцеся, што вы не праводзіце пальцам занадта далёка ад левага вугла экрана."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Пераканайцеся, што праводзіце пальцам з левага вугла ў цэнтр экрана, а потым адпускаеце."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Выдатна! Каб вярнуцца, правядзіце пальцам ад правага краю"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Каб вярнуцца, правядзіце ад правага краю ў цэнтр экрана."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Пераканайцеся, што вы не праводзіце пальцам занадта далёка ад правага вугла экрана."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Пераканайцеся, што праводзіце пальцам з правага вугла ў цэнтр экрана, а потым адпускаеце."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Вы навучыліся рабіць жэст вяртання. А зараз даведайцеся, як пераключацца паміж праграмамі."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Вы навучыліся рабіць жэст вяртання."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Пераканайцеся, што вы не праводзіце пальцам занадта блізка да ніжняга краю экрана."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Каб змяніць адчувальнасць жэста вяртання, адкрыйце налады"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Каб вярнуцца назад, правядзіце пальцам ад левага краю"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Каб вярнуцца на папярэдні экран, правядзіце пальцам ад левага краю ў цэнтр экрана."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Пераканайцеся, што праводзіце пальцам па экране знізу ўверх."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Пераканайцеся, што не затрымліваецеся перад адпусканнем."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Пераканайцеся, што праводзіце пальцам вертыкальна."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Вы навучыліся рабіць жэст пераходу на галоўны экран. А зараз даведайцеся, як вярнуцца назад."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Вы навучыліся рабіць жэст пераходу на галоўны экран."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Правесці пальцам для пераходу на галоўны экран"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Правядзіце пальцам па экране знізу ўверх. Гэты жэст дазваляе вярнуцца на Галоўны экран."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Пераканайцеся, што праводзіце пальцам па экране знізу ўверх."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Перш чым адпусціць палец, паспрабуйце даўжэй утрымліваць акно націснутым."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Пераканайцеся, што праводзіце пальцам вертыкальна, а потым затрымліваеце яго."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Вы навучыліся выкарыстоўваць жэсты. Каб выключыць жэсты, адкрыйце Налады."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Вы навучыліся рабіць жэст пераключэння паміж праграмамі."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Правесці пальцам для пераключэння паміж праграмамі"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Правядзіце па экране знізу ўверх, утрымліваючы палец націснутым, потым адпусціце."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Гатова"</string>
diff --git a/quickstep/res/values-bg/strings.xml b/quickstep/res/values-bg/strings.xml
index a5dc2f0..1e02bfc 100644
--- a/quickstep/res/values-bg/strings.xml
+++ b/quickstep/res/values-bg/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Предвидено приложение: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Трябва да прекарате пръст от най-лявата част на екрана."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Трябва да прекарате пръст от левия край на екрана до средата, след което да вдигнете пръста си."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Чудесно! Прекарайте пръст от дясно, за да се върнете назад"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Можете да се върнете на последния екран, като прекарате пръст от десния край на екрана до средата."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Трябва да прекарате пръст от най-дясната част на екрана."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Трябва да прекарате пръст от десния край на екрана до средата, след което да вдигнете пръста си."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Изпълнихте жеста за връщане назад. В следващия урок ще научите как се превключва между приложения."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Изпълнихте жеста за връщане назад."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Не прекарвайте пръст твърде близо до долната част на екрана."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Променете чувств. на жеста за връщане назад от настройките"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Прекарайте пръст от ляво, за да се върнете назад"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"За да се върнете на последния активен екран, прекарайте пръст от левия край на екрана до средата."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Трябва да прекарате пръст нагоре от долния край на екрана."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Не задържайте, преди да вдигнете пръста си."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Трябва да прекарате пръст право нагоре."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Изпълнихте жеста за преминаване към началния екран. В следващия урок ще научите как се връща назад."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Изпълнихте жеста за преминаване към началния екран."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Прекарване на пръст за преминаване към началния екран"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Прекарайте пръст нагоре от долната част на екрана. Този жест винаги ще ви отвежда до началния екран."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Трябва да прекарате пръст нагоре от долния край на екрана."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Задръжте прозореца по-дълго, преди да вдигнете пръста си."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Прекарайте пръст право нагоре, след което задръжте."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Научихте как да използвате жестовете. За да ги изключите, отворете настройките."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Изпълнихте жеста за превключване между приложения."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Прекарване на пръст за превключване между приложенията"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Прекарайте пръст нагоре от долната част на екрана, задръжте и след това вдигнете пръста си."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Готово"</string>
diff --git a/quickstep/res/values-bn/strings.xml b/quickstep/res/values-bn/strings.xml
index 7226c41..b37c56b 100644
--- a/quickstep/res/values-bn/strings.xml
+++ b/quickstep/res/values-bn/strings.xml
@@ -88,14 +88,10 @@
<string name="gesture_tutorial_try_again" msgid="65962545858556697">"আবার চেষ্টা করুন"</string>
<string name="gesture_tutorial_nice" msgid="2936275692616928280">"সাবাস!"</string>
<string name="gesture_tutorial_step" msgid="1279786122817620968">"টিউটোরিয়াল <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
- <!-- no translation found for allset_title (5021126669778966707) -->
- <skip />
- <!-- no translation found for allset_hint (459504134589971527) -->
- <skip />
- <!-- no translation found for allset_description (6350320429953234580) -->
- <skip />
- <!-- no translation found for allset_navigation_settings (417773244979225071) -->
- <skip />
+ <string name="allset_title" msgid="5021126669778966707">"সব রেডি!"</string>
+ <string name="allset_hint" msgid="459504134589971527">"হোম স্ক্রিনে যেতে উপরের দিকে সোয়াইপ করুন"</string>
+ <string name="allset_description" msgid="6350320429953234580">"এবারে আপনি ফোন ব্যবহার করতে পারবেন"</string>
+ <string name="allset_navigation_settings" msgid="417773244979225071"><annotation id="link">"অ্যাক্সেসিবিলিটির জন্য নেভিগেশন সেটিংস"</annotation></string>
<string name="action_share" msgid="2648470652637092375">"শেয়ার করুন"</string>
<string name="action_screenshot" msgid="8171125848358142917">"স্ক্রিনশট নিন"</string>
<string name="blocked_by_policy" msgid="2071401072261365546">"এই অ্যাপ বা আপনার প্রতিষ্ঠান এই অ্যাকশনটি পারফর্ম করার অনুমতি দেয়নি"</string>
diff --git a/quickstep/res/values-bs/strings.xml b/quickstep/res/values-bs/strings.xml
index 23c3d6f..10d8f16 100644
--- a/quickstep/res/values-bs/strings.xml
+++ b/quickstep/res/values-bs/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Predviđena aplikacija: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Obratite pažnju da prevučete s krajnjeg lijevog ruba."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Obratite pažnju da prevučete s lijevog ruba prema sredini ekrana, a zatim pustite."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Lijepo! Sada prevucite zdesna ulijevo da se vratite"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Na posljednji ekran se možete vratiti i prevlačenjem od desnog ruba do sredine ekrana."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Obratite pažnju da prevučete s krajnjeg desnog ruba."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Obratite pažnju da prevučete s desnog ruba prema sredini ekrana, a zatim pustite."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Završili ste pokret za vraćanje. Sljedeće naučite kako prebacivati između aplikacija."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Završili ste pokret za vraćanje."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Obratite pažnju da ne prevučete preblizu donjem dijelu ekrana."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Promijenite osjetljivost pokreta za povratak u Postavkama"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Prevucite slijeva nadesno da se vratite"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Da se vratite na posljednji ekran na kojem ste bili, prevucite od lijevog ruba do sredine ekrana."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Obratite pažnju da prevučete prema gore s donjeg ruba ekrana."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Obratite pažnju da ne zastanete prije puštanja."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Obratite pažnju da prevučete ravno prema gore."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Završili ste pokret za otvaranje Početnog ekrana. Sljedeće naučite kako se vratiti."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Završili ste pokret za otvaranje Početnog ekrana."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Prevucite da odete na početni ekran"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Prevucite s dna ekrana prema gore. Tim pokretom uvijek idete na Početni ekran."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Obratite pažnju da prevučete prema gore s donjeg ruba ekrana."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Pokušajte zadržati prozor duže prije puštanja."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Obratite pažnju da prevučete ravno prema gore, a zatim zastanite."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Naučili ste kako koristiti pokrete. Idite u Postavke da isključite pokrete."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Završili ste pokret za prebacivanje između aplikacija."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Prevucite da prebacujete između aplikacija"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Prevucite s dna ekrana prema gore, zadržite, a zatim pustite."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Sve je spremno"</string>
diff --git a/quickstep/res/values-ca/strings.xml b/quickstep/res/values-ca/strings.xml
index 24677b5..0b81884 100644
--- a/quickstep/res/values-ca/strings.xml
+++ b/quickstep/res/values-ca/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Predicció d\'aplicació: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Assegura\'t de lliscar des de l\'extrem esquerre de la pantalla."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Assegura\'t de lliscar des de la vora esquerra cap al centre de la pantalla i deixa anar."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Molt bé! Ara llisca des de la dreta per tornar enrere."</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"També pots tornar a la darrera pantalla lliscant des de l\'extrem dret cap al centre."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Assegura\'t de lliscar des de l\'extrem dret de la pantalla."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Assegura\'t de lliscar des de la vora dreta cap al centre de la pantalla i deixa anar."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Has completat el gest per tornar enrere. Ara, descobreix com pots canviar d\'aplicació."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Has completat el gest per tornar enrere."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Assegura\'t de no lliscar massa a prop de la part inferior de la pantalla."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Per canviar la sensibilitat del gest, ves a Configuració"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Llisca des de l\'esquerra per tornar enrere"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Per tornar a la darrera pantalla, llisca des de l\'extrem esquerre cap al centre de la pantalla."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Assegura\'t de lliscar des de la vora inferior de la pantalla."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Assegura\'t de no aturar-te abans de deixar anar."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Assegura\'t de lliscar directament cap amunt."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Has completat el gest per anar a la pantalla d\'inici. Ara, descobreix com pots tornar enrere."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Has completat el gest per anar a la pantalla d\'inici."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Llisca per anar a la pantalla d\'inici"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Llisca cap amunt des de la part inferior de la pantalla. Aquest gest et porta a la pantalla d\'inici."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Assegura\'t de lliscar des de la vora inferior de la pantalla."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Prova de mantenir premuda la finestra durant més temps abans de deixar anar."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Assegura\'t de lliscar directament cap amunt i després aturar-te."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Has après a utilitzar els gestos. Per desactivar-los, ves a Configuració."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Has completat el gest per canviar d\'aplicació."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Llisca per canviar d\'aplicació"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Llisca cap amunt des de la part inferior de la pantalla, mantén premut i deixa anar."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Tot a punt"</string>
@@ -91,7 +81,7 @@
<string name="allset_title" msgid="5021126669778966707">"Tot a punt!"</string>
<string name="allset_hint" msgid="459504134589971527">"Llisca cap amunt per anar a la pàgina d\'inici"</string>
<string name="allset_description" msgid="6350320429953234580">"Ja pots començar a utilitzar el telèfon"</string>
- <string name="allset_navigation_settings" msgid="417773244979225071"><annotation id="link">"Configuració de navegació per utilitzar les funcions d\'accessibilitat"</annotation></string>
+ <string name="allset_navigation_settings" msgid="417773244979225071"><annotation id="link">"Configuració de navegació per a accessibilitat"</annotation></string>
<string name="action_share" msgid="2648470652637092375">"Comparteix"</string>
<string name="action_screenshot" msgid="8171125848358142917">"Captura de pantalla"</string>
<string name="blocked_by_policy" msgid="2071401072261365546">"L\'aplicació o la teva organització no permeten aquesta acció"</string>
diff --git a/quickstep/res/values-cs/strings.xml b/quickstep/res/values-cs/strings.xml
index 9bf841d..d5feff7 100644
--- a/quickstep/res/values-cs/strings.xml
+++ b/quickstep/res/values-cs/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Předpokládaná aplikace: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Přejeďte prstem z úplného levého okraje obrazovky."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Přejeďte prstem z levého okraje doprostřed obrazovky a zdvihněte prst."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Skvělé! Teď se přejetím prstem zprava vraťte"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Přejetím prstem z pravého okraje doprostřed obrazovky se také můžete vrátit zpět na poslední obrazovku."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Přejeďte prstem z úplného pravého okraje obrazovky."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Přejeďte prstem z pravého okraje doprostřed obrazovky a zdvihněte prst."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Dokončili jste gesto pro přechod zpět. Teď se naučíte přepínat aplikace."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Dokončili jste gesto pro přechod zpět."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Dejte pozor, abyste prstem nepřejížděli moc blízko ke spodnímu okraji obrazovky."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Citlivost gesta pro přechod zpět můžete změnit v Nastavení"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Pokud se chcete vrátit, přejeďte prstem zleva"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Na poslední obrazovku se můžete vrátit přejetím prstem z levého okraje doprostřed obrazovky."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Přejeďte prstem nahoru z dolního okraje obrazovky."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Před zdvihnutím prstu nedělejte pauzu."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Přejeďte prstem přímo nahoru."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Dokončili jste gesto pro přechod na plochu. Teď se naučíte vrátit se zpět."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Dokončili jste gesto pro přechod na plochu."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Přechod na plochu přejetím prstem"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Přejeďte prstem ze spodní části obrazovky nahoru. Tímto gestem se vždy dostanete na plochu."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Přejeďte prstem nahoru z dolního okraje obrazovky."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Zkuste podržet okno delší dobu, než ho uvolníte."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Přejeďte prstem přímo nahoru a pak udělejte pauzu."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Naučili jste se používat gesta. Gesta můžete vypnout v nastavení."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Dokončili jste gesto pro přepínání aplikací."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Přepínání aplikací přejetím prstem"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Přejeďte prstem nahoru z dolního okraje obrazovky, podržte obrazovku a potom prst uvolněte."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Vše je nastaveno"</string>
diff --git a/quickstep/res/values-da/strings.xml b/quickstep/res/values-da/strings.xml
index d917c76..c2d94a1 100644
--- a/quickstep/res/values-da/strings.xml
+++ b/quickstep/res/values-da/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"App, du forventes at skulle bruge: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Stryg fra kanten yderst til venstre."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Stryg fra venstre kant mod midten af skærmen, og løft fingeren."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Sådan! Prøv derefter at stryge fra højre for at gå tilbage"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Du kan også gå tilbage til den seneste skærm ved at stryge mod midten af skærmen fra højre kant."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Stryg fra kanten yderst til højre."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Stryg fra højre kant mod midten af skærmen, og løft fingeren."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Du har fuldført bevægelsen for Gå tilbage. Som det næste kan du se, hvordan du skifter app."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Du har fuldført bevægelsen for Gå tilbage."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Undgå at stryge for tæt på bunden af skærmen."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Juster følsomheden for bevægelsen Gå tilbage i Indstillinger"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Stryg fra venstre for at gå tilbage"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Stryg mod midten af skærmen fra venstre kant for at gå tilbage til den seneste skærm, du var på."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Stryg opad fra bunden af skærmen."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Undlad at holde fingeren stille, indtil du løfter fingeren."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Stryg lige opad."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Du har fuldført bevægelsen for Gå til startskærmen. Som det næste kan du se, hvordan du går til startskærmen."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Du har fuldført bevægelsen for Gå til startskærmen."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Stryg for at gå til startskærmen"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Stryg opad fra bunden af skærmen. Denne bevægelse åbner altid startskærmen."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Stryg opad fra bunden af skærmen."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Prøv at holde fingeren nede på vinduet i længere tid, inden du løfter den."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Stryg lige opad, og hold derefter fingeren stille."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Du har lært, hvordan du bruger bevægelser. Du kan aktivere bevægelser i Indstillinger."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Du har fuldført bevægelsen for Skift app."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Stryg for at skifte app"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Stryg opad fra bunden af skærmen, hold fingeren stille, og løft den."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Så er du klar"</string>
diff --git a/quickstep/res/values-de/strings.xml b/quickstep/res/values-de/strings.xml
index 6c00953..14f123f 100644
--- a/quickstep/res/values-de/strings.xml
+++ b/quickstep/res/values-de/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Vorgeschlagene App: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Wische vom äußersten linken Bildschirmrand."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Wische vom linken Bildschirmrand zur Bildschirmmitte und lass los."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Sehr gut! Wische von rechts nach links, um zurückzugehen."</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Du kannst auch zum letzten Bildschirm zurückgehen, indem du vom rechten Bildschirmrand zur Mitte wischst."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Wische vom äußersten rechten Bildschirmrand."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Wische vom rechten Bildschirmrand zur Bildschirmmitte und lass los."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Du hast die „Zurück“-Touch-Geste abgeschlossen. Gleich lernst du, wie man zwischen Apps wechselt."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Du hast die „Zurück“-Touch-Geste abgeschlossen."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Wische nicht zu nah am unteren Bildschirmrand."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Du kannst die Empfindlichkeit von „Zurück“ in den Einstellungen ändern"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Von links nach rechts wischen, um zurückzugehen"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Wenn du zum letzten Bildschirm zurückgehen möchtest, wische vom linken Bildschirmrand zur Mitte."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Wische vom unteren Bildschirmrand nach oben."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Achte darauf, nicht innezuhalten, bevor du loslässt."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Wische gerade nach oben."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Du hast die „Startbildschirm“-Touch-Geste abgeschlossen. Gleich lernst du, wie du zurückgelangst."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Du hast die „Startbildschirm“-Touch-Geste abgeschlossen."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Zum Startbildschirm gehen"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Wenn du zum Startbildschirm gehen möchtest, wische einfach vom unteren Bildschirmrand nach oben."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Wische vom unteren Bildschirmrand nach oben."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Versuche, das Fenster länger festzuhalten, bevor du es loslässt."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Wische gerade nach oben und halte dann inne."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Nun weißt du, wie Touch-Gesten funktionieren. Du kannst sie in den Einstellungen deaktivieren."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Du hast die „Apps wechseln“-Touch-Geste abgeschlossen."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Zwischen Apps wechseln"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Wische auf dem Bildschirm von unten nach oben, halte ihn gedrückt und lass ihn dann los."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Fertig"</string>
diff --git a/quickstep/res/values-el/strings.xml b/quickstep/res/values-el/strings.xml
index 9757265..ecc574f 100644
--- a/quickstep/res/values-el/strings.xml
+++ b/quickstep/res/values-el/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Εφαρμογή από πρόβλεψη: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Φροντίστε να σύρετε από το άκρο της αριστερής πλευράς."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Φροντίστε να σύρετε από το αριστερό άκρο προς το μέσο της οθόνης και απομακρύνετε το δάχτυλό σας."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Ωραία! Τώρα σύρετε από τα δεξιά για επιστροφή"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Μπορείτε να επιστρέψετε στην τελευταία οθόνη με σάρωση από το δεξί άκρο προς το κέντρο της οθόνης."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Φροντίστε να σύρετε από το άκρο της δεξιάς πλευράς."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Φροντίστε να σύρετε από το δεξί άκρο προς το μέσο της οθόνης και απομακρύνετε το δάχτυλό σας."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Ολοκληρώσατε την κίνηση επιστροφής. Στη συνέχεια, μάθετε πώς να κάνετε εναλλαγή εφαρμογών."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Ολοκληρώσατε την κίνηση επιστροφής."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Φροντίστε να μην σύρετε υπερβολικά κοντά στο κάτω μέρος της οθόνης."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Μεταβείτε στις Ρυθμίσεις για αλλαγή ευαισθ. κίνησης επιστρ."</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Για να επιστρέψετε, σύρετε από τα αριστερά"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Για να επιστρέψετε στην τελευταία οθόνη, σύρετε από το αριστερό άκρο προς το κέντρο της οθόνης."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Φροντίστε να σύρετε προς τα επάνω από το κάτω άκρο της οθόνης."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Φροντίστε να μην κάνετε παύση προτού απομακρύνετε τα δάχτυλά σας."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Φροντίστε να σύρετε απευθείας προς τα επάνω."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Ολοκληρώσατε την κίνηση μετάβασης στην αρχική οθόνη. Στη συνέχεια, μάθετε πώς να κάνετε επιστροφή."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Ολοκληρώσατε την κίνηση μετάβασης στην αρχική οθόνη."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Σύρετε για μετάβαση στην αρχική οθόνη"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Σύρετε προς τα πάνω από το κάτω μέρος της οθόνης. Αυτή η κίνηση σάς μεταφέρει πάντα στην αρχ. οθόνη."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Φροντίστε να σύρετε προς τα επάνω από το κάτω άκρο της οθόνης."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Δοκιμάστε να κρατήσετε περισσότερο το παράθυρο προτού απελευθερώσετε."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Φροντίστε να σύρετε απευθείας προς τα επάνω και έπειτα κάντε παύση."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Μάθατε πώς να χρησιμοποιείτε κινήσεις. Μεταβείτε στις Ρυθμίσεις για απενεργοποίηση των κινήσεων."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Ολοκληρώσατε την κίνηση εναλλαγής εφαρμογών."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Σύρετε για εναλλαγή εφαρμογών"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Σύρετε προς τα πάνω από το κάτω μέρος της οθόνης σας, κρατήστε παρατεταμένα και έπειτα ελευθερώστε."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Όλα είναι έτοιμα"</string>
diff --git a/quickstep/res/values-en-rAU/strings.xml b/quickstep/res/values-en-rAU/strings.xml
index c47dc57..882f98a 100644
--- a/quickstep/res/values-en-rAU/strings.xml
+++ b/quickstep/res/values-en-rAU/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Predicted app: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Make sure that you swipe from the far-left edge."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Make sure that you swipe from the left edge to the middle of the screen and let go."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Nice! Now swipe from the right to go back"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"You can also go back to the last screen by swiping from the right edge to the middle of the screen."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Make sure that you swipe from the far-right edge."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Make sure that you swipe from the right edge to the middle of the screen and let go."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"You completed the go back gesture. Next, learn how to switch apps."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"You completed the go back gesture."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Make sure that you don\'t swipe too close to the bottom of the screen."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"To change sensitivity of the back gesture, go to Settings"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Swipe from the left to go back"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"To go back to the last screen you were on, swipe from the left edge to the middle of the screen."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Make sure that you swipe up from the bottom edge of the screen."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Make sure that you don\'t pause before letting go."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Make sure that you swipe straight up."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"You completed the go home gesture. Next, learn how to go back."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"You completed the go home gesture."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Swipe to go home"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Swipe up from the bottom of your screen. This gesture always takes you to the home screen."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Make sure that you swipe up from the bottom edge of the screen."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Try holding the window for longer before releasing."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Make sure that you swipe straight up, then pause."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"You learned how to use gestures. To turn off gestures, go to settings."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"You completed the switch apps gesture."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Swipe to switch apps"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Swipe up from the bottom of your screen, hold, then release."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"All set"</string>
diff --git a/quickstep/res/values-en-rCA/strings.xml b/quickstep/res/values-en-rCA/strings.xml
index c47dc57..882f98a 100644
--- a/quickstep/res/values-en-rCA/strings.xml
+++ b/quickstep/res/values-en-rCA/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Predicted app: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Make sure that you swipe from the far-left edge."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Make sure that you swipe from the left edge to the middle of the screen and let go."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Nice! Now swipe from the right to go back"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"You can also go back to the last screen by swiping from the right edge to the middle of the screen."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Make sure that you swipe from the far-right edge."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Make sure that you swipe from the right edge to the middle of the screen and let go."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"You completed the go back gesture. Next, learn how to switch apps."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"You completed the go back gesture."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Make sure that you don\'t swipe too close to the bottom of the screen."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"To change sensitivity of the back gesture, go to Settings"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Swipe from the left to go back"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"To go back to the last screen you were on, swipe from the left edge to the middle of the screen."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Make sure that you swipe up from the bottom edge of the screen."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Make sure that you don\'t pause before letting go."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Make sure that you swipe straight up."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"You completed the go home gesture. Next, learn how to go back."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"You completed the go home gesture."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Swipe to go home"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Swipe up from the bottom of your screen. This gesture always takes you to the home screen."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Make sure that you swipe up from the bottom edge of the screen."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Try holding the window for longer before releasing."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Make sure that you swipe straight up, then pause."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"You learned how to use gestures. To turn off gestures, go to settings."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"You completed the switch apps gesture."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Swipe to switch apps"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Swipe up from the bottom of your screen, hold, then release."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"All set"</string>
diff --git a/quickstep/res/values-en-rGB/strings.xml b/quickstep/res/values-en-rGB/strings.xml
index c47dc57..882f98a 100644
--- a/quickstep/res/values-en-rGB/strings.xml
+++ b/quickstep/res/values-en-rGB/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Predicted app: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Make sure that you swipe from the far-left edge."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Make sure that you swipe from the left edge to the middle of the screen and let go."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Nice! Now swipe from the right to go back"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"You can also go back to the last screen by swiping from the right edge to the middle of the screen."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Make sure that you swipe from the far-right edge."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Make sure that you swipe from the right edge to the middle of the screen and let go."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"You completed the go back gesture. Next, learn how to switch apps."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"You completed the go back gesture."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Make sure that you don\'t swipe too close to the bottom of the screen."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"To change sensitivity of the back gesture, go to Settings"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Swipe from the left to go back"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"To go back to the last screen you were on, swipe from the left edge to the middle of the screen."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Make sure that you swipe up from the bottom edge of the screen."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Make sure that you don\'t pause before letting go."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Make sure that you swipe straight up."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"You completed the go home gesture. Next, learn how to go back."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"You completed the go home gesture."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Swipe to go home"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Swipe up from the bottom of your screen. This gesture always takes you to the home screen."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Make sure that you swipe up from the bottom edge of the screen."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Try holding the window for longer before releasing."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Make sure that you swipe straight up, then pause."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"You learned how to use gestures. To turn off gestures, go to settings."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"You completed the switch apps gesture."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Swipe to switch apps"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Swipe up from the bottom of your screen, hold, then release."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"All set"</string>
diff --git a/quickstep/res/values-en-rIN/strings.xml b/quickstep/res/values-en-rIN/strings.xml
index c47dc57..882f98a 100644
--- a/quickstep/res/values-en-rIN/strings.xml
+++ b/quickstep/res/values-en-rIN/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Predicted app: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Make sure that you swipe from the far-left edge."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Make sure that you swipe from the left edge to the middle of the screen and let go."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Nice! Now swipe from the right to go back"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"You can also go back to the last screen by swiping from the right edge to the middle of the screen."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Make sure that you swipe from the far-right edge."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Make sure that you swipe from the right edge to the middle of the screen and let go."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"You completed the go back gesture. Next, learn how to switch apps."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"You completed the go back gesture."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Make sure that you don\'t swipe too close to the bottom of the screen."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"To change sensitivity of the back gesture, go to Settings"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Swipe from the left to go back"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"To go back to the last screen you were on, swipe from the left edge to the middle of the screen."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Make sure that you swipe up from the bottom edge of the screen."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Make sure that you don\'t pause before letting go."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Make sure that you swipe straight up."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"You completed the go home gesture. Next, learn how to go back."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"You completed the go home gesture."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Swipe to go home"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Swipe up from the bottom of your screen. This gesture always takes you to the home screen."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Make sure that you swipe up from the bottom edge of the screen."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Try holding the window for longer before releasing."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Make sure that you swipe straight up, then pause."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"You learned how to use gestures. To turn off gestures, go to settings."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"You completed the switch apps gesture."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Swipe to switch apps"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Swipe up from the bottom of your screen, hold, then release."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"All set"</string>
diff --git a/quickstep/res/values-es-rUS/strings.xml b/quickstep/res/values-es-rUS/strings.xml
index 1b55b2d..f8aa17d 100644
--- a/quickstep/res/values-es-rUS/strings.xml
+++ b/quickstep/res/values-es-rUS/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Predicción de app: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Asegúrate de deslizar el dedo bien desde el borde izquierdo."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Asegúrate de deslizar el dedo del borde izquierdo hacia el centro de la pantalla y, luego, suéltalo."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"¡Genial! Ahora, desliza el dedo desde la derecha para volver"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Desliza de derecha al centro para volver a última pantalla."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Asegúrate de deslizar el dedo bien desde el borde derecho."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Asegúrate de deslizar el dedo del borde derecho hacia el centro de la pantalla y, luego, suéltalo."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Completaste el gesto \"Atrás\". A continuación, obtén información para cambiar de app."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Completaste el gesto \"Atrás\"."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Asegúrate de no hacerlo muy cerca de la parte inferior de la pantalla."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Cambia sensibilidad de gesto \"Atrás\" en Configuración"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Para volver, desliza el dedo desde la izquierda"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Para volver a la última pantalla, desliza el dedo del borde izquierdo al centro de la pantalla."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Asegúrate de deslizar el dedo hacia arriba desde la borde inferior de la pantalla."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Asegúrate de no detenerte antes de soltarlo."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Asegúrate de deslizar el dedo derecho hacia arriba."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Completaste el gesto para ir a la página principal. A continuación, obtén información para volver."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Completaste el gesto para ir a la página principal."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Desliza el dedo para ir a la página principal"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Desliza el dedo hacia arriba desde la parte inferior de la pantalla. Este gesto te llevará siempre a la pantalla principal."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Asegúrate de deslizar el dedo hacia arriba desde la borde inferior de la pantalla."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Prueba mantener presionada la ventana más tiempo antes de soltarla."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Asegúrate de deslizar el dedo derecho hacia arriba y, luego, detente."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Ya sabes cómo usar los gestos. Para desactivarlos, ve a Configuración."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Completaste el gesto para cambiar de app."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Desliza el dedo para cambiar de app"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Desliza el dedo hacia arriba desde la parte inferior de la pantalla, mantenlo presionado y, luego, suéltalo."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Listo"</string>
diff --git a/quickstep/res/values-es/strings.xml b/quickstep/res/values-es/strings.xml
index f803990..9be5db1 100644
--- a/quickstep/res/values-es/strings.xml
+++ b/quickstep/res/values-es/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Aplicación sugerida: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Desliza el dedo desde el extremo izquierdo."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Desliza el dedo desde el borde izquierdo de la pantalla hasta el centro y levántalo."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"¡Muy bien! Desliza el dedo desde la derecha para volver"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"También puedes deslizar el dedo del borde derecho al centro para volver a la pantalla anterior."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Desliza el dedo desde el extremo derecho."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Desliza el dedo desde el borde derecho de la pantalla hasta el centro y levántalo."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Has completado el gesto para volver. Ahora, descubre cómo cambiar de aplicación."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Has completado el gesto para volver."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"No deslices el dedo demasiado cerca de la parte inferior de la pantalla."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Para cambiar la sensibilidad del gesto, ve a Ajustes"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Desliza el dedo desde la izquierda para volver"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Si quieres volver a la pantalla anterior, desliza el dedo del borde izquierdo al centro."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Desliza el dedo hacia arriba desde el borde inferior de la pantalla."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"No hagas ninguna pausa antes de levantar el dedo."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Desliza el dedo directamente hacia arriba."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Has completado el gesto para ir a la pantalla de inicio. Ahora, descubre cómo volver."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Has completado el gesto para ir a la pantalla de inicio."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Desliza el dedo para ir a la pantalla de inicio"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Desliza hacia arriba desde la parte inferior. Con este gesto, siempre irás a la pantalla de inicio."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Desliza el dedo hacia arriba desde el borde inferior de la pantalla."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Prueba a mantener pulsada la ventana durante más tiempo antes de soltarla."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Desliza el dedo directamente hacia arriba y luego mantenlo pulsado."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Ya sabes cómo utilizar gestos. Para desactivarlos, ve a Configuración."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Has completado el gesto para cambiar de aplicación."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Deslizar el dedo para cambiar de aplicación"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Desliza el dedo hacia arriba desde la parte inferior de la pantalla, mantenlo pulsado y levántalo."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Todo listo"</string>
diff --git a/quickstep/res/values-et/strings.xml b/quickstep/res/values-et/strings.xml
index 28dcdca..9241d30 100644
--- a/quickstep/res/values-et/strings.xml
+++ b/quickstep/res/values-et/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Ennustatud rakendus: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Pühkige kindlasti vasakpoolsest servast."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Pühkige ekraanikuva vasakust servast keskele ja eemaldage sõrm."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Tubli töö! Nüüd pühkige tagasiliikumiseks paremalt vasakule."</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Eelmisele ekraanikuvale naasmiseks võite ka ekraanikuva paremast servast keskele pühkida."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Pühkige kindlasti parempoolsest servast."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Pühkige ekraanikuva paremast servast keskele ja eemaldage sõrm."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Tegite tagasiliikumise liigutuse. Järgmisena vaadake, kuidas rakenduste vahel vahetada."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Tegite tagasiliikumise liigutuse."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Veenduge, et te ei pühiks liiga ekraanikuva allosa lähedalt."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Tagasiliigutuse tundlikkuse muutmiseks avage menüü Seaded"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Tagasiliikumiseks pühkige vasakult paremale"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Eelmisele ekraanikuvale naasmiseks pühkige vasakust servast ekraanikuva keskele."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Pühkige kindlasti ekraanikuva alumisest servast üles."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Veenduge, et te enne vabastamist liigutust ei peataks."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Pühkige kindlasti otse üles."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Tegite avakuvale minemise liigutuse. Järgmisena vaadake, kuidas minna tagasi."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Tegite avakuvale minemise liigutuse."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Pühkimine avakuvale minemiseks"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Pühkige ekraani alaosast üles. See liigutus viib teid alati tagasi avakuvale."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Pühkige kindlasti ekraanikuva alumisest servast üles."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Hoidke sõrme aknal pisut kauem, enne kui vabastate."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Pühkige kindlasti otse üles, seejärel peatuge."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Õppisite liigutusi kasutama. Liigutuste väljalülitamiseks avage seaded."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Tegite rakenduste vahel vahetamise liigutuse."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Rakenduste vahel vahetamiseks pühkimine"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Pühkige ekraanikuva alaosast üles, hoidke ja seejärel vabastage."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Valmis"</string>
diff --git a/quickstep/res/values-eu/strings.xml b/quickstep/res/values-eu/strings.xml
index a8ae384..f810b42 100644
--- a/quickstep/res/values-eu/strings.xml
+++ b/quickstep/res/values-eu/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Iragarritako aplikazioa: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Ziurtatu hatza ezkerreko ertzetik pasatzen duzula."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Ziurtatu hatza pantailaren ezkerreko ertzetik erdialdera pasatzen eta askatzen duzula."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Ederki! Orain, atzera egiteko, pasatu hatza eskuinetik."</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Aurreko pantailara itzultzeko beste modu bat: pasatu hatza pantailaren eskuineko ertzetik erdialdera."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Ziurtatu hatza eskuineko ertzetik pasatzen duzula."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Ziurtatu hatza pantailaren eskuineko ertzetik erdialdera pasatzen eta askatzen duzula."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Ikasi duzu atzera egiteko keinua. Jarraian, ikasi aplikazioa aldatzen."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Ikasi duzu atzera egiteko keinua."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Ziurtatu hatza ez duzula pantailaren behealdetik gertuegi pasatzen."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Keinuaren sentikortasuna aldatzeko, joan ezarpenetara"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Atzera egiteko, pasatu hatza ezkerretik"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Aurreko pantailara itzultzeko, pasatu hatza pantailaren ezkerreko ertzetik erdialdera."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Ziurtatu hatza pantailaren beheko ertzetik gora pasatzen duzula."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Ziurtatu askatu aurretik ez duzula hatza gelditzen."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Ziurtatu hatza zuzen gora pasatzen duzula."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Ikasi duzu hasierako pantailara joateko keinua. Jarraian, ikasi atzera egiten."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Ikasi duzu hasierako pantailara joateko keinua."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Pasatu hatza hasierako pantailara joateko"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Pasatu hatza pantailaren behealdetik gora. Keinu horrek hasierako pantailara eramango zaitu beti."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Ziurtatu hatza pantailaren beheko ertzetik gora pasatzen duzula."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Eduki sakatuta leihoa luzaroago hatza altxatu aurretik."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Ziurtatu hatza zuzen gora pasatzen duzula; ondoren, gelditu."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Ikasi duzu keinuak erabiltzen. Keinuak desaktibatzeko, joan ezarpenetara."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Ikasi duzu aplikazioa aldatzeko keinua."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Pasatu hatza aplikazioa aldatzeko"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Pasatu hatza pantailaren behealdetik gora, eduki pantaila sakatuta eta altxatu hatza."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Dena prest"</string>
diff --git a/quickstep/res/values-fa/strings.xml b/quickstep/res/values-fa/strings.xml
index 670ca2e..ccde33a 100644
--- a/quickstep/res/values-fa/strings.xml
+++ b/quickstep/res/values-fa/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"برنامه پیشبینیشده: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"دقت کنید که از ابتدای لبه سمت چپ تند بکشید."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"دقت کنید که از لبه سمت چپ تند به وسط صفحه بکشید و رها کنید."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"عالی! اکنون از سمت راست تند بکشید تا به عقب بروید"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"با تند کشیدن از لبه سمت راست به وسط صفحه هم میتوانید به عقب بروید."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"دقت کنید که از ابتدای لبه سمت راست تند بکشید."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"دقت کنید که از لبه سمت راست تند به وسط صفحه بکشید و رها کنید."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"اشاره برگشتن را تکمیل کردید. مورد بعدی، با نحوه جابهجا شدن بین برنامهها آشنا شوید."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"اشاره برگشتن را تکمیل کردید."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"دقت کنید که موقع تند کشیدن بیشاز حد به پایین صفحه نزدیک نشوید."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"برای تغییر حساسیت اشاره برگشت، به «تنظیمات» بروید"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"برای برگشتن به عقب، از سمت چپ تند بکشید"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"برای برگشتن به آخرین صفحهای که در آن بودید، از لبه سمت چپ تند به وسط صفحه بکشید."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"دقت کنید که از لبه پایینی صفحه تند به بالا بکشید."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"دقت کنید که تا قبلاز رها کردن، کشیدن را متوقف نکنید."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"دقت کنید که مستقیماً تند به بالا بکشید."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"اشاره رفتن به «صفحه اصلی» را تکمیل کردید. مورد بعدی، با نحوه برگشتن به عقب آشنا شوید."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"اشاره رفتن به «صفحه اصلی» را تکمیل کردید."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"تند کشیدن برای رفتن به صفحه اصلی"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"از پایین صفحه، تند بهسمت بالا بکشید. این اشاره همیشه شما را به صفحه اصلی میبرد."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"دقت کنید که از لبه پایینی صفحه تند به بالا بکشید."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"سعی کنید قبلاز رها کردن، پنجره را برای مدت طولانیتری نگه دارید."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"دقت کنید که مستقیماً تند به بالا بکشید و سپس توقف کنید."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"با نحوه استفاده از اشارهها آشنا شدید. برای خاموش کردن اشارهها، به «تنظیمات» بروید."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"اشاره جابهجا شدن بین برنامهها را تکمیل کردید."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"تند کشیدن برای جابهجا شدن بین برنامهها"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"از پایین صفحهنمایش تند بهسمت بالا بکشید، نگه دارید، و سپس رها کنید."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"همه چیز آماده است"</string>
diff --git a/quickstep/res/values-fi/strings.xml b/quickstep/res/values-fi/strings.xml
index c70e0c6..e903138 100644
--- a/quickstep/res/values-fi/strings.xml
+++ b/quickstep/res/values-fi/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Ennakoitu sovellus: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Muista pyyhkäistä aivan vasemmasta reunasta."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Pyyhkäise näytön vasemmasta reunasta keskelle ja päästä irti."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Hienoa! Palaa nyt takaisin pyyhkäisemällä oikeasta reunasta"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Voit myös palata edelliseen näkymään pyyhkäisemällä näytön oikeasta reunasta keskelle."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Muista pyyhkäistä aivan oikeasta reunasta."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Pyyhkäise näytön oikeasta reunasta keskelle ja päästä irti."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Olet oppinut Takaisin-eleen. Opettele seuraavaksi vaihtamaan sovellusta."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Olet oppinut Takaisin-eleen."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Varo, ettet pyyhkäise liian lähellä alareunaa."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Voit muuttaa Takaisin-eleen herkkyyttä asetuksista"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Palaa takaisin pyyhkäisemällä vasemmasta reunasta"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Voit palata edelliseen näkymään pyyhkäisemällä näytön vasemmasta reunasta keskelle."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Pyyhkäise ylös näytön alareunasta."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Varo keskeyttämästä ennen kuin päästät irti."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Muista pyyhkäistä suoraan ylöspäin."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Olet oppinut aloitusnäytölle palaamiseleen. Opettele seuraavaksi siirtymään takaisin."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Olet oppinut aloitusnäytölle palaamiseleen."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Siirry aloitusnäytölle pyyhkäisemällä"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Pyyhkäise ylös näytön alareunasta. Tämä ele vie sinut aina aloitusnäytölle."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Pyyhkäise ylös näytön alareunasta."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Kokeile pitää ikkunaa painettuna pidempään ennen kuin päästät irti."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Muista pyyhkäistä suoraan ylöspäin ja keskeytä sitten."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Olet oppinut käyttämään eleitä. Jos haluat laittaa eleet pois päältä, avaa Asetukset."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Olet oppinut sovellusten vaihtamiseleen."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Vaihda sovellusta pyyhkäisemällä"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Pyyhkäise ylöspäin näytön alareunasta ja päästä irti."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Valmista"</string>
diff --git a/quickstep/res/values-fr-rCA/strings.xml b/quickstep/res/values-fr-rCA/strings.xml
index b4375df..1aa67e0 100644
--- a/quickstep/res/values-fr-rCA/strings.xml
+++ b/quickstep/res/values-fr-rCA/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Application prédite : <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Assurez-vous de balayer l\'écran à partir de l\'extrémité gauche."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Assurez-vous de balayer l\'écran de l\'extrémité gauche jusqu\'au centre, puis de lever le doigt."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Bien! Maintenant, balayez à partir de la droite pour revenir."</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Vous pouvez aussi revenir à l\'écran précédent en balayant du côté droit jusqu\'au centre de l\'écran."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Assurez-vous de balayer l\'écran à partir de l\'extrémité droite."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Assurez-vous de balayer l\'écran de l\'extrémité droite jusqu\'au centre, puis de lever le doigt."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Vous avez appris le geste de retour. Ensuite, vous apprendrez comment basculer entre les applications."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Vous avez appris le geste de retour."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Assurez-vous de ne pas balayer trop près du bas de l\'écran."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Modifiez la sensibilité du geste de retour dans Paramètres"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Balayez l\'écran vers la gauche pour revenir en arrière"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Pour revenir à l\'écran précédent, balayez du côté gauche jusqu\'au centre de l\'écran."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Assurez-vous de balayer l\'écran à partir de l\'extrémité inférieure vers le haut."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Assurez-vous de ne pas interrompre le geste avant de lever le doigt."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Assurez-vous de balayer l\'écran en ligne droite vers le haut."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Vous avez appris le geste pour revenir à l\'écran d\'accueil. Apprenez ensuite à revenir en arrière."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Vous avez appris le geste pour revenir à l\'écran d\'accueil."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Balayer pour revenir à l\'écran d\'accueil"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Balayez l\'écran du bas vers le haut. Ce geste vous ramène toujours à l\'écran d\'accueil."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Assurez-vous de balayer l\'écran à partir de l\'extrémité inférieure vers le haut."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Essayez de tenir la fenêtre plus longtemps avant de relâcher."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Assurez-vous de balayer l\'écran vers le haut, puis de faire une pause."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Vous avez appris à utiliser les gestes. Pour les désactiver, accédez au menu Paramètres."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Vous avez appris le geste pour basculer entre les applications."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Balayer pour basculer entre les applications"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Balayez l\'écran de bas en haut, maintenez le doigt en place, puis relâchez-le."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Terminé"</string>
diff --git a/quickstep/res/values-fr/strings.xml b/quickstep/res/values-fr/strings.xml
index c00e02c..e010152 100644
--- a/quickstep/res/values-fr/strings.xml
+++ b/quickstep/res/values-fr/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Application prédite : <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Veillez à balayer l\'écran depuis le bord gauche."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Veillez à bien balayer l\'écran depuis le bord gauche jusqu\'au centre avant de relever le doigt."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Bravo ! Pour revenir en arrière, balayez l\'écran depuis la droite."</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Pour revenir à l\'écran précédent, balayez l\'écran depuis le bord droit jusqu\'au centre."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Veillez à balayer l\'écran depuis le bord droit."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Veillez à bien balayer l\'écran depuis le bord droit jusqu\'au centre avant de relever le doigt."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Vous avez appris le geste pour revenir en arrière. Apprenez ensuite à passer d\'une appli à l\'autre."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Vous avez appris le geste pour revenir en arrière."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Veillez à ne pas balayer l\'écran trop près du bas."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Modifiez la sensibilité du geste retour dans les paramètres"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Balayez l\'écran depuis le bord gauche pour revenir en arrière"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Pour revenir à l\'écran précédent, balayez l\'écran depuis le bord gauche jusqu\'au centre."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Veillez à balayer l\'écran du bas vers le haut."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Veillez à ne pas marquer de pause dans votre geste avant de relever le doigt."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Veillez à balayer l\'écran vers le haut."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Vous avez appris le geste pour revenir à l\'écran d\'accueil. Apprenez ensuite à revenir en arrière."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Vous avez appris le geste pour revenir à l\'écran d\'accueil."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Balayer pour revenir à l\'écran d\'accueil"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Balayez l\'écran de bas en haut. Ce geste vous ramènera toujours à l\'écran d\'accueil."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Veillez à balayer l\'écran du bas vers le haut."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Essayez d\'appuyer plus longtemps sur la fenêtre avant de relever le doigt."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Veillez à balayer l\'écran vers le haut et à marquer une pause dans votre geste."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Vous avez appris à utiliser les gestes. Pour les désactiver, accédez aux paramètres."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Vous avez appris le geste pour passer d\'une appli à l\'autre."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Balayer pour passer d\'une appli à l\'autre"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Balayez l\'écran du bas vers le haut, appuyez de manière prolongée, puis relevez le doigt."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Vous avez terminé"</string>
diff --git a/quickstep/res/values-gl/strings.xml b/quickstep/res/values-gl/strings.xml
index 31c2c33..eddca5d 100644
--- a/quickstep/res/values-gl/strings.xml
+++ b/quickstep/res/values-gl/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Aplicación predita: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Asegúrate de pasar o dedo desde o bordo esquerdo máis afastado."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Asegúrate de pasar o dedo desde o bordo esquerdo ata o medio da pantalla e avanza."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Excelente! Agora pasa o dedo desde a dereita para volver"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Podes volver á última pantalla pasando o dedo desde o bordo dereito ata a metade da pantalla."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Asegúrate de pasar o dedo desde o bordo dereito máis afastado."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Asegúrate de pasar o dedo desde o bordo dereito ata o medio da pantalla e avanza."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Completaches o xesto de volver á última pantalla. O próximo é aprender a cambiar de aplicación."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Completaches o xesto de volver á última pantalla."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Asegúrate de non pasar o dedo demasiado preto da parte inferior da pantalla."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Podes cambiar a sensibilidade do xesto en Configuración"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Pasa o dedo desde a esquerda para volver"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Para volver á última pantalla, pasa o dedo desde o bordo esquerdo ata a metade da pantalla."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Asegúrate de pasar o dedo cara arriba desde o bordo inferior da pantalla."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Asegúrate de non facer unha pausa antes de avanzar."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Asegúrate de pasar o dedo cara arriba cun movemento vertical."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Completaches o xesto de ir ao inicio. O próximo é aprender a volver á última pantalla."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Completaches o xesto de ir ao inicio."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Pasar o dedo para ir ao inicio"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Pasa o dedo cara arriba desde a parte inferior da pantalla. Ao facelo, irás á pantalla de inicio."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Asegúrate de pasar o dedo cara arriba desde o bordo inferior da pantalla."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Proba a manter premida a pantalla máis tempo antes de soltala."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Asegúrate de pasar o dedo cara arriba cun movemento vertical. Despois, fai unha pausa."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Aprendiches a usar os xestos. Para desactivalos, vai a Configuración."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Completaches o xesto para cambiar de aplicación."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Pasar o dedo para cambiar de aplicación"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Pasa o dedo cara arriba desde a parte inferior da pantalla, mantena premida e sepárao."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Todo listo"</string>
diff --git a/quickstep/res/values-hi/strings.xml b/quickstep/res/values-hi/strings.xml
index 133c200..fdf62a7 100644
--- a/quickstep/res/values-hi/strings.xml
+++ b/quickstep/res/values-hi/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"सुझाया गया ऐप्लिकेशन: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"देख लें कि आप स्क्रीन की बाईं तरफ़ के बिल्कुल किनारे से स्वाइप कर रहे हों."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"देख लें कि आप स्क्रीन के बाएं किनारे से बीचों-बीच तक स्वाइप कर रहे हों और फिर अपनी उंगली उठा लें."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"बढ़िया! अब वापस जाने के लिए, स्क्रीन के दाएं किनारे से स्वाइप करें"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"आप दाएं किनारे से स्क्रीन के बीच तक स्वाइप करके भी पिछली स्क्रीन पर जा सकते हैं."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"देख लें कि आप स्क्रीन की दाईं तरफ़ के बिल्कुल किनारे से स्वाइप कर रहे हों."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"देख लें कि आप स्क्रीन के दाएं किनारे से बीचों-बीच तक स्वाइप कर रहे हों और फिर अपनी उंगली उठा लें."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"आपने पीछे ले जाने वाले हाथ के जेस्चर के बारे में जान लिया है. एक ऐप से दूसरे पर जाने का तरीका जानें."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"आपने पेज पर पीछे ले जाने वाले हाथ के जेस्चर (हाव-भाव) के बारे में जान लिया है."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"देखे लें कि आप स्क्रीन पर बिल्कुल नीचे तक स्वाइप न कर रहे हों."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"\'सेटिंग\' में जाकर, पीछे जाने के लिए इस्तेमाल होने वाले हाथ के जेस्चर (हाव-भाव) की संवेदनशीलता बदलें"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"वापस जाने के लिए, स्क्रीन के बाएं किनारे से स्वाइप करें"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"पिछली स्क्रीन पर वापस जाने के लिए, बाएं किनारे से स्क्रीन के बीच तक स्वाइप करें."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"देख लें कि आप स्क्रीन के निचले किनारे से ऊपर की ओर स्वाइप कर रहे हों."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"देख लें कि आप स्क्रीन से अपनी उंगली उठाने से पहले, इसे कहीं न रोक रहे हों."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"देख लें कि आप ऊपर की ओर बिल्कुल सीधे स्वाइप कर रहे हों."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"आपने होम स्क्रीन पर ले जाने वाले हाथ के जेस्चर के बारे में जान लिया है. अब, वापस जाने का तरीका जानें."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"आपने होम स्क्रीन पर ले जाने वाले हाथ के जेस्चर (हाव-भाव) के बारे में जान लिया है."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"होम स्क्रीन पर जाने के लिए स्वाइप करें"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"स्क्रीन पर नीचे से ऊपर की ओर स्वाइप करें. हाथ का यह जेस्चर आपको हमेशा होम स्क्रीन पर ले जाता है."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"देख लें कि आप स्क्रीन के निचले किनारे से ऊपर की ओर स्वाइप कर रहे हों."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"कोशिश करें कि स्क्रीन से उंगली उठाने से पहले, इसे कुछ देर स्क्रीन पर दबाकर रखें."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"देख लें कि आप स्क्रीन पर ऊपर की तरफ़, बिल्कुल सीधे स्वाइप कर रहे हों और फिर रुकें."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"आपने हाथ के जेस्चर (हाव-भाव) को इस्तेमाल करना सीख लिया है. जेस्चर बंद करने के लिए, सेटिंग में जाएं."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"आपने एक ऐप्लिकेशन से दूसरे पर जाने के लिए इस्तेमाल होने वाले हाथ के जेस्चर के बारे में जान लिया है."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"एक ऐप्लिकेशन से दूसरे पर जाने के लिए स्वाइप करें"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"अपनी स्क्रीन पर नीचे से ऊपर की तरफ़ स्वाइप करें, दबाकर रखें, फिर छोड़ दें."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"आप पूरी तरह तैयार हैं"</string>
diff --git a/quickstep/res/values-hr/strings.xml b/quickstep/res/values-hr/strings.xml
index 583c006..7c50ae2 100644
--- a/quickstep/res/values-hr/strings.xml
+++ b/quickstep/res/values-hr/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Predviđena aplikacija: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Pazite da prijeđete prstom od krajnjeg lijevog ruba."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Pazite da prijeđete prstom od lijevog ruba do sredine zaslona i podignite prst."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Odlično! Prijeđite prstom zdesna ulijevo da biste se vratili"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Na posljednji se zaslon možete vratiti i prelaskom od desnog ruba do sredine zaslona."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Pazite da prijeđete prstom od krajnjeg desnog ruba."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Pazite da prijeđete prstom od desnog ruba do sredine zaslona i podignite prst."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Izvršili ste pokret za povratak. Sad saznajte kako promijeniti aplikaciju."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Izvršili ste pokret za povratak."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Pazite da ne prijeđete prstom preblizu dnu zaslona."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Osjetljivost pokreta povratka promijenite u postavkama"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Prijeđite prstom slijeva udesno da biste se vratili"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Da biste se vratili na posljednji posjećeni zaslon, prijeđite od lijevog ruba do sredine zaslona."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Pazite da prijeđete prstom prema gore od donjeg ruba zaslona."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Pazite da ne zastanete prije podizanja prsta."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Pazite da prijeđete prstom ravno prema gore."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Izvršili ste pokret za otvaranje početnog zaslona. Sad saznajte kako se vratiti."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Izvršili ste pokret za otvaranje početnog zaslona."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Prijeđite prstom da biste otvorili početni zaslon"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Prijeđite prstom od dna zaslona prema gore. Tim pokretom uvijek će se otvoriti početni zaslon."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Pazite da prijeđete prstom prema gore od donjeg ruba zaslona."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Pokušajte zadržati prozor dulje prije podizanja prsta."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Pazite da prijeđete prstom ravno prema gore, a zatim zastanete."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Naučili ste koristiti pokrete. Pokrete možete isključiti u postavkama."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Izvršili ste pokret za promjenu aplikacije."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Prijeđite prstom da biste promijenili aplikaciju"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Prijeđite prstom od dna zaslona prema gore, zadržite pritisak pa podignite prst."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Sve je spremno"</string>
diff --git a/quickstep/res/values-hu/strings.xml b/quickstep/res/values-hu/strings.xml
index 4575560..6436738 100644
--- a/quickstep/res/values-hu/strings.xml
+++ b/quickstep/res/values-hu/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Várható alkalmazás: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Csúsztasson a képernyő bal széléről."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Csúsztasson a képernyő bal széléről a képernyő közepéig, és engedje el a képernyőt."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Remek! Most csúsztasson jobbról a visszalépéshez."</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"A képernyő jobb széléről a képernyő közepéig csúsztatva is visszatérhet a legutóbbi képernyőre."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Csúsztasson a képernyő jobb széléről."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Csúsztasson a képernyő jobb széléről a képernyő közepéig, és engedje el a képernyőt."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Teljesítette a visszalépési kézmozdulatot. Most megtanulhatja, hogyan válthat az appok között."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Teljesítette a visszalépési kézmozdulatot."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Ne csúsztasson túl közel a képernyő aljához."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"A vissza mozdulat érzékenysége a Beállításokban módosítható"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"A visszalépéshez csúsztasson balról jobbra"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Ha visszatérne a legutóbbi képernyőre, csúsztasson a képernyő közepére a bal szélétől."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Csúsztasson felfelé a képernyő aljától."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Ne álljon meg, mielőtt elengedi a képernyőt."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Csúsztasson egyenesen felfelé."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Teljesítette a kezdőképernyőre lépés kézmozdulatát. Most megtanulhatja, hogyan léphet vissza."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Teljesítette a kezdőképernyőre lépés kézmozdulatát."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Csúsztatás a kezdőképernyőre lépéshez"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Csúsztassa ujját felfelé a képernyő aljától. Ez a mozdulat mindig a kezdőképernyőre visz."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Csúsztasson felfelé a képernyő aljától."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Próbálja tovább lenyomva tartani az ablakot, mielőtt elengedi a képernyőt."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Csúsztasson egyenesen felfelé, majd várjon egy kicsit."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Eddig megismerhette a kézmozdulatok használatát. A kézmozdulatokat a Beállításokban kapcsolhatja ki."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Teljesítette az alkalmazásváltás kézmozdulatát."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Alkalmazásváltás csúsztatással"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Csúsztasson felfelé a képernyő aljáról, tartsa lenyomva az ujját, majd emelje fel."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Minden kész"</string>
diff --git a/quickstep/res/values-hy/strings.xml b/quickstep/res/values-hy/strings.xml
index d7ceead..3ca7112 100644
--- a/quickstep/res/values-hy/strings.xml
+++ b/quickstep/res/values-hy/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Առաջարկվող հավելված՝ <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Համոզվեք, որ մատը սահեցնում եք էկրանի ձախ եզրից։"</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Սահեցրեք մատն էկրանի ձախ եզրից դեպի կենտրոն և բաց թողեք։"</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Գերազանց է․ այժմ մատը սահեցրեք աջ եզրից՝ հետ գնալու համար"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Անցեք վերջին էկրան՝ էկրանի աջ եզրից մատը սահեցնելով դեպի կենտրոն։"</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Համոզվեք, որ մատը սահեցնում եք էկրանի աջ եզրից։"</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Սահեցրեք մատն էկրանի աջ եզրից դեպի կենտրոն և բաց թողեք։"</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Դուք սովորեցիք հետ գնալու ժեստը։ Այժմ սովորենք՝ ինչպես անցնել մի հավելվածից մյուսը։"</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Դուք սովորեցիք հետ գնալու ժեստը։"</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Համոզվեք, որ մատը չափազանց մոտ չեք սահեցնում էկրանին ներքևի հատվածին։"</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Հետ գնալու ժեստի զգայունությունը փոփոխեք կարգավորումներում"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Սահեցրեք մատը ձախից՝ հետ գնալու համար"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Վերջին էկրան վերադառնալու համար էկրանի եզրից մատը սահեցրեք դեպի կենտրոն։"</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Համոզվեք, որ մատն էկրանի ներքևի եզրից վերև եք սահեցնում։"</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Համոզվեք, որ դադար չեք տալիս նախքան բաց թողնելը։"</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Համոզվեք, որ մատն ուղիղ վերև եք սահեցնում։"</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Դուք սովորեցիք հիմնական էկրան անցնելու ժեստը։ Այժմ սովորենք՝ ինչպես հետ գնալ։"</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Դուք սովորեցիք հիմնական էկրան անցնելու ժեստը։"</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Սահեցրեք մատը՝ հիմնական էկրան անցնելու համար"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Մատը սահեցրեք էկրանի ներքևից վերև։ Այս ժեստը բացում է հիմնական էկրանը։"</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Համոզվեք, որ մատն էկրանի ներքևի եզրից վերև եք սահեցնում։"</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Նախքան բաց թողնելը փորձեք հնարավորինս երկար պահել պատուհանը։"</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Համոզվեք, որ մատն ուղիղ վերև եք սահեցնում, այնուհետև դադար տվեք։"</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Դուք սովորեցիք՝ ինչպես օգտագործել ժեստերը։ Ժեստերը կարող եք անջատել կարգավորումներում։"</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Դուք սովորեցիք մի հավելվածից մյուսն անցնելու ժեստը։"</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Մատը սահեցրեք՝ մյուս հավելվածին անցնելու համար"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Մատը սահեցրեք էկրանի ներքևից վերև, պահեք և բաց թողեք։"</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Պատրաստ է"</string>
diff --git a/quickstep/res/values-in/strings.xml b/quickstep/res/values-in/strings.xml
index 9c972b7..9efc53e 100644
--- a/quickstep/res/values-in/strings.xml
+++ b/quickstep/res/values-in/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Aplikasi yang diprediksi: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Pastikan Anda menggeser dari tepi ujung kiri."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Pastikan Anda menggeser dari tepi kiri ke tengah layar, lalu lepaskan."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Bagus! Sekarang geser dari kanan untuk kembali"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Geser dari tepi kanan ke tengah layar menuju layar terakhir."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Pastikan Anda menggeser dari tepi ujung kanan."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Pastikan Anda menggeser dari tepi kanan ke tengah layar, lalu lepaskan."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Anda telah menyelesaikan gestur kembali. Selanjutnya, pelajari cara beralih aplikasi."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Anda telah menyelesaikan gestur kembali."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Pastikan Anda tidak menggeser terlalu dekat ke bagian bawah layar."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Untuk mengubah sensitivitas gestur kembali, buka Setelan"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Geser dari kiri untuk kembali"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Untuk kembali ke layar terakhir, geser dari tepi kiri ke tengah layar."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Pastikan Anda menggeser ke atas dari tepi bawah layar."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Pastikan Anda tidak menjeda sebelum melepaskan."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Pastikan Anda menggeser lurus ke atas."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Anda telah menyelesaikan gestur menuju Layar utama. Selanjutnya, pelajari cara beralih kembali."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Anda telah menyelesaikan gestur menuju Layar utama."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Geser untuk beralih ke layar utama"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Geser ke atas dari bagian bawah layar. Gestur ini akan selalu membawa Anda ke Layar utama."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Pastikan Anda menggeser ke atas dari tepi bawah layar."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Coba tahan jendela lebih lama sebelum melepaskan."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Pastikan Anda menggeser lurus ke atas, lalu menjedanya."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Anda telah mempelajari cara menggunakan gestur. Untuk menonaktifkan gestur, buka Setelan."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Anda telah menyelesaikan gestur beralih aplikasi."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Geser untuk beralih aplikasi"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Geser ke atas dari bagian bawah layar, tahan, lalu lepaskan."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Semua siap"</string>
diff --git a/quickstep/res/values-is/strings.xml b/quickstep/res/values-is/strings.xml
index 55d387a..2687b9c 100644
--- a/quickstep/res/values-is/strings.xml
+++ b/quickstep/res/values-is/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Tillaga að forriti: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Passaðu að strjúka frá jaðri vinstri brúnar."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Passaðu að strjúka frá vinstri brún skjásins að miðju hans og sleppa svo."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Flott! Strjúktu núna til hægri til að fara til baka"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Þú getur einnig farið til baka á síðasta skjá með því að strjúka frá hægri brún að miðju skjásins."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Passaðu að strjúka frá jaðri hægri brúnar."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Passaðu að strjúka frá hægri brún skjásins að miðju hans og sleppa svo."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Þú laukst við að kynna þér bendinguna „til baka“. Næst skaltu læra hvernig þú skiptir á milli forrita."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Þú laukst við að kynna þér bendinguna „til baka“."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Passaðu að strjúka ekki of nálægt neðri brún skjásins."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Til að breyta næmi til baka-bendingar ferðu í stillingar"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Strjúktu frá vinstri til að fara til baka"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Strjúktu frá vinstri brún að miðju skjásins til að fara aftur til baka í síðasta skjá sem var opinn."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Passaðu að strjúka upp frá neðri brún skjásins."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Passaðu að stoppa ekki áður en þú sleppir."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Passaðu að strjúka beint upp."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Þú laukst við að kynna þér bendinguna „heim“. Næst skaltu læra hvernig þú ferð „til baka“."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Þú laukst við að kynna þér bendinguna „heim“."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Strjúktu til að fara heim"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Strjúktu upp frá neðri hluta skjásins. Þetta flytur þig alltaf á heimaskjáinn."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Passaðu að strjúka upp frá neðri brún skjásins."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Prófaðu að halda fingrinum lengur á glugganum áður en þú sleppir."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Passaðu að strjúka beint upp og stoppa svo."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Þú kynntir þér hvernig á að nota bendingar. Opnaðu stillingar til að slökkva á bendingum."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Þú laukst við að kynna þér bendinguna „skipta um forrit“."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Strjúktu til að skipta á milli forrita"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Strjúktu upp frá neðri hluta skjásins, haltu fingrinum á skjánum og slepptu svo."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Allt til reiðu"</string>
diff --git a/quickstep/res/values-it/strings.xml b/quickstep/res/values-it/strings.xml
index 2a66ae4..a37a102 100644
--- a/quickstep/res/values-it/strings.xml
+++ b/quickstep/res/values-it/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"App prevista: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Assicurati di scorrere dall\'estremità del bordo sinistro."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Assicurati di scorrere dal bordo sinistro verso il centro dello schermo e solleva il dito."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Bene! Ora scorri da destra per tornare indietro."</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Puoi anche tornare all\'ultima schermata scorrendo dal bordo destro verso il centro dello schermo."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Assicurati di scorrere dall\'estremità del bordo destro."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Assicurati di scorrere dal bordo destro verso il centro dello schermo e solleva il dito."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Hai completato il gesto Indietro. Ora, impara come passare da un\'app all\'altra."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Hai completato il gesto Indietro."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Assicurati di non scorrere troppo vicino alla parte inferiore dello schermo."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Usa Impostazioni per cambiare sensibilità del gesto Indietro"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Scorri da sinistra per tornare indietro"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Per tornare all\'ultima schermata mostrata, scorri dal bordo sinistro verso il centro dello schermo."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Assicurati di scorrere verso l\'alto dal bordo inferiore dello schermo."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Assicurati di non fare pause prima di sollevare il dito."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Assicurati di scorrere verso l\'alto senza fermarti."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Hai completato il gesto Vai alla schermata Home. Ora, impara come tornare indietro."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Hai completato il gesto Vai alla schermata Home."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Scorri per andare alla schermata Home"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Scorri verso l\'alto dalla parte inferiore dello schermo; così arrivi sempre alla schermata Home."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Assicurati di scorrere verso l\'alto dal bordo inferiore dello schermo."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Prova a tenere premuta la finestra più a lungo prima di rilasciarla."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Assicurati di scorrere verso l\'alto senza fermarti, poi fai una pausa."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Hai imparato a usare i gesti. Per disattivarli, vai alle Impostazioni."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Hai completato il gesto Cambia app."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Scorri per passare da un\'app all\'altra"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Scorri verso l\'alto dalla parte inferiore dello schermo, tieni premuto e rilascia."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Fatto"</string>
diff --git a/quickstep/res/values-iw/strings.xml b/quickstep/res/values-iw/strings.xml
index 1c52011..8d61fd4 100644
--- a/quickstep/res/values-iw/strings.xml
+++ b/quickstep/res/values-iw/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"האפליקציות החזויות: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"חשוב להקפיד להחליק מהקצה הימני."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"חשוב להקפיד להחליק מהקצה הימני למרכז המסך ואז לשחרר."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"איזה יופי! עכשיו עליך להחליק מהקצה הימני כדי לחזור"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"אפשר לחזור למסך הקודם בהחלקה מהקצה הימני של המסך אל המרכז."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"חשוב להקפיד להחליק מהקצה השמאלי."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"חשוב להקפיד להחליק מהקצה השמאלי למרכז המסך ואז לשחרר."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"השלמת את תנועת \'הקודם\'. בשלב הבא לומדים איך לעבור בין אפליקציות."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"השלמת את תנועת \'הקודם\'."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"חשוב להקפיד שלא להחליק קרוב מדי לתחתית המסך."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"כדי לשנות את מידת הרגישות של תנועת החזרה, יש לעבור להגדרות"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"יש להחליק מצד שמאל כדי לחזור למסך הקודם"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"כדי לחזור למסך הקודם, יש להחליק מהקצה השמאלי של המסך אל המרכז."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"חשוב להקפיד להחליק למעלה מהקצה התחתון של המסך."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"חשוב לוודא שלא מחכים לפני שמשחררים."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"חשוב להקפיד להחליק ישר למעלה."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"השלמת את תנועת המעבר למסך הבית. בשלב הבא לומדים איך לחזור למסך הקודם."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"השלמת את תנועת המעבר למסך הבית."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"יש להחליק כדי לעבור למסך הבית"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"החלקה למעלה מתחתית המסך תמיד תעביר אותך למסך הבית."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"חשוב להקפיד להחליק למעלה מהקצה התחתון של המסך."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"יש לנסות להחזיק את החלון לזמן רב יותר לפני שמשחררים."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"חשוב להקפיד להחליק ישר למעלה ואז להמתין."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"למדת איך להשתמש בתנועות. ניתן להשבית את התנועות ב\'הגדרות\'."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"השלמת את תנועת המעבר בין האפליקציות."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"יש להחליק כדי לעבור בין אפליקציות"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"יש להחליק למעלה מתחתית המסך, להחזיק ולאחר מכן לשחרר."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"הכול מוכן"</string>
diff --git a/quickstep/res/values-ja/strings.xml b/quickstep/res/values-ja/strings.xml
index 1a867e7..57fca5b 100644
--- a/quickstep/res/values-ja/strings.xml
+++ b/quickstep/res/values-ja/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"予測されたアプリ: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"一番左端からスワイプしてください。"</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"画面の左端から中央に向かってスワイプし、指を離してください。"</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"では、右端からスワイプして前の画面に戻りましょう"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"画面の右端から中央に向かってスワイプして直前の画面に戻ることもできます。"</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"一番右端からスワイプしてください。"</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"画面の右端から中央に向かってスワイプし、指を離してください。"</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"「戻る」操作を完了しました。次は、アプリを切り替える方法を覚えましょう。"</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"「戻る」操作を完了しました。"</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"スワイプする際は画面の下部に近づきすぎないようにしましょう。"</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"「戻る」操作の感度を変更するには [設定] に移動します"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"左端からスワイプすると前の画面に戻ります"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"直前の画面に戻るには、画面の左端から中央に向かってスワイプします。"</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"画面の下端から上にスワイプしてください。"</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"指を離す前にいったん止めないでください。"</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"まっすぐ上にスワイプしてください。"</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"「ホームに戻る」操作を完了しました。次は、前の画面に戻る方法を覚えましょう。"</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"「ホームに戻る」操作を完了しました。"</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"スワイプでホームに戻る"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"画面を下から上にスワイプします。この操作でいつでもホーム画面に戻れます。"</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"画面の下端から上にスワイプしてください。"</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"指を離す前にウィンドウをもう少し長押ししてみましょう。"</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"まっすぐ上にスワイプしてから、いったん指を止めてください。"</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"主な操作方法を覚えました。操作を OFF にするには、設定に移動してください。"</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"「アプリを切り替える」操作を完了しました。"</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"スワイプでアプリを切り替え"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"画面を下から上にスワイプして長押しし、指を離します。"</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"設定完了"</string>
@@ -88,14 +78,10 @@
<string name="gesture_tutorial_try_again" msgid="65962545858556697">"再試行"</string>
<string name="gesture_tutorial_nice" msgid="2936275692616928280">"成功"</string>
<string name="gesture_tutorial_step" msgid="1279786122817620968">"チュートリアル <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
- <!-- no translation found for allset_title (5021126669778966707) -->
- <skip />
- <!-- no translation found for allset_hint (459504134589971527) -->
- <skip />
- <!-- no translation found for allset_description (6350320429953234580) -->
- <skip />
- <!-- no translation found for allset_navigation_settings (417773244979225071) -->
- <skip />
+ <string name="allset_title" msgid="5021126669778966707">"設定完了"</string>
+ <string name="allset_hint" msgid="459504134589971527">"ホームに移動するには上にスワイプします"</string>
+ <string name="allset_description" msgid="6350320429953234580">"スマートフォンを使い始めることができます"</string>
+ <string name="allset_navigation_settings" msgid="417773244979225071"><annotation id="link">"ユーザー補助の操作設定"</annotation></string>
<string name="action_share" msgid="2648470652637092375">"共有"</string>
<string name="action_screenshot" msgid="8171125848358142917">"スクリーンショット"</string>
<string name="blocked_by_policy" msgid="2071401072261365546">"この操作はアプリまたは組織で許可されていません"</string>
diff --git a/quickstep/res/values-ka/strings.xml b/quickstep/res/values-ka/strings.xml
index afb5ebe..ea2e4d1 100644
--- a/quickstep/res/values-ka/strings.xml
+++ b/quickstep/res/values-ka/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"ნაწინასწარმეტყველები აპი: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"არ გადაფურცლოთ მარცხენა კიდის ბოლოდან."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"გადაფურცლეთ მარცხენა კიდიდან ეკრანის ცენტრისკენ და თითი აუშვით."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"მშვენიერია! ახლა უკან დასაბრუნებლად გადაფურცლეთ მარჯვნიდან"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"ასევე, შეგიძლიათ, დაბრუნდეთ ბოლო ეკრანზე მარჯვენა კიდიდან ეკრანის შუისკენ გადაფურცვლით."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"არ გადაფურცლოთ მარჯვენა კიდის ბოლოდან."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"გადაფურცლეთ მარჯვენა კიდიდან ეკრანის ცენტრისკენ და თითი აუშვით."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"თქვენ შეასრულეთ უკან დაბრუნების ჟესტი. ახლა კი შევიტყოთ, როგორ გადავრთოთ აპები."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"თქვენ შეასრულეთ უკან დაბრუნების ჟესტი."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"არ გადაფურცლოთ ეკრანის ბოლოსთან ახლოს."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"დაბრუნების ჟესტის მგრძნობელობის შესაცვლელად გადადით პარამეტრებზე"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"უკან დასაბრუნებლად გადაფურცლეთ მარცხნიდან"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"ბოლო ნანახ ეკრანზე დასაბრუნებლად გადაფურცლეთ მარცხენა კიდიდან ეკრანის ცენტრისკენ."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"გადაფურცლეთ ეკრანის ქვედა კიდიდან ზემოთ."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"არ დააპაუზოთ თითის აშვებამდე."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"გადაფურცლეთ ზემოთ."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"თქვენ შეასრულეთ მთავარ ეკრანზე დაბრუნების ჟესტი. ახლა კი შევიტყოთ, თუ როგორ დავბრუნდეთ უკან."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"თქვენ შეასრულეთ მთავარ ეკრანზე დაბრუნების ჟესტი."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"მთავარ გვერდზე გადასასვლელად გადაფურცლეთ"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"გადაფურცლეთ ეკრანის ქვედა კიდიდან ზემოთ. ამ ჟესტს ყოველთვის მთავარი გვერდის ეკრანზე გადაყავხართ."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"გადაფურცლეთ ეკრანის ქვედა კიდიდან ზემოთ."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"უფრო ხანგრძლივად დააჭირეთ თითი ფანჯარას, რომ არ დაიხუროს."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"გადაფურცლეთ პირდაპირ ზემოთ და შემდეგ დააპაუზეთ."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"თქვენ ისწავლეთ ჟესტების გამოყენება. ჟესტების გამოსართავად გადადით პარამეტრებში."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"თქვენ შეასრულეთ აპების გადართვის ჟესტი."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"აპების გადასართავად გადაფურცლეთ"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"გადაფურცლეთ ეკრანის ქვედა კიდიდან ზემოთ, დააყოვნეთ, შემდეგ თითი აუშვით."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"მზად არის"</string>
diff --git a/quickstep/res/values-kk/strings.xml b/quickstep/res/values-kk/strings.xml
index 4f32e05..6515840 100644
--- a/quickstep/res/values-kk/strings.xml
+++ b/quickstep/res/values-kk/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Болжалды қолданба: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Сол жақтағы ең шеткі нүктеден бастап сырғытыңыз."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Экранның сол жақ шетінен ортасына қарай сырғытыңыз да, жіберіңіз."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Жақсы! Енді артқа қайту үшін оң жақтан сырғытыңыз"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Экранның оң жақ шетінен ортасына қарай сырғыту арқылы соңғы ашылған экранға орала аласыз."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Оң жақтағы ең шеткі нүктеден бастап сырғытыңыз."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Экранның оң жақ шетінен ортасына қарай сырғытыңыз да, жіберіңіз."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Артқа қайту қимылын аяқтадыңыз. Енді қолданбаларды ауыстыруды үйреніңіз."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Артқа қайту қимылын аяқтадыңыз."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Саусағыңызбен сырғыту кезінде экранның төменгі жағына тым жақындамаңыз."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Артқа қайту қимылы сезгіштігін параметрлерден өзгертіңіз."</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Артқа қайту үшін сол жақтан сырғытыңыз"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Соңғы ашылған экранға оралу үшін экранның сол жақ шетінен ортасына қарай сырғытыңыз."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Экранның төменгі шетінен жоғары қарай сырғытыңыз."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Жіберер алдында кідіріс жасамаңыз."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Тігінен жоғары қарай сырғытыңыз."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Негізгі экранға қайту қимылын аяқтадыңыз. Енді артқа қайтуды үйреніңіз."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Негізгі экранға қайту қимылын аяқтадыңыз."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Негізгі экранға өту үшін сырғытыңыз"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Экранның төменгі жағынан жоғары қарай сырғытыңыз. Сонда негізгі экран ашылады."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Экранның төменгі шетінен жоғары қарай сырғытыңыз."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Жіберер алдында терезені ұзағырақ ұстап тұруға тырысыңыз."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Тігінен жоғары қарай сырғытыңыз да, кідіріңіз."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Қимылдарды қолдануды үйрендіңіз. Қимылдарды өшіру үшін \"Параметрлер\" бөліміне өтіңіз."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Қолданбаларды ауыстыру қимылын аяқтадыңыз."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Қолданбаларды ауыстыру үшін сырғытыңыз"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Экранның төменгі жағынан жоғары қарай сырғытып, ұстап тұрыңыз да, жіберіңіз."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Бәрі дайын"</string>
diff --git a/quickstep/res/values-km/strings.xml b/quickstep/res/values-km/strings.xml
index 1acf607..5185c4c 100644
--- a/quickstep/res/values-km/strings.xml
+++ b/quickstep/res/values-km/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"កម្មវិធីដែលបានព្យាករ៖ <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"ត្រូវប្រាកដថាអ្នកអូសពីចុងគែមខាងឆ្វេង។"</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"ត្រូវប្រាកដថាអ្នកអូសពីគែមខាងឆ្វេងទៅផ្នែកកណ្ដាលនៃអេក្រង់ រួចដកដៃ។"</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"ល្អ! ឥឡូវនេះ សូមអូសពីខាងស្ដាំដើម្បីថយក្រោយ"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"អ្នកក៏អាចត្រឡប់ទៅអេក្រង់ចុងក្រោយបានផងដែរ ដោយអូសពីគែមខាងស្ដាំទៅផ្នែកកណ្ដាលនៃអេក្រង់។"</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"ត្រូវប្រាកដថាអ្នកអូសពីចុងគែមខាងស្ដាំ។"</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"ត្រូវប្រាកដថាអ្នកអូសពីគែមខាងស្ដាំទៅផ្នែកកណ្ដាលនៃអេក្រង់ រួចដកដៃ។"</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"អ្នកបានបញ្ចប់ចលនាថយក្រោយហើយ។ បន្ទាប់មកទៀត សូមស្វែងយល់ពីរបៀបប្ដូរកម្មវិធី។"</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"អ្នកបានបញ្ចប់ចលនាថយក្រោយហើយ។"</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"ត្រូវប្រាកដថាអ្នកមិនអូសទៅជិតផ្នែកខាងក្រោមនៃអេក្រង់ពេក។"</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"ដើម្បីប្ដូរកម្រិតរំញោចនឹងចលនាថយក្រោយ សូមចូលទៅកាន់ការកំណត់"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"អូសពីឆ្វេងដើម្បីថយក្រោយ"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"ដើម្បីត្រឡប់ទៅអេក្រង់ចុងក្រោយដែលអ្នកបានចូល សូមអូសពីគែមខាងឆ្វេងទៅផ្នែកកណ្ដាលនៃអេក្រង់។"</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"ត្រូវប្រាកដថាអ្នកអូសឡើងលើពីគែមខាងក្រោមនៃអេក្រង់។"</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"ត្រូវប្រាកដថាអ្នកមិនផ្អាក មុនពេលដកដៃ។"</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"ត្រូវប្រាកដថាអ្នកអូសត្រង់ឡើងលើ។"</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"អ្នកបានបញ្ចប់ចលនាចូលទៅកាន់ទំព័រដើមហើយ។ បន្ទាប់មកទៀត សូមស្វែងយល់ពីរបៀបថយក្រោយ។"</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"អ្នកបានបញ្ចប់ចលនាចូលទៅកាន់ទំព័រដើមហើយ។"</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"អូសដើម្បីចូលទៅកាន់អេក្រង់ដើម"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"អូសឡើងលើពីផ្នែកខាងក្រោមនៃអេក្រង់របស់អ្នក។ ចលនានេះនាំអ្នកទៅអេក្រង់ដើមជានិច្ច។"</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"ត្រូវប្រាកដថាអ្នកអូសឡើងលើពីគែមខាងក្រោមនៃអេក្រង់។"</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"សាកល្បងសង្កត់វិនដូឱ្យបានយូរជាងនេះ មុនពេលដកដៃ។"</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"ត្រូវប្រាកដថាអ្នកអូសត្រង់ឡើងលើ រួចផ្អាក។"</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"អ្នកបានស្វែងយល់អំពីរបៀបប្រើចលនាហើយ។ ដើម្បីបិទចលនា សូមចូលទៅកាន់ការកំណត់។"</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"អ្នកបានបញ្ចប់ចលនាប្ដូរកម្មវិធីហើយ។"</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"អូសដើម្បីប្ដូរកម្មវិធី"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"អូសឡើងលើពីផ្នែកខាងក្រោមនៃអេក្រង់របស់អ្នក រួចសង្កត់ឱ្យជាប់ បន្ទាប់មកដកដៃចេញ។"</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"រួចហើយ"</string>
diff --git a/quickstep/res/values-ko/strings.xml b/quickstep/res/values-ko/strings.xml
index f5e9147..fb35a53 100644
--- a/quickstep/res/values-ko/strings.xml
+++ b/quickstep/res/values-ko/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"예상 앱: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"왼쪽 가장자리 끝에서 스와이프하세요."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"왼쪽 가장자리에서 화면 중앙으로 스와이프한 후 손가락을 떼세요."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"잘하셨습니다. 이제 오른쪽에서 스와이프하여 뒤로 돌아가세요"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"오른쪽 가장자리에서 화면 중앙으로 스와이프하여 마지막 화면으로 돌아갈 수도 있습니다"</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"오른쪽 가장자리 끝에서 스와이프하세요."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"오른쪽 가장자리에서 화면 중앙으로 스와이프한 후 손가락을 떼세요."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"돌아가기 동작을 완료했습니다. 이번에는 앱 전환 방법을 알아보겠습니다."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"돌아가기 동작을 완료했습니다."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"화면 하단에 지나치게 가까운 곳에서 스와이프하면 안 됩니다."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"돌아가기 동작의 민감도를 변경하려면 설정으로 이동하세요"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"왼쪽에서 스와이프하여 뒤로 돌아가세요"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"마지막 화면으로 돌아가려면 왼쪽 가장자리에서 화면 중앙으로 스와이프하세요"</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"화면 하단 가장자리에서 위로 스와이프하세요."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"손가락을 떼기 전에 멈추지 않아야 합니다."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"위로 똑바르게 스와이프하세요."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"홈으로 이동 동작을 완료했습니다. 이번에는 뒤로 돌아가는 방법을 알아보겠습니다."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"홈으로 이동 동작을 완료했습니다."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"스와이프하여 홈으로 이동"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"화면 하단에서 위로 스와이프합니다. 이 동작을 사용하면 언제든지 홈 화면으로 이동할 수 있습니다"</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"화면 하단 가장자리에서 위로 스와이프하세요."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"창을 더 오래 누르고 있다가 손가락을 떼 보세요."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"위로 똑바르게 스와이프한 후 잠깐 멈추세요."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"동작 사용 방법을 알아봤습니다. 동작을 사용 중지하려면 설정으로 이동하세요."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"앱 전환 동작을 완료했습니다."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"스와이프로 앱 전환"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"화면 하단에서 위로 스와이프하고 잠시 멈춘 다음 손가락을 떼세요"</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"설정 완료"</string>
diff --git a/quickstep/res/values-ky/strings.xml b/quickstep/res/values-ky/strings.xml
index d0ed6de..6f63146 100644
--- a/quickstep/res/values-ky/strings.xml
+++ b/quickstep/res/values-ky/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Божомолдонгон колдонмо: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Экранды эң четинен солдон оңго карай сүрүңүз."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Экранды сол жагынан ортосуна карай сүрүп, манжаңызды алыңыз."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Сонун! Артка кайтуу үчүн экрандын оң четинен сүрүп коюңуз"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Акыркы экранга кайтуу үчүн экранды оң жагынан ортосуна карай сүрүңүз."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Экранды эң четинен оңдой солго карай сүрүңүз."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Экранды оң жагынан ортосуна карай сүрүп, манжаңызды алыңыз."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"\"Артка\" жаңсоосу боюнча үйрөткүчтү бүтүрдүңүз. Эми колдонмолорду которуштурганды үйрөнүп алыңыз."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"\"Артка\" жаңсоосу боюнча үйрөткүчтү бүтүрдүңүз."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Манжаңызды экрандын ылдый жагына өтө жакындатпай сүрүңүз."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"\"Артка\" жаң-нун сезгичтигин өзгөртүү үчүн Жөндөөлөргө өтүңүз"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Артка кайтуу үчүн экраныңыздын сол четинен сүрүп коюңуз"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Акыркы экранга кайтуу үчүн экранды сол жагынан ортосуна карай сүрүңүз."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Экранды ылдыйдан өйдө карай сүрүңүз."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Манжаңызды алганга чейин токтотпоңуз."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Экранды өйдө карай сүрүңүз."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"\"Башкы бетке өтүү\" жаңсоосу боюнча үйрөткүчтү бүтүрдүңүз. Эми артка кайтууну үйрөнүп алыңыз."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"\"Башкы бетке өтүү\" жаңсоосу боюнча үйрөткүчтү бүтүрдүңүз."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Башкы бетке өтүү үчүн сүрүп коюңуз"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Экранды ылдый жагынан өйдө карай сүрүңүз. Бул жаңсоо сизди ар дайым Башкы экранга алып барат."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Экранды ылдыйдан өйдө карай сүрүңүз."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Манжаңызды алуудан мурун экранда узагыраак кармаңыз."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Экранды өйдө карай сүрүп, токтоп туруңуз."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Жаңсоолорду колдонгонду үйрөндүңүз. Жаңсоолорду өчүрүү үчүн Жөндөөлөргө өтүңүз."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"\"Колдонмолорду которуштуруу\" жаңсоосу боюнча үйрөткүчтү бүтүрдүңүз."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Колдонмолорду которуштуруу үчүн сүрүңүз"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Экранды ылдыйдан өйдө карай сүрүп, бир аз коё бербей кармап туруңуз."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Дапдаяр!"</string>
diff --git a/quickstep/res/values-lo/strings.xml b/quickstep/res/values-lo/strings.xml
index 9b175ad..7b2ed2e 100644
--- a/quickstep/res/values-lo/strings.xml
+++ b/quickstep/res/values-lo/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"ແອັບທີ່ຄາດເດົາໄວ້: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"ກະລຸນາກວດສອບວ່າທ່ານປັດຈາກຂອບຊ້າຍສຸດ."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"ກະລຸນາກວດສອບວ່າທ່ານປັດຈາກຂອບຊ້າຍໄປຫາທາງກາງຂອງຈໍແລ້ວປ່ອຍ."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"ດີ! ຕອນນີ້ໃຫ້ປັດຈາກຂວາເພື່ອກັບຄືນ"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"ທ່ານສາມາດກັບໄປຫາໜ້າຈໍຫຼ້າສຸດໄດ້ໂດຍການປັດຈາກຂອບຂວາໄປຫາກາງຈໍ."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"ກະລຸນາກວດສອບວ່າທ່ານປັດຈາກຂອບຂວາສຸດ."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"ກະລຸນາກວດສອບວ່າທ່ານປັດຈາກຂອບຂວາໄປຫາທາງກາງຂອງຈໍແລ້ວປ່ອຍ."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"ທ່ານໃຊ້ທ່າທາງກັບຄືນສຳເລັດແລ້ວ. ຕໍ່ໄປ, ມາສຶກສາວິທີສະຫຼັບແອັບ."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"ທ່ານໃຊ້ທ່າທາງກັບຄືນສຳເລັດແລ້ວ."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"ກະລຸນາກວດສອບວ່າທ່ານບໍ່ໄດ້ປັດໃກ້ກັບທາງລຸ່ມຂອງໜ້າຈໍເກີນໄປ."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"ເພື່ອປ່ຽນຄວາມລະອຽດອ່ອນຂອງທ່າທາງກັບຄືນ, ໃຫ້ໄປຫາການຕັ້ງຄ່າ"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"ປັດຈາກຊ້າຍເພື່ອກັບຄືນ"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"ເພື່ອກັບຄືນໄປໜ້າຈໍຫຼ້າສຸດທີ່ທ່ານໃຊ້, ໃຫ້ປັດຈາກຂອບຊ້າຍໄປຫາກາງຈໍ."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"ກະລຸນາກວດສອບວ່າທ່ານປັດຂຶ້ນຈາກຂອບລຸ່ມສຸດຂອງໜ້າຈໍ."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"ກະລຸນາກວດສອບວ່າທ່ານບໍ່ຢຸດຊົ່ວຄາວກ່ອນປ່ອຍນິ້ວ."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"ກະລຸນາກວດສອບວ່າທ່ານປັດຂຶ້ນໄປຊື່ໆ."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"ທ່ານໃຊ້ທ່າທາງໄປໜ້າຫຼັກສຳເລັດແລ້ວ. ຕໍ່ໄປ, ມາສຶກສາວິທີກັບຄືນ."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"ທ່ານໃຊ້ທ່າທາງໄປໜ້າຫຼັກສຳເລັດແລ້ວ."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"ປັດເພື່ອໄປໜ້າຫຼັກ"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"ປັດຂຶ້ນມາຈາກລຸ່ມສຸດຂອງໜ້າຈໍທ່ານ. ທ່າທາງນີ້ຈະພາທ່ານໄປໂຮມສະກຣີນສະເໝີ."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"ກະລຸນາກວດສອບວ່າທ່ານປັດຂຶ້ນຈາກຂອບລຸ່ມສຸດຂອງໜ້າຈໍ."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"ລອງກົດໃສ່ໜ້າຈໍຄ້າງໄວ້ດົນຂຶ້ນກ່ອນປ່ອຍນິ້ວ."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"ກະລຸນາກວດສອບວ່າທ່ານປັດຂຶ້ນຊື່ໆ, ຈາກນັ້ນຢຸດຊົ່ວຄາວ."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"ທ່ານໄດ້ສຶກສາວິທີໃຊ້ທ່າທາງແລ້ວ. ເພື່ອປິດທ່າທາງຕ່າງໆ, ໃຫ້ເຂົ້າໄປຫາການຕັ້ງຄ່າ."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"ທ່ານໃຊ້ທ່າທາງສະຫຼັບແອັບສຳເລັດແລ້ວ."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"ປັດເພື່ອສະຫຼັບແອັບ"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"ປັດຂຶ້ນຈາກລຸ່ມສຸດຂອງໜ້າຈໍທ່ານ, ຈາກນັ້ນປ່ອຍ."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"ທຸກຢ່າງພ້ອມແລ້ວ"</string>
diff --git a/quickstep/res/values-lt/strings.xml b/quickstep/res/values-lt/strings.xml
index 8604a6a..bebefbb 100644
--- a/quickstep/res/values-lt/strings.xml
+++ b/quickstep/res/values-lt/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Numatoma programa: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Turite perbraukti nuo kairiojo krašto."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Turite perbraukti nuo kairiojo krašto link ekrano vidurio ir pakelti pirštą."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Šaunu! Dabar perbraukite iš dešinės, kad grįžtumėte"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Į ankstesnį ekraną taip pat galite grįžti, perbraukdami nuo dešiniojo krašto link ekrano vidurio."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Turite perbraukti nuo dešiniojo krašto."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Turite perbraukti nuo dešiniojo krašto link ekrano vidurio ir pakelti pirštą."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Atlikote grįžimo atgal gestą. Toliau sužinosite, kaip perjungti programas."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Atlikote grįžimo atgal gestą."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Nebraukite per arti ekrano apačios."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Norėd. pak. grįžimo gesto jautr., eikite į sk. „Nustatymai“"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Perbraukite iš kairės, kad grįžtumėte"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Norėdami grįžti į ankstesnį ekraną, kuriame lankėtės, perbraukite nuo kairiojo krašto link ekrano vidurio."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Turite perbraukti aukštyn nuo apatinio ekrano krašto."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Nepristabdykite prieš pakeldami pirštą."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Turite tiesiai perbraukti aukštyn."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Atlikote perėjimo į pagrindinį ekraną gestą. Toliau sužinosite, kaip grįžti atgal."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Atlikote perėjimo į pagrindinį ekraną gestą."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Perbraukite, kad pereitumėte į pagrindinį ekraną"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Perbraukite aukštyn nuo ekrano apačios. Atlikus šį gestą, visada nukreipiama į pagrindinį ekraną."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Turite perbraukti aukštyn nuo apatinio ekrano krašto."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Pabandykite palaikyti langą ilgiau prieš pakeldami pirštą."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Turite tiesiai perbraukti aukštyn, o tada pristabdyti."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"išmokote naudotis gestais. Gestus galite išjungti nustatymuose."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Atlikote programų perjungimo gestą."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Perbraukite, kad perjungtumėte programas"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Perbraukite aukštyn nuo ekrano apačios, palaikykite ir paleiskite."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Viskas nustatyta"</string>
diff --git a/quickstep/res/values-lv/strings.xml b/quickstep/res/values-lv/strings.xml
index b6cadc6..97a8197 100644
--- a/quickstep/res/values-lv/strings.xml
+++ b/quickstep/res/values-lv/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Prognozētā lietotne: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Jāvelk no pašas kreisās malas."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Jāvelk no ekrāna kreisās malas uz vidu un jāatlaiž."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Lieliski! Tagad velciet no labās puses, lai pārietu atpakaļ"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Varat arī pāriet atpakaļ uz pēdējo ekrānu, velkot no labās malas uz ekrāna vidu."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Jāvelk no pašas labās malas."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Jāvelk no ekrāna labās malas uz vidu un jāatlaiž."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Jūs sekmīgi veicāt atgriešanās žestu. Tagad varat iemācīties, kā pārslēgt lietotnes."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Jūs sekmīgi veicāt atgriešanās žestu."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Nevelciet pārāk tuvu ekrāna apakšdaļai."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Atgriešanās žesta jutīguma līmeni varat mainīt iestatījumos."</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Lai pārietu atpakaļ, velciet no kreisās malas."</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Lai pārietu atpakaļ uz pēdējo izmantoto ekrānu, velciet no kreisās malas uz ekrāna vidu."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Jāvelk augšup no ekrāna apakšmalas."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Pirms atlaišanas nepārtrauciet kustību."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Jāvelk tieši uz augšu."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Jūs sekmīgi veicāt sākuma ekrāna atvēršanas žestu. Tagad varat iemācīties, kā pāriet atpakaļ."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Jūs sekmīgi veicāt sākuma ekrāna atvēršanas žestu."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Vilkšana, lai pārietu uz sākumu"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Velciet augšup no ekrāna apakšdaļas. Ar šo žestu vienmēr varat atvērt sākuma ekrānu."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Jāvelk augšup no ekrāna apakšmalas."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Mēģiniet ilgāk turēt logu, pirms atlaižat."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Jāvelk tieši uz augšu un pēc tam jāaptur kustība."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Jūs esat apguvis žestu izmantošanu. Lai izslēgtu žestus, pārejiet uz sadaļu Iestatījumi."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Jūs sekmīgi veicāt lietotņu pārslēgšanas žestu."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Vilkšana, lai pārslēgtu lietotnes"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Velciet augšup no ekrāna apakšdaļas, turiet un pēc tam atlaidiet."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Gatavs"</string>
diff --git a/quickstep/res/values-mk/strings.xml b/quickstep/res/values-mk/strings.xml
index fd235f9..e21f45c 100644
--- a/quickstep/res/values-mk/strings.xml
+++ b/quickstep/res/values-mk/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Предвидена апликација: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Повлечете од подалечниот лев агол."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Повлечете од левиот раб кон средината на екранот и пуштете."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Одлично! Сега повлечете оддесно за да се вратите назад"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Може да се вратите на последниот екран и со повлекување од десниот раб кон средината на екранот."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Повлечете од подалечниот десен агол."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Повлечете од десниот раб кон средината на екранот и пуштете."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Завршивте со упатството за враќање назад. Следно, дознајте како да се префрлате помеѓу апликации."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Завршивте со упатството за враќање назад."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Не повлекувајте преблиску до долниот раб на екранот."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"За да ја промените чувствителноста, одете во „Поставки“"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Повлечете одлево за да се вратите назад"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"За да се вратите на последниот екран на кој бевте, повлечете од левиот раб кон средината на екранот."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Повлечете нагоре од долниот раб на екранот."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Не правете пауза пред да пуштите."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Повлечете право нагоре."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Завршивте со упатството за почетната страница. Следно, дознајте како да се вратите назад."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Завршивте со упатството за почетната страница."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Повлечете за да одите на почетната страница"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Повлечете нагоре од долниот раб на екранот. Ова движење секогаш ќе ве одведе на почетниот екран."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Повлечете нагоре од долниот раб на екранот."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Задржете го прозорецот подолго пред да го пуштите."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Повлечете право нагоре, а потоа застанете."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Дознавте како се користат движењата. За да ги исклучите движењата, одете во „Поставки“."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Завршивте со упатството за префрлање помеѓу апликации."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Повлечете за префрлање помеѓу апликации"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Повлечете нагоре од дното на екранот и задржете, па пуштете."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Готово"</string>
diff --git a/quickstep/res/values-mn/strings.xml b/quickstep/res/values-mn/strings.xml
index 0c8c597..ea3a220 100644
--- a/quickstep/res/values-mn/strings.xml
+++ b/quickstep/res/values-mn/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Таамаглаж буй апп: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Та зүүн захын булангаас шударна уу."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Та дэлгэцийн зүүн булангаас дунд хэсэг хүртэл шударч, суллаарай."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Янзтай! Одоо буцахын тулд баруун талаас шударна уу"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Та мөн дэлгэцийн баруун булангаас дунд хэсэг рүү шударснаар сүүлийн дэлгэц рүү буцах боломжтой."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Та баруун захын булангаас шударна уу."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Та дэлгэцийн баруун булангаас дунд хэсэг хүртэл шударч, суллаарай."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Та буцах зангааг гүйцэтгэлээ. Дараа нь аппуудыг хэрхэн сэлгэх талаар мэдэж авна уу."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Та буцах зангааг гүйцэтгэлээ."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Та дэлгэцийн доод хэсэгтэй хэт ойр бүү шудраарай."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Буцах зангааны мэдрэгшлийг өөрчлөх бол Тохиргоо руу очно уу"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Буцахын тулд зүүн талаас шударна уу"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Та байсан сүүлийн дэлгэц рүүгээ буцахын тулд дэлгэцийн баруун булангаас дунд хэсэг рүү шударна уу"</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Та дэлгэцийн доод булангаас дээш шударна уу."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Та суллахаасаа өмнө түр зогсоож болохгүй."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Та чигээрээ шударна уу."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Та Нүүр лүү очих зангааг гүйцэтгэлээ. Дараа нь хэрхэн буцахыг мэдэж авна уу."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Та Нүүр лүү очих зангааг гүйцэтгэлээ."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Нүүр лүү очихын тулд шудрах"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Дэлгэцийнхээ доороос дээш шударна уу. Энэ зангаа таныг тогтмол Үндсэн нүүрэнд аваачна."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Та дэлгэцийн доод булангаас дээш шударна уу."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Суллахаасаа өмнө цонхыг илүү удаан дарж үзнэ үү."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Та чигээрээ шударч, дараа нь түр зогсооно уу."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Та зангааг хэрхэн ашиглахыг мэдэж авлаа. Зангааг унтраахын тулд Тохиргоо руу очно уу."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Та аппуудыг сэлгэх зангааг гүйцэтгэлээ."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Аппуудыг сэлгэхийн тулд шудрах"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Дэлгэцийнхээ доод хэсгээс дээш шударч, удаан дараад суллана уу."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Бүгдийг тохируулсан"</string>
diff --git a/quickstep/res/values-mr/strings.xml b/quickstep/res/values-mr/strings.xml
index 77173b7..bb1f890 100644
--- a/quickstep/res/values-mr/strings.xml
+++ b/quickstep/res/values-mr/strings.xml
@@ -88,14 +88,10 @@
<string name="gesture_tutorial_try_again" msgid="65962545858556697">"पुन्हा प्रयत्न करा"</string>
<string name="gesture_tutorial_nice" msgid="2936275692616928280">"छान!"</string>
<string name="gesture_tutorial_step" msgid="1279786122817620968">"ट्युटोरियल <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
- <!-- no translation found for allset_title (5021126669778966707) -->
- <skip />
- <!-- no translation found for allset_hint (459504134589971527) -->
- <skip />
- <!-- no translation found for allset_description (6350320429953234580) -->
- <skip />
- <!-- no translation found for allset_navigation_settings (417773244979225071) -->
- <skip />
+ <string name="allset_title" msgid="5021126669778966707">"सर्व तयार आहे!"</string>
+ <string name="allset_hint" msgid="459504134589971527">"होमवर जाण्यासाठी वरती स्वाइप करा"</string>
+ <string name="allset_description" msgid="6350320429953234580">"तुम्ही तुमचा फोन वापरण्यास सुरुवात करू शकता"</string>
+ <string name="allset_navigation_settings" msgid="417773244979225071"><annotation id="link">"अॅक्सेसिबिलिटीसाठी नेव्हिगेशन सेटिंग्ज"</annotation></string>
<string name="action_share" msgid="2648470652637092375">"शेअर करा"</string>
<string name="action_screenshot" msgid="8171125848358142917">"स्क्रीनशॉट"</string>
<string name="blocked_by_policy" msgid="2071401072261365546">"अॅप किंवा तुमच्या संस्थेद्वारे ही क्रिया करण्याची अनुमती नाही"</string>
diff --git a/quickstep/res/values-my/strings.xml b/quickstep/res/values-my/strings.xml
index 8693fb1..44d0962 100644
--- a/quickstep/res/values-my/strings.xml
+++ b/quickstep/res/values-my/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"ကြိုတင်မှန်းဆထားသော အက်ပ်− <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"ဘယ်ဘက်အစွန် ခပ်လှမ်းလှမ်းမှ ပွတ်ဆွဲကြောင်း သေချာပါစေ။"</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"ဘယ်ဘက်အစွန်မှ ဖန်သားပြင်အလယ်သို့ ပွတ်ဆွဲပြီး လွှတ်လိုက်ကြောင်း သေချာပါစေ။"</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"ကောင်းသည်။ နောက်သို့ပြန်သွားရန် ညာဘက်မှ ပွတ်ဆွဲပါ"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"ဖန်သားပြင်၏ညာအစွန်းမှ အလယ်သို့ပွတ်ဆွဲ၍ ပြီးခဲ့သောဖန်သားပြင်သို့လည်း ပြန်သွားနိုင်သည်။"</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"ညာဘက်အစွန် ခပ်လှမ်းလှမ်းမှ ပွတ်ဆွဲကြောင်း သေချာပါစေ။"</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"ညာဘက်အစွန်မှ ဖန်သားပြင်အလယ်သို့ ပွတ်ဆွဲပြီး လွှတ်လိုက်ကြောင်း သေချာပါစေ။"</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"နောက်ဆုတ်လက်ဟန် ရှင်းလင်းပို့ချချက် ပြီးပါပြီ။ နောက်အဆင့်တွင် အက်ပ်များပြောင်းနည်းကို လေ့လာပါ။"</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"နောက်ဆုတ်လက်ဟန် ရှင်းလင်းပို့ချချက် ပြီးပါပြီ။"</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"ဖန်သားပြင် အောက်ခြေနှင့် အလွန်နီးကပ်စွာ ပွတ်ဆွဲခြင်းမရှိကြောင်း သေချာပါစေ။"</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"နောက်ဆုတ်လက်ဟန်၏ အာရုံခံစွမ်းကိုပြောင်းရန် ‘ဆက်တင်များ’ သို့ သွားပါ"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"နောက်သို့ပြန်သွားရန် ဘယ်ဘက်မှ ပွတ်ဆွဲပါ"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"သင်ရှိခဲ့သည့် ပြီးခဲ့သောဖန်သားပြင်သို့ ပြန်သွားရန် ဖန်သားပြင်၏ဘယ်အစွန်းမှ အလယ်သို့ပွတ်ဆွဲပါ။"</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"ဖန်သားပြင် အောက်ခြေအစွန်မှ အပေါ်သို့ ပွတ်ဆွဲကြောင်း သေချာပါစေ။"</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"လက်မလွှတ်ခင် ခဏရပ်ခြင်းမရှိကြောင်း သေချာပါစေ။"</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"အပေါ်တည့်တည့်သို့ ပွတ်ဆွဲကြောင်း သေချာပါစေ။"</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"ပင်မစာမျက်နှာသို့သွားသည့် လက်ဟန် ရှင်းလင်းပို့ချချက် ပြီးပါပြီ။ နောက်အဆင့်တွင် နောက်သို့ပြန်သွားနည်းကို လေ့လာပါ။"</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"ပင်မစာမျက်နှာသို့သွားသည့် လက်ဟန် ရှင်းလင်းပို့ချချက် ပြီးပါပြီ။"</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"ပင်မစာမျက်နှာသို့သွားရန် ပွတ်ဆွဲပါ"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"သင့်ဖန်သားပြင် အောက်ခြေမှ အပေါ်သို့ပွတ်ဆွဲပါ။ ဤလက်ဟန်ဖြင့် ပင်မစာမျက်နှာသို့ အမြဲပြန်သွားနိုင်သည်။"</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"ဖန်သားပြင် အောက်ခြေအစွန်မှ အပေါ်သို့ ပွတ်ဆွဲကြောင်း သေချာပါစေ။"</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"မလွှတ်ခင် ဝင်းဒိုးကို အချိန်ကြာကြာ ဖိထားကြည့်ပါ။"</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"အပေါ်တည့်တည့်သို့ ပွတ်ဆွဲပြီးနောက် ခဏရပ်ကြောင်း သေချာပါစေ။"</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"လက်ဟန်များသုံးနည်းကို သင်သိသွားပါပြီ။ လက်ဟန်များကို ပိတ်ရန် ‘ဆက်တင်များ’ သို့ သွားပါ။"</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"အက်ပ်များပြောင်းသည့် လက်ဟန် ရှင်းလင်းပို့ချချက် ပြီးပါပြီ။"</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"အက်ပ်များပြောင်းရန် ပွတ်ဆွဲပါ"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"သင့်ဖန်သားပြင် အောက်ခြေမှ အပေါ်သို့ ပွတ်ဆွဲပါ၊ ဖိထားပြီးနောက် လွှတ်လိုက်ပါ။"</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"အားလုံးအဆင်သင့်ဖြစ်ပါပြီ"</string>
diff --git a/quickstep/res/values-nb/strings.xml b/quickstep/res/values-nb/strings.xml
index 8dce6c0..42ba19f 100644
--- a/quickstep/res/values-nb/strings.xml
+++ b/quickstep/res/values-nb/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Foreslått app: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Sørg for at du sveiper fra kanten helt til venstre."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Sørg for at du sveiper fra den venstre kanten til midten av skjermen og slipper."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Bra! Sveip nå fra høyre for å gå tilbake"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Du kan også gå tilbake til forrige skjerm ved å sveipe fra høyre kant til midten av skjermen."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Sørg for at du sveiper fra kanten helt til høyre."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Sørg for at du sveiper fra den høyre kanten til midten av skjermen og slipper."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Du har fullført bevegelsen for å gå tilbake. I neste trinn lærer du hvordan du bytter app."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Du har fullført bevegelsen for å gå tilbake."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Sørg for at du ikke sveiper for nær bunnen av skjermen."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Gå til Innstillinger for å endre tilbakebevegelsefølsomheten"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Sveip fra venstre for å gå tilbake"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"For å gå tilbake til den forrige skjermen du var på, sveip fra venstre kant til midten av skjermen."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Sørg for at du sveiper opp fra den nederste kanten av skjermen."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Sørg for at du ikke setter på pause før du slipper."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Sørg for at du sveiper rett opp."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Du har fullført bevegelsen for å gå til startskjermen. I neste trinn ser du hvordan du går tilbake."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Du har fullført bevegelsen for å gå til startskjermen."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Sveip for å gå til startskjermen"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Sveip opp fra bunnen av skjermen. Denne bevegelsen tar deg alltid til startskjermen."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Sørg for at du sveiper opp fra den nederste kanten av skjermen."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Prøv å holde vinduet lenger før du slipper."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Sørg for at du sveiper rett opp, og så stopper du."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Du har lært hvordan du bruker bevegelser. For å slå av bevegelser, gå til Innstillinger."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Du har fullført bevegelsen for å bytte app."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Sveip for å bytte app"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Sveip opp fra bunnen av skjermen, hold og slipp."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Ferdig"</string>
diff --git a/quickstep/res/values-nl/strings.xml b/quickstep/res/values-nl/strings.xml
index 5426128..af043e1 100644
--- a/quickstep/res/values-nl/strings.xml
+++ b/quickstep/res/values-nl/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Voorspelde app: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Swipe helemaal vanaf de linkerrand."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Swipe vanaf de linkerrand naar het midden van het scherm en laat los."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Mooi! Swipe nu vanaf de rechterkant om terug te gaan."</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Je kunt ook teruggaan naar het laatste scherm door vanaf de rechterkant naar het midden van het scherm te swipen."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Swipe helemaal vanaf de rechterrand."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Swipe vanaf de rechterrand naar het midden van het scherm en laat los."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Je weet nu hoe je het gebaar Terug maakt. Ontdek als volgende hoe je tussen apps schakelt."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Je weet nu hoe je het gebaar Terug maakt."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Swipe niet te dicht bij de onderkant van het scherm."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Open Instellingen om de gevoeligheid van Terug te wijzigen"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Swipe vanaf de linkerkant om terug te gaan"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Swipe vanaf de linkerkant naar het midden van het scherm om terug te gaan naar het vorige scherm."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Swipe vanaf de onderrand van het scherm omhoog."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Pauzeer niet voordat je loslaat."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Swipe recht omhoog."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Je weet nu hoe je het gebaar Naar startscherm maakt. Ontdek als volgende hoe je kunt teruggaan."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Je weet nu hoe je het gebaar Naar startscherm maakt."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Swipe om naar het startscherm te gaan"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Swipe omhoog vanaf de onderkant van het scherm. Met dit gebaar ga je altijd naar het startscherm."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Swipe vanaf de onderrand van het scherm omhoog."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Houd het venster langer vast voordat je loslaat."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Swipe recht omhoog en pauzeer dan."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Je weet nu hoe je gebaren gebruikt. Als je gebaren wilt uitzetten, kun je dat via Instellingen doen."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Je weet nu hoe je het gebaar Schakelen tussen apps maakt."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Swipe om tussen apps te schakelen"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Swipe omhoog vanaf de onderkant van het scherm, houd vast en laat dan los."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Klaar"</string>
diff --git a/quickstep/res/values-pl/strings.xml b/quickstep/res/values-pl/strings.xml
index e76b357..6a8f188 100644
--- a/quickstep/res/values-pl/strings.xml
+++ b/quickstep/res/values-pl/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Przewidywana aplikacja: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Pamiętaj, aby przesuwać palcem od samej lewej krawędzi."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Pamiętaj, aby przesuwać palcem od lewej krawędzi do środka ekranu, a potem podnieść palec."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Super! A teraz przesuń palcem od prawej strony, by powrócić"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Możesz także wrócić do ostatniego ekranu, przesuwając palcem od prawej krawędzi do środka ekranu."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Pamiętaj, aby przesuwać palcem od samej prawej krawędzi."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Pamiętaj, aby przesuwać palcem od prawej krawędzi do środka ekranu, a potem podnieść palec."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Gest przejścia wstecz został opanowany. Poćwicz teraz przełączanie aplikacji."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Gest przejścia wstecz został opanowany."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Pamiętaj, aby nie przesuwać palcem zbyt blisko dolnej części ekranu."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Czułość gestu cofania możesz zmienić w Ustawieniach"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Aby wrócić, przesuń palcem od lewej strony"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Aby wrócić do ostatniego ekranu, przesuń palcem od lewej krawędzi do środka ekranu."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Pamiętaj, aby przesuwać palcem od dolnej krawędzi ekranu."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Pamiętaj, aby przed podniesieniem palca nie było przerwy."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Pamiętaj, aby przesuwać palcem prosto do góry."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Gest przechodzenia na ekran główny został opanowany. Poćwicz teraz przechodzenie na ekran główny."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Gest przechodzenia na ekran główny został opanowany."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Przesuwanie palcem, aby przejść na ekran główny"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Przesuń palcem z dołu ekranu. Ten gest zawsze powoduje przejście na ekran główny."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Pamiętaj, aby przesuwać palcem od dolnej krawędzi ekranu."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Przytrzymaj okno dłużej, zanim podniesiesz palec."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Pamiętaj, aby przesuwać palcem prosto do góry, a potem przerwać ruch."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Wiesz już, jak używać gestów. Aby wyłączyć gesty, przejdź do Ustawień."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Gest przełączania aplikacji został opanowany."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Przesuwanie palcem, aby przełączać aplikacje"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Przesuń palcem od dołu ekranu, przytrzymaj i puść."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Wszystko gotowe"</string>
diff --git a/quickstep/res/values-pt-rPT/strings.xml b/quickstep/res/values-pt-rPT/strings.xml
index f5dc80d..b553c4c 100644
--- a/quickstep/res/values-pt-rPT/strings.xml
+++ b/quickstep/res/values-pt-rPT/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"App prevista: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Garanta que desliza rapidamente com o dedo a partir da extremidade esquerda."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Garanta que desliza rapidamente com o dedo do limite esquerdo até ao centro do ecrã e solta."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Boa! Deslize rapidamente a partir da direita para retroceder"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Também pode voltar ao último ecrã ao deslizar rapidamente da direita para o centro do ecrã."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Garanta que desliza rapidamente com o dedo a partir da extremidade direita."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Garanta que desliza rapidamente com o dedo do limite direito até ao centro do ecrã e solta."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Concluiu o gesto para retroceder. A seguir, saiba como alternar entre apps."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Concluiu o gesto para retroceder."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Garanta que não desliza rapidamente com o dedo demasiado perto da parte inferior do ecrã."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Altere a sensibilidade do gesto para voltar nas Definições."</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Deslize rapidamente a partir da esquerda para retroceder"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Para voltar ao último ecrã, deslize rapidamente a partir do limite esquerdo para o centro do ecrã."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Garanta que desliza rapidamente com o dedo a partir do limite inferior do ecrã."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Garanta que não faz uma pausa antes de soltar."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Garanta que desliza rapidamente com o dedo para cima."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Concluiu o gesto para aceder à Página inicial. A seguir, saiba como retroceder."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Concluiu o gesto para aceder à Página inicial."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Deslize rapidamente com o dedo para aceder à Página inicial"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Deslize rapidamente para cima a partir da parte inferior. Este gesto abre sempre o ecrã principal."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Garanta que desliza rapidamente com o dedo a partir do limite inferior do ecrã."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Experimente premir a janela durante mais tempo antes de soltar."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Garanta que desliza rapidamente com o dedo para cima e, em seguida, faz uma pausa."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Aprendeu a utilizar gestos. Para desativar os gestos, aceda às Definições."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Concluiu o gesto para alternar entre apps."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Deslize rapidamente com o dedo para alternar entre apps"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Deslize rapidamente para cima a partir da parte inferior do ecrã sem soltar e, em seguida, solte."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Está tudo pronto"</string>
diff --git a/quickstep/res/values-pt/strings.xml b/quickstep/res/values-pt/strings.xml
index 55b7f52..3b3148f 100644
--- a/quickstep/res/values-pt/strings.xml
+++ b/quickstep/res/values-pt/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"App previsto: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Deslize da borda esquerda."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Deslize da borda esquerda até o meio da tela e solte."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Muito bem! Agora deslize da direita para voltar"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Para voltar à tela anterior, deslize da borda direita até o meio da tela."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Deslize da borda direita."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Deslize da borda direita até o meio da tela e solte."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Você concluiu o gesto para voltar. A seguir, aprenda a trocar de app."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Você concluiu o gesto para voltar."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Não deslize perto demais da parte inferior da tela."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Mude a sensibilidade do gesto de voltar nas configurações"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Deslize da esquerda para voltar"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Para voltar à tela anterior, deslize da borda esquerda até o meio da tela."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Deslize da borda inferior da tela para cima."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Não pare antes de soltar."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Deslize para cima."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Você concluiu o gesto para acessar a tela inicial. A seguir, aprenda a voltar."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Você concluiu o gesto para acessar a tela inicial."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Deslizar para voltar à tela inicial"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Deslize de baixo para cima na tela. Esse gesto sempre leva você para a tela inicial."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Deslize da borda inferior da tela para cima."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Mantenha a janela pressionada por mais tempo antes de soltar."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Deslize para cima e pare."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Você aprendeu a usar gestos. Para desativá-los, acesse as Configurações."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Você concluiu o gesto para trocar de app."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Deslizar para trocar de app"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Deslize de baixo para cima na tela, mantenha-a pressionada e depois solte."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Tudo pronto"</string>
diff --git a/quickstep/res/values-ro/strings.xml b/quickstep/res/values-ro/strings.xml
index b03ea41..11d23d1 100644
--- a/quickstep/res/values-ro/strings.xml
+++ b/quickstep/res/values-ro/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Aplicația estimată: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Glisați dinspre marginea stângă îndepărtată."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Glisați dinspre marginea stângă spre mijlocul ecranului și eliberați."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Bravo! Acum glisați dinspre dreapta pentru a reveni."</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Reveniți la ultimul ecran glisând de la marginea dreaptă spre mijlocul ecranului."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Glisați dinspre marginea dreaptă îndepărtată."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Glisați dinspre marginea dreaptă spre mijlocul ecranului și eliberați."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Ați finalizat gestul „înapoi”. În continuare, aflați cum să comutați între aplicații."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Ați finalizat gestul „înapoi”."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Nu glisați prea aproape de partea de jos a ecranului."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Schimbați sensibilitatea gestului „Înapoi” accesând Setările"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Glisați dinspre stânga pentru a reveni"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Pentru a reveni la ultimul ecran accesat, glisați de la marginea stângă spre mijlocul ecranului."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Glisați în sus dinspre marginea de jos a ecranului."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Nu întrerupeți gestul înainte de a elibera."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Glisați direct în sus."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Ați finalizat gestul „înapoi la pagina de pornire”. În continuare, aflați cum să reveniți."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Ați finalizat gestul „înapoi la pagina de pornire”."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Glisați pentru a accesa pagina de pornire"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Glisați în sus din partea de jos a ecranului. Cu acest gest accesați întotdeauna ecranul de pornire."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Glisați în sus dinspre marginea de jos a ecranului."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Încercați să țineți fereastra mai mult înainte s-o eliberați."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Glisați direct în sus, apoi întrerupeți."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Ați învățat cum să folosiți gesturi. Pentru a dezactiva gesturile, accesați Setările."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Ați finalizat gestul „comutați între aplicații”."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Glisați pentru a comuta între aplicații"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Glisați în sus din partea de jos a ecranului, așteptați, apoi eliberați."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Gata"</string>
diff --git a/quickstep/res/values-ru/strings.xml b/quickstep/res/values-ru/strings.xml
index f98d5d5..e8a1be3 100644
--- a/quickstep/res/values-ru/strings.xml
+++ b/quickstep/res/values-ru/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Рекомендуемое приложение: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Проведите слева направо от самого края экрана."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Проведите от левого края экрана до середины дисплея и отпустите палец."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Отлично! Теперь проведите справа налево, чтобы вернуться."</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Вернуться назад можно, проведя от правого края к центру."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Проведите справа налево от самого края экрана."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Проведите от правого края экрана до середины дисплея и отпустите палец."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Вы выполнили жест для перехода назад. Теперь мы расскажем, как переключаться между приложениями."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Вы выполнили жест для перехода назад."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Проведите пальцем не слишком близко к нижнему краю экрана."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Уровень чувствительности можно изменить в настройках."</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Чтобы вернуться, проведите слева направо."</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Чтобы вернуться к предыдущему экрану, проведите от левого края к центру."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Проведите снизу вверх от самого края экрана."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Не приостанавливайтесь перед тем, как отпустить палец."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Проведите по экрану ровно вверх."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Вы выполнили жест для перехода на главный экран. Далее мы расскажем, как вернуться назад."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Вы выполнили жест для перехода на главный экран."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Переход на главный экран"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Проведите вверх от нижнего края дисплея. Этот жест открывает главный экран."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Проведите снизу вверх от самого края экрана."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Прежде чем отпускать палец, задержите его на дисплее подольше."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Проведите по экрану ровно вверх, а затем задержите палец в крайнем положении."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Теперь вы знаете, как использовать жесты. Чтобы отключить их, перейдите в настройки."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Вы выполнили жест для переключения между приложениями."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Переключение между приложениями"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Проведите вверх от нижнего края экрана, задержите палец в крайнем положении, а затем отпустите."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Готово"</string>
diff --git a/quickstep/res/values-si/strings.xml b/quickstep/res/values-si/strings.xml
index 59d0d6f..f540b44 100644
--- a/quickstep/res/values-si/strings.xml
+++ b/quickstep/res/values-si/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"පුරෝකථනය කළ යෙදුම: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"ඔබ ඈත වම් දාරයෙන් ස්වයිප් කරන බවට සහතික කර ගන්න."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"ඔබ වම් දාරයේ සිට තිරයේ මැදට ස්වයිප් කර අත හරින බව සහතික කර ගන්න."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"කදිමයි! දැන් ආපසු යාමට දකුණේ සිට ස්වයිප් කරන්න"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"දකුණු මායිමේ සිට තිරයේ මැදට ස්වයිප් කර අවසාන තිරයට යා හැකිය."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"ඔබ ඈත දකුණු දාරයෙන් ස්වයිප් කරන බවට සහතික කර ගන්න."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"ඔබ දකුණු දාරයේ සිට තිරයේ මැදට ස්වයිප් කර අත හරින බව සහතික කර ගන්න."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"ඔබ ආපසු යාමේ ඉංගිතය සම්පූර්ණ කරන ලදි. ඊළඟට, යෙදුම් මාරු කරන ආකාරය දැන ගන්න."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"ඔබ ආපසු යාමේ ඉංගිතය සම්පූර්ණ කරන ලදි."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"ඔබ තිරයේ පහළට ඉතාම සමීපව ස්වයිප් නොකරන බවට සහතික කර ගන්න."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"ආපසු ඉංගිතයෙහි සංවේදීතාව වෙනස් කිරීමට, සැකසීම් වෙත යන්න"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"ආපසු යාමට වමේ සිට ස්වයිප් කරන්න"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"ඔබ සිටි අවසාන තිරයට ආපසු යාමට, වම් මායිමෙන් තිරයේ මැදට ස්වයිප් කරන්න."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"ඔබ තිරයේ පහළ දාරයේ සිට ඉහළට ස්වයිප් කරන බව සහතික කර ගන්න."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"යාමට ඉඩ හැරීමට පෙර ඔබ විරාමයක් නොගන්නා බව සහතික කර ගන්න."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"ඔබ කෙලින්ම ඉහළට ස්වයිප් කරන බව සහතික කර ගන්න."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"ඔබ මුල් පිටුවට යාමේ ඉංගිතය සම්පූර්ණ කරන ලදි. ඊළඟට, ආපසු යන ආකාරය දැන ගන්න."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"ඔබ මුල් පිටුවට යාමේ ඉංගිතය සම්පූර්ණ කරන ලදි."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"මුල් පිටුවට යාමට ස්වයිප් කරන්න"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"ඔබගේ තිරයේ පහළින් උඩට ස්වයිප් කරන්න.මෙම ඉංගිතය සැම විටම ඔබව මුල් තිරයට ගෙන යයි."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"ඔබ තිරයේ පහළ දාරයේ සිට ඉහළට ස්වයිප් කරන බව සහතික කර ගන්න."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"මුදා හැරීමට පෙර කවුළුව වැඩි වේලාවක් රඳවා තබා ගැනීමට උත්සාහ කරන්න."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"ඔබ කෙලින්ම ඉහළට ස්වයිප් කර, අනතුරුව විරාම කරන බව සහතික කර ගන්න."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"ඔබ ඉංගිත භාවිත කරන ආකාරය දැන ගෙන ඇත. ඉංගිත ක්රියාවිරහිත කිරීමට, සැකසීම් වෙත යන්න."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"ඔබ යෙදුම් මාරු කිරීමේ ඉංගිතය සම්පූර්ණ කර ඇත."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"යෙදුම් මාරු කිරීමට ස්වයිප් කරන්න"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"ඔබගේ තිරයේ පහළින් උඩට ස්වයිප් කර, අල්ලාගෙන සිට, අනතුරුව මුදා හරින්න."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"සියල්ල සකසා ඇත"</string>
diff --git a/quickstep/res/values-sk/strings.xml b/quickstep/res/values-sk/strings.xml
index 7d2d0b7..95f220d 100644
--- a/quickstep/res/values-sk/strings.xml
+++ b/quickstep/res/values-sk/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Predpovedaná aplikácia: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Musite potiahnuť z úplne krajného ľavého okraja."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Musíte potiahnuť z ľavého okraja do stredu obrazovky a uvoľniť."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Výborne! Teraz prejdite späť potiahnutím sprava."</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Na poslednú obrazovku sa môžete tiež vrátiť potiahnutím z pravého okraja do stredu obrazovky."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Musite potiahnuť z úplne krajného pravého okraja."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Musíte potiahnuť z pravého okraja do stredu obrazovky a uvoľniť."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Dokončili ste gesto na prechod späť. V ďalšom kroku sa naučíte, ako prepínať aplikácie."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Dokončili ste gesto na prechod späť."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Nesmiete potiahnuť príliš blízko dolnej časti obrazovky."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Ak chcete zmeniť citlivosť gesta Späť, prejdite do Nastavení"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Vrátite sa potiahnutím zľava"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Na poslednú obrazovku prejdete potiahnutím z ľavého okraja do stredu obrazovky."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Musíte potiahnuť nahor z dolného okraja obrazovky."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Pred uvoľnením nesmiete zastať."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Musíte potiahnuť priamo hore."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Dokončili ste gesto na prechod na plochu. V ďalšom kroku sa naučíte, ako sa vrátiť späť."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Dokončili ste gesto na prechod na plochu."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Prechod na plochu potiahnutím"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Potiahnite nahor z dolného okraja obrazovky. Týmto gestom sa vždy vrátite na plochu."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Musíte potiahnuť nahor z dolného okraja obrazovky."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Skúste okno pred uvoľnením podržať dlhšie."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Musite potiahnuť priamo hore a potom zastať."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Naučili ste sa používať gestá. Ak ich chcete vypnúť, prejdite do Nastavení."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Dokončili ste gesto na prepnutie aplikácií."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Prepínanie aplikácií potiahnutím"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Potiahnite nahor z dolnej časti obrazovky, pridržte a uvoľnite."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Hotovo"</string>
diff --git a/quickstep/res/values-sl/strings.xml b/quickstep/res/values-sl/strings.xml
index 9458b8c..42b093d 100644
--- a/quickstep/res/values-sl/strings.xml
+++ b/quickstep/res/values-sl/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Predvidena aplikacija: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Pazite, da ne povlečete s skrajno levega roba."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Pazite, da povlečete z levega roba do sredine zaslona in dvignete prst."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Odlično! Zdaj za pomik nazaj povlecite z desne."</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Na zadnji zaslon se lahko vrnete tudi tako, da z desnega roba povlečete do sredine zaslona."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Pazite, da ne povlečete s skrajno desnega roba."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Pazite, da povlečete z desnega roba do sredine zaslona in dvignete prst."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Izvedli ste potezo za pomik nazaj. Zdaj se naučite preklapljanja med aplikacijami."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Izvedli ste potezo za pomik nazaj."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Pazite, da ne povlečete preblizu dna zaslona."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Občutljivost poteze za nazaj lahko spremenite v nastavitvah."</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Povlecite z leve za pomik nazaj."</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Če se želite vrniti na zadnji prikazani zaslon, povlecite z levega roba do sredine zaslona."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Pazite, da povlečete s spodnjega roba zaslona navzgor."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Pazite, da ne zaustavite prsta, preden ga dvignete."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Pazite, da povlečete naravnost navzgor."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Izvedli ste potezo za pomik na začetni zaslon. Zdaj se naučite, kako se pomaknete nazaj."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Izvedli ste potezo za pomik na začetni zaslon."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Vlečenje za pomik na začetni zaslon"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Z dna zaslona s prstom povlecite navzgor. S to potezo lahko vedno odprete začetni zaslon."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Pazite, da povlečete s spodnjega roba zaslona navzgor."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Poskusite okno pridržati dalj časa, preden ga izpustite."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Pazite, da povlečete naravnost navzgor in nato zaustavite prst."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Naučili ste se uporabljati poteze. Poteze lahko izklopite v nastavitvah."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Izvedli ste potezo za preklapljanje med aplikacijami."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Vlečenje za preklapljanje med aplikacijami"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Povlecite navzgor z dna zaslona, pridržite, nato izpustite."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Zdaj znate"</string>
diff --git a/quickstep/res/values-sq/strings.xml b/quickstep/res/values-sq/strings.xml
index 046155e..cee7183 100644
--- a/quickstep/res/values-sq/strings.xml
+++ b/quickstep/res/values-sq/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Aplikacioni i parashikuar: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Sigurohu që të rrëshqasësh shpejt nga skaji sa më majtas."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Sigurohu që të rrëshqasësh shpejt nga skaji i majtë drejt mesit të ekranit dhe lëshoje."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Bukur! Tani rrëshqit shpejt nga e djathta për t\'u kthyer prapa"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Mund dhe të kthehesh në ekranin e fundit duke rrëshqitur shpejt nga skaji i djathtë në mes të ekranit."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Sigurohu që të rrëshqasësh shpejt nga skaji sa më djathtas."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Sigurohu që të rrëshqasësh shpejt nga skaji i djathtë drejt mesit të ekranit dhe lëshoje."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"E ke përfunduar gjestin e kthimit prapa. Në vijim do të mësosh se si t\'i ndërrosh aplikacionet."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"E ke përfunduar gjestin e kthimit prapa."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Sigurohu që të mos rrëshqasësh shumë afër fundit të ekranit."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Për të ndryshuar ndjeshmërinë e gjestit të kthimit prapa, shko te \"Cilësimet\""</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Rrëshqit shpejt nga e majta për t\'u kthyer prapa"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Për t\'u kthyer në ekranin e fundit ku ishe, rrëshqit shpejt nga skaji i majtë në mes të ekranit."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Sigurohu që të rrëshqasësh shpejt lart nga skaji i poshtëm i ekranit."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Sigurohu që të mos ndalosh para se ta lëshosh."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Sigurohu që të rrëshqasësh shpejt drejt lart."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"E ke përfunduar gjestin e kalimit tek ekrani bazë. Në vijim do të mësosh si të kthehesh prapa."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"E ke përfunduar gjestin e kalimit tek ekrani bazë."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Rrëshqit shpejt për të kaluar tek ekrani bazë"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Rrëshqit shpejt lart nga fundi i ekranit tënd. Ky gjest të dërgon gjithmonë tek ekrani bazë."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Sigurohu që të rrëshqasësh shpejt lart nga skaji i poshtëm i ekranit."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Provo ta mbash shtypur dritaren për një kohë më të gjatë para se ta lëshosh."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Sigurohu që të rrëshqasësh shpejt drejt lart dhe më pas ndalo."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Ke mësuar si të përdorësh gjestet. Për t\'i çaktivizuar gjestet, shko te \"Cilësimet\"."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"E ke përfunduar gjestin e ndërrimit të aplikacioneve."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Rrëshqit shpejt për të ndërruar aplikacionet"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Rrëshqit shpejt lart nga fundi i ekranit, mbaje të shtypur dhe më pas lëshoje."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Plotësisht gati"</string>
diff --git a/quickstep/res/values-sr/strings.xml b/quickstep/res/values-sr/strings.xml
index 4288e4a..21bcda2 100644
--- a/quickstep/res/values-sr/strings.xml
+++ b/quickstep/res/values-sr/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Предвиђамо апликацију: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Обавезно превуците од саме леве ивице."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Обавезно превуците од леве ивице до средине екрана и отпустите."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Свака част! Сада превуците здесна да бисте се вратили"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Вратите се на последњи екран превлачењем здесна ка средини."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Обавезно превуците од саме десне ивице."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Обавезно превуците од десне ивице до средине екрана и отпустите."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Довршили сте покрет за повратак. Сада сазнајте како да промените апликације."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Довршили сте покрет за повратак."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Никако не превлачите превише близу дна екрана."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Осетљивост пок. за назад можете да промените у Подешавањима"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Превуците са леве стране да бисте се вратили"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Да бисте се вратили на последњи екран, превуците од леве ивице ка средини екрана."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Обавезно превуците нагоре од доње ивице екрана."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Никако не стајте пре отпуштања."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Обавезно превуците право нагоре."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Довршили сте покрет за повратак на почетну страницу. Сада сазнајте како да се вратите."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Довршили сте покрет за повратак на почетну страницу."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Превуците да бисте отишли на почетну страницу"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Превуците нагоре од дна екрана. Овај покрет вас увек води на почетни екран."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Обавезно превуците нагоре од доње ивице екрана."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Пробајте да држите прозор дуже пре отпуштања."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Обавезно превуците право нагоре, па застаните."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Научили сте како да користите покрете. Да бисте искључили покрете, идите на подешавања."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Довршили сте покрет за промену апликација."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Превуците да бисте променили апликације"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Превуците нагоре од дна екрана, задржите, па пустите."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"То је то"</string>
diff --git a/quickstep/res/values-sw/strings.xml b/quickstep/res/values-sw/strings.xml
index 603d370..d8bfcf0 100644
--- a/quickstep/res/values-sw/strings.xml
+++ b/quickstep/res/values-sw/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Programu iliyotabiriwa: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Hakikisha unatelezesha kidole kuanzia ukingo wa mbali wa kushoto."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Hakikisha unatelezesha kidole kuanzia ukingo wa kushoto kuelekea katikati ya skrini na uachilie."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Safi! Sasa telezesha kidole kuanzia kulia ili urudi nyuma"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Unaweza pia kurudi kwenye skrini iliyotangulia kwa kutelezesha kidole kuanzia ukingo wa kulia kuelekea katikati ya skrini."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Hakikisha unatelezesha kidole kuanzia ukingo wa mbali wa kulia."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Hakikisha unatelezesha kidole kuanzia ukingo wa kulia kuelekea katikati ya skrini na uachilie."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Umekamilisha ishara ya kurudi nyuma. Hatua inayofuata, jifunze jinsi ya kubadilisha programu."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Umekamilisha ishara ya kurudi nyuma."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Hakikisha hutelezeshi kidole karibu sana na sehemu ya chini ya skrini."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Kubadilisha hisi ya ishara ya nyuma, nenda kwenye Mipangilio"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Telezesha kidole kutoka kushoto ili urudi nyuma"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Ili urudi kwenye skrini iliyotangulia, telezesha kidole kuanzia ukingo wa kushoto kuelekea katikati ya skrini."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Hakikisha unatelezesha kidole juu kuanzia ukingo wa chini wa skrini."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Hakikisha kuwa husimamishi kabla ya kuachilia."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Hakikisha unatelezesha kidole kuelekea juu."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Umekamilisha ishara ya kwenda kwenye Skrini ya kwanza. Inayofuata, jifunze jinsi ya kurudi nyuma."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Umekamilisha ishara ya kwenda kwenye Skrini ya kwanza."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Telezesha kidole ili uende kwenye skrini ya kwanza"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Telezesha kidole juu kuanzia chini ya skrini yako. Ishara hii kila wakati hukupeleka kwenye Skrini ya kwanza."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Hakikisha unatelezesha kidole juu kuanzia ukingo wa chini wa skrini."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Jaribu kushikilia dirisha kwa muda mrefu kabla ya kuachilia."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Hakikisha unatelezesha kidole kuelekea juu, kisha usimamishe."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Umejifunza jinsi ya kutumia ishara. Ili uzime ishara, nenda kwenye Mipangilio."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Umekamilisha ishara ya kubadilisha programu."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Telezesha kidole ili ubadilishe programu"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Telezesha kidole juu kuanzia sehemu ya chini ya skrini yako, ushikilie, kisha uachilie."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Kila kitu kiko tayari"</string>
diff --git a/quickstep/res/values-ta/strings.xml b/quickstep/res/values-ta/strings.xml
index a2bc05b..d12c51c 100644
--- a/quickstep/res/values-ta/strings.xml
+++ b/quickstep/res/values-ta/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"கணித்த ஆப்ஸ்: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"இடது ஓரத்தின் விளிம்பிலிருந்து ஸ்வைப் செய்கிறீர்கள் என்பதை உறுதிசெய்துகொள்ளுங்கள்."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"இடது ஓரத்திலிருந்து திரையின் மையப் பகுதிக்கு ஸ்வைப் செய்தபிறகு விடுவிப்பதை உறுதிசெய்துகொள்ளுங்கள்."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"அருமை! பின்செல்வதற்கு வலதுபுறத்திலிருந்து ஸ்வைப் செய்யுங்கள்"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"வலது ஓரத்திலிருந்து திரையின் மையப் பகுதிக்கு ஸ்வைப் செய்தும் முந்தைய திரைக்கு மீண்டும் செல்லலாம்."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"வலது ஓரத்தின் விளிம்பிலிருந்து ஸ்வைப் செய்கிறீர்கள் என்பதை உறுதிசெய்துகொள்ளுங்கள்."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"வலது ஓரத்திலிருந்து திரையின் மையப் பகுதிக்கு ஸ்வைப் செய்தபிறகு விடுவிப்பதை உறுதிசெய்துகொள்ளுங்கள்."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"பின்செல் சைகைப் பயிற்சியை முடித்துவிட்டீர்கள். அடுத்து, ஆப்ஸுக்கிடையே மாறுவது எப்படி என்பதை அறிக."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"பின்செல் சைகைப் பயிற்சியை முடித்துவிட்டீர்கள்."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"திரையின் கீழ்பகுதிக்கு மிக நெருக்கமாக ஸ்வைப் செய்யவில்லை என்பதை உறுதிசெய்துகொள்ளுங்கள்."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"பின்செல் சைகையின் உணர்திறனை மாற்ற அமைப்புகளுக்குச் செல்க"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"பின்செல்வதற்கு இடதுபுறத்திலிருந்து ஸ்வைப் செய்யுங்கள்"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"முந்தைய திரைக்கு மீண்டும் செல்ல, இடது ஓரத்திலிருந்து திரையின் மையப் பகுதிக்கு ஸ்வைப் செய்யுங்கள்."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"திரையின் கீழ் ஓரத்திலிருந்து மேல்நோக்கி ஸ்வைப் செய்வதை உறுதிசெய்துகொள்ளுங்கள்."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"விடுவிப்பதற்கு முன்பாக இடைநிறுத்தவில்லை என்பதை உறுதிசெய்துகொள்ளுங்கள்."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"மேல்நோக்கி நேராக ஸ்வைப் செய்வதை உறுதிசெய்துகொள்ளுங்கள்."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"முகப்புக்குச் செல் சைகைப் பயிற்சியை முடித்துவிட்டீர்கள். அடுத்து, பின்செல்வது எப்படி என்பதை அறிக."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"முகப்புக்குச் செல் சைகைப் பயிற்சியை முடித்துவிட்டீர்கள்."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"முகப்புக்குச் செல்ல ஸ்வைப் செய்யுங்கள்"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"திரையின் கீழிருந்து மேலாக ஸ்வைப் செய்க. இந்தச் சைகை எப்போதும் முகப்புத் திரைக்கு அழைத்துச் செல்லும்."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"திரையின் கீழ் ஓரத்திலிருந்து மேல்நோக்கி ஸ்வைப் செய்வதை உறுதிசெய்துகொள்ளுங்கள்."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"விடுவிப்பதற்கு முன்பாக நீண்டநேரம் சாளரத்தை அழுத்திப் பிடித்திருங்கள்."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"மேல்நோக்கி நேராக ஸ்வைப் செய்தபிறகு இடைநிறுத்துவதை உறுதிசெய்துகொள்ளுங்கள்."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"சைகைகளை எப்படி உபயோகிப்பது என்று கற்றுக்கொண்டீர்கள். சைகைகளை முடக்க அமைப்புகளுக்குச் செல்லுங்கள்."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"ஆப்ஸுக்கிடையே மாறும் சைகைப் பயிற்சியை முடித்துவிட்டீர்கள்."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"ஆப்ஸுக்கிடையே மாற ஸ்வைப் செய்யுங்கள்"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"திரையின் கீழிலிருந்து மேலாக ஸ்வைப் செய்து, சில விநாடிகள் பிடித்திருந்து, பிறகு விரலை எடுங்கள்."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"எல்லாம் தயார்"</string>
diff --git a/quickstep/res/values-te/strings.xml b/quickstep/res/values-te/strings.xml
index bc122eb..78932d5 100644
--- a/quickstep/res/values-te/strings.xml
+++ b/quickstep/res/values-te/strings.xml
@@ -88,14 +88,10 @@
<string name="gesture_tutorial_try_again" msgid="65962545858556697">"మళ్లీ ట్రై చేయండి"</string>
<string name="gesture_tutorial_nice" msgid="2936275692616928280">"పనితీరు బాగుంది!"</string>
<string name="gesture_tutorial_step" msgid="1279786122817620968">"ట్యుటోరియల్ <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
- <!-- no translation found for allset_title (5021126669778966707) -->
- <skip />
- <!-- no translation found for allset_hint (459504134589971527) -->
- <skip />
- <!-- no translation found for allset_description (6350320429953234580) -->
- <skip />
- <!-- no translation found for allset_navigation_settings (417773244979225071) -->
- <skip />
+ <string name="allset_title" msgid="5021126669778966707">"అంతా సెట్ అయింది!"</string>
+ <string name="allset_hint" msgid="459504134589971527">"హోమ్కు వెళ్లడానికి పైకి స్వైప్ చేయండి"</string>
+ <string name="allset_description" msgid="6350320429953234580">"మీరు మీ ఫోన్ను ఉపయోగించడానికి సిద్ధంగా ఉన్నారు"</string>
+ <string name="allset_navigation_settings" msgid="417773244979225071"><annotation id="link">"యాక్సెసిబిలిటీ కోసం నావిగేషన్ సెట్టింగ్లు"</annotation></string>
<string name="action_share" msgid="2648470652637092375">"షేర్ చేయండి"</string>
<string name="action_screenshot" msgid="8171125848358142917">"స్క్రీన్షాట్"</string>
<string name="blocked_by_policy" msgid="2071401072261365546">"ఈ చర్యను యాప్ గానీ, మీ సంస్థ గానీ అనుమతించవు"</string>
diff --git a/quickstep/res/values-th/strings.xml b/quickstep/res/values-th/strings.xml
index 95591fe..89206db 100644
--- a/quickstep/res/values-th/strings.xml
+++ b/quickstep/res/values-th/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"แอปที่คาดว่าจะใช้: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"ตรวจสอบว่าปัดจากขอบด้านซ้ายสุด"</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"ตรวจสอบว่าปัดจากขอบด้านซ้ายไปตรงกลางหน้าจอ แล้วยกนิ้วขึ้น"</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"ดีมาก ทีนี้ปัดจากด้านขวาเพื่อย้อนกลับ"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"หรือจะกลับไปหน้าจอล่าสุดโดยปัดจากขอบขวาไปตรงกลางหน้าจอก็ได้"</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"ตรวจสอบว่าปัดจากขอบด้านขวาสุด"</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"ตรวจสอบว่าปัดจากขอบด้านขวาไปตรงกลางหน้าจอ แล้วยกนิ้วขึ้น"</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"คุณทำท่าทางสัมผัสเพื่อย้อนกลับเสร็จแล้ว ต่อไปดูวิธีสลับแอป"</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"คุณทำท่าทางสัมผัสเพื่อย้อนกลับเสร็จแล้ว"</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"ตรวจสอบว่าไม่ได้ปัดใกล้กับด้านล่างของหน้าจอมากเกินไป"</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"เปลี่ยนความไวของท่าทางสัมผัสเพื่อย้อนกลับได้ที่การตั้งค่า"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"ปัดจากด้านซ้ายเพื่อย้อนกลับ"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"หากต้องการย้อนกลับไปที่หน้าจอล่าสุดที่เปิด ให้ปัดจากขอบด้านซ้ายไปตรงกลางหน้าจอ"</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"ตรวจสอบว่าปัดขึ้นจากขอบด้านล่างของหน้าจอ"</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"ตรวจสอบว่าไม่มีการหยุดชั่วคราวก่อนยกนิ้วขึ้น"</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"ตรวจสอบว่าปัดขึ้นในแนวตรง"</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"คุณทำท่าทางสัมผัสเพื่อไปที่หน้าแรกเสร็จแล้ว ต่อไปดูวิธีย้อนกลับ"</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"คุณทำท่าทางสัมผัสเพื่อไปที่หน้าแรกเสร็จแล้ว"</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"ปัดเพื่อไปที่หน้าแรก"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"ปัดขึ้นจากด้านล่างของหน้าจอ ท่าทางสัมผัสนี้จะนำคุณไปที่หน้าจอหลักเสมอ"</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"ตรวจสอบว่าปัดขึ้นจากขอบด้านล่างของหน้าจอ"</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"ลองแตะหน้าต่างค้างไว้นานขึ้นก่อนปล่อยนิ้ว"</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"ตรวจสอบว่าปัดขึ้นในแนวตรง แล้วหยุดชั่วคราว"</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"คุณรู้วิธีใช้ท่าทางสัมผัสแล้ว หากต้องการปิดท่าทางสัมผัส ให้ไปที่การตั้งค่า"</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"คุณทำท่าทางสัมผัสเพื่อสลับแอปเสร็จแล้ว"</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"ปัดเพื่อสลับแอป"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"ปัดขึ้นจากด้านล่างของหน้าจอค้างไว้ แล้วปล่อย"</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"เรียบร้อย"</string>
diff --git a/quickstep/res/values-tl/strings.xml b/quickstep/res/values-tl/strings.xml
index 211087e..a4da337 100644
--- a/quickstep/res/values-tl/strings.xml
+++ b/quickstep/res/values-tl/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Hinulaang app: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Tiyaking magsa-swipe ka mula sa pinakadulo sa kaliwa."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Tiyaking mag-swipe mula sa kaliwang gilid papunta sa gitna ng screen, saka iangat ang iyong daliri."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Magaling! Ngayon, mag-swipe mula sa kanan para bumalik"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Puwede ka ring mag-swipe mula sa kanan papunta sa gitna para bumalik sa nakaraang screen."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Tiyaking magsa-swipe ka mula sa pinakadulo sa kanan."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Tiyaking mag-swipe mula sa kanang gilid papunta sa gitna ng screen, saka iangat ang iyong daliri."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Nakumpleto mo na ang galaw para bumalik. Susunod, alamin kung paano magpalipat-lipat sa mga app."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Nakumpleto mo na ang galaw para bumalik."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Tiyaking hindi ka magsa-swipe nang masyadong malapit sa ibaba ng screen."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Pumunta sa Settings para baguhin ang sensitivity ng pagbalik"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Mag-swipe mula sa kaliwa para bumalik"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Mag-swipe mula sa kaliwang gilid papunta sa gitna para bumalik sa nakaraang screen na pinuntahan mo."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Tiyaking magsa-swipe ka pataas mula sa pinakaibaba ng screen."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Tiyaking hindi ka magpo-pause bago iangat ang iyong daliri."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Tiyaking magsa-swipe ka nang diretso pataas."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Nakumpleto mo na ang galaw para pumunta sa Home. Susunod, alamin kung paano bumalik."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Nakumpleto mo na ang galaw para pumunta sa Home."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Mag-swipe para pumunta sa home"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Mag-swipe pataas mula sa ibaba ng iyong screen. Dadalhin ka palagi ng galaw na ito sa Home screen."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Tiyaking magsa-swipe ka pataas mula sa pinakaibaba ng screen."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Subukang pindutin nang mas matagal ang window bago ito bitawan."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Tiyaking magsa-swipe ka nang diretso pataas, pagkatapos ay mag-pause."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Alam mo na kung paano gumamit ng mga galaw. Para i-off ang mga galaw, pumunta sa Mga Setting."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Nakumpleto mo na ang galaw para magpalipat-lipat sa mga app."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Mag-swipe para lumipat ng app"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Mag-swipe pataas mula sa ibaba ng iyong screen, mag-hold, pagkatapos ay bitawan ito."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Handa na ang lahat"</string>
diff --git a/quickstep/res/values-tr/strings.xml b/quickstep/res/values-tr/strings.xml
index 0f44140..595a8a6 100644
--- a/quickstep/res/values-tr/strings.xml
+++ b/quickstep/res/values-tr/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Tahmin edilen uygulama: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Ekranın en solundan kaydırdığınızdan emin olun."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Sol kenardan ekranın ortasına doğru kaydırıp bıraktığınızdan emin olun."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Güzel! Şimdi geri gitmek için sağdan kaydırın"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"İsterseniz sağ kenardan ekranın ortasına kaydırarak son ekrana dönebilirsiniz."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Ekranın en sağından kaydırdığınızdan emin olun."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Sağ kenardan ekranın ortasına doğru kaydırıp bıraktığınızdan emin olun."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Geri dön hareketini tamamladınız. Sırada, uygulamalar arasında geçiş yapmayı öğrenmek var."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Geri dön hareketini tamamladınız."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Ekranın alt kısmına çok yakın bir şekilde kaydırmadığınızdan emin olun."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Geri hareketinin hassasiyetini değiştirmek için Ayarlar\'a gidin"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Geri gitmek için soldan kaydırın"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Görüntülediğiniz son ekrana dönmek için sol kenardan ekranın ortasına kaydırın."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Ekranın alt kenarından yukarı kaydırdığınızdan emin olun."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Bırakmadan önce parmağınızı duraklatmadığınızdan emin olun."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Düz bir şekilde yukarı kaydırdığınızdan emin olun."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Ana ekrana git hareketini tamamladınız. Şimdi ana ekrana nasıl gideceğinizi öğreneceksiniz."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Ana ekrana git hareketini tamamladınız."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Ana ekrana gitmek için kaydırma"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Ekranın alt kısmından yukarıya doğru kaydırın. Bu hareket sizi her zaman Ana ekrana götürür."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Ekranın alt kenarından yukarı kaydırdığınızdan emin olun."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Bırakmadan önce pencereyi daha uzun süre tutmayı deneyin."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Düz bir şekilde yukarı kaydırıp ardından parmağınızı duraklattığınızdan emin olun."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Hareketleri nasıl kullanacağınızı öğrendiniz. Hareketleri kapatmak için Ayarlar\'a gidin."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Uygulamalar arasında geçiş yapma hareketini tamamladınız."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Uygulamalar arasında geçiş yapmak için kaydırma"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Ekranınızın alt tarafından yukarı doğru kaydırın, tutun ve sonra bırakın."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Hepsi bu kadar"</string>
diff --git a/quickstep/res/values-uk/strings.xml b/quickstep/res/values-uk/strings.xml
index 413531f..f350cd2 100644
--- a/quickstep/res/values-uk/strings.xml
+++ b/quickstep/res/values-uk/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Передбачений додаток: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Проведіть пальцем саме від лівого краю екрана."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Проведіть пальцем від лівого краю до середини екрана й підніміть палець."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Чудово! Щоб повернутися, проведіть пальцем справа наліво"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Щоб повернутися, проведіть пальцем справа до середини."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Проведіть пальцем саме від правого краю екрана."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Проведіть пальцем від правого краю до середини екрана й підніміть палець."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Ви виконали жест \"Назад\". Тепер дізнайтеся, як переходити між додатками."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Ви виконали жест \"Назад\"."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Не проводьте пальцем надто близько до нижнього краю екрана."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Щоб змінити чутливість жесту \"Назад\", відкрийте налаштування"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Щоб повернутися, проведіть пальцем зліва направо"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Щоб перейти на попередній екран, проведіть пальцем від лівого краю до середини екрана."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Проведіть пальцем угору від нижнього краю екрана."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Не робіть паузу перед тим, як відірвати палець від екрана."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Проводьте пальцем вертикально вгору."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Ви виконали жест переходу на головний екран. Тепер дізнайтеся, як повернутися."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Ви виконали жест переходу на головний екран."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Проведіть пальцем, щоб перейти на головний екран"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Проведіть пальцем по екрану знизу вгору. Цей жест завжди повертатиме вас на головний екран."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Проведіть пальцем угору від нижнього краю екрана."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Спробуйте втримувати вікно довше, перш ніж відпустити."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Проведіть пальцем вертикально вгору, а тоді зробіть паузу."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Ви вивчили жести. Щоб вимкнути їх, перейдіть у налаштування."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Ви виконали жест переходу в інший додаток."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Проведіть пальцем, щоб перейти в інший додаток"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Проведіть пальцем вгору від низу екрана, утримуйте палець на екрані, а потім відпустіть."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Усе готово!"</string>
diff --git a/quickstep/res/values-uz/strings.xml b/quickstep/res/values-uz/strings.xml
index 7f3df01..32579d6 100644
--- a/quickstep/res/values-uz/strings.xml
+++ b/quickstep/res/values-uz/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Taklif etilgan ilova: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Barmoqni chapdagi eng chekkadan suring."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Barmoqni ekranning chap chetidan oʻrtasigacha suring va ekrandan uzing."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Yaxshi! Endi orqaga qaytish uchun oʻngdan suring"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Shuningdek, oʻng chetdan ekran oʻrtasiga surish orqali ham oxirgi ekranga qaytish mumkin."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Barmoqni oʻngdagi eng chekkadan suring."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Barmoqni ekranning oʻng chetidan oʻrtasigacha suring va ekrandan uzing."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Ortga qaytish ishorasi darsini tamomladingiz. Endi ilovalarni almashtirishni oʻrganamiz."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Ortga qaytish ishorasi darsini tamomladingiz."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Barmoqni ekran pastiga yaqin surmaslikka harakat qiling."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Orqaga ishorasi sezuvchanligi Sozlamalardan oʻzgartiriladi"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Orqaga qaytish uchun chapdan suring"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Oxirgi ekranga qaytish uchun barmoqni ekranning chap chekkasidan oʻrtasigacha suring."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Barmoqni ekranning pastki chetidan yuqoriga suring."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Barmoqni ekrandan pauzasiz qoʻyib uzing."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Barmoqni tik tepaga suring."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Bosh ekranni ochish ishorasi darsini tamomladingiz. Endi orqaga qaytishni oʻrganamiz."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Bosh ekranni ochish ishorasi darsini tamomladingiz."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Svayp bilan bosh ekranni ochish"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Ekranning pastidan tepaga qarab suring. Bu ishora doim Bosh ekranni ochadi."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Barmoqni ekranning pastki chetidan yuqoriga suring."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Barmoqni uzishdan oldin oynani biroz bosib turing."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Avval tik tepaga surib, keyin pauza qiling."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Ishoralardan qanday foydalanishni oʻrganib oldingiz. Ishoralarni oʻchirish uchun Sozlamalarga kiring."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Ilovalarni almashtirish darsini tamomladingiz."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Svayp bilan ilovalarni almashtirish"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Ekranning pastidan tepasiga suring, bosib turing va qoʻyib yuboring."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Tayyor"</string>
diff --git a/quickstep/res/values-vi/strings.xml b/quickstep/res/values-vi/strings.xml
index fed4a7f..4b6889a 100644
--- a/quickstep/res/values-vi/strings.xml
+++ b/quickstep/res/values-vi/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Ứng dụng dự đoán: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Hãy vuốt từ mép ngoài cùng bên trái."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Hãy vuốt từ mép trái tới chính giữa màn hình rồi nhấc ngón tay."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Tuyệt vời! Bây giờ, hãy vuốt từ mép phải để quay lại"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Bạn cũng có thể vuốt từ mép phải tới chính giữa màn hình để quay lại màn hình gần đây nhất."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Hãy vuốt từ mép ngoài cùng bên phải."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Hãy vuốt từ mép phải tới chính giữa màn hình rồi nhấc ngón tay."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Bạn đã thực hiện xong cử chỉ quay lại. Tiếp theo, hãy tìm hiểu cách chuyển đổi ứng dụng."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Bạn đã thực hiện xong cử chỉ quay lại."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Hãy nhớ không được vuốt quá gần phần cuối màn hình."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Để thay đổi độ nhạy của cử chỉ quay lại, hãy vào mục Cài đặt"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Vuốt từ mép trái để quay lại"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Để quay lại màn hình gần đây nhất mà bạn xem, hãy vuốt từ mép trái tới chính giữa màn hình."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Hãy vuốt lên từ mép dưới cùng của màn hình."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Hãy nhớ không được tạm dừng trước khi nhấc ngón tay."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Hãy vuốt thẳng lên."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Bạn đã thực hiện xong cử chỉ chuyển đến Màn hình chính. Tiếp theo, hãy tìm hiểu cách quay lại."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Bạn đã thực hiện xong cử chỉ chuyển đến Màn hình chính."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Vuốt để chuyển đến Màn hình chính"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Vuốt lên từ cuối màn hình. Cử chỉ này luôn đưa bạn đến Màn hình chính."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Hãy vuốt lên từ mép dưới cùng của màn hình."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Hãy thử giữ cửa sổ lâu hơn trước khi thả tay ra."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Hãy vuốt thẳng lên, sau đó tạm dừng."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Bạn đã tìm hiểu cách sử dụng cử chỉ. Để tắt cử chỉ, hãy chuyển đến phần Cài đặt."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Bạn đã thực hiện xong cử chỉ chuyển đổi ứng dụng."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Vuốt để chuyển đổi ứng dụng"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Vuốt lên từ cuối màn hình, giữ rồi thả tay ra."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Đã hoàn tất"</string>
diff --git a/quickstep/res/values-zh-rCN/strings.xml b/quickstep/res/values-zh-rCN/strings.xml
index 4129299..b65553f 100644
--- a/quickstep/res/values-zh-rCN/strings.xml
+++ b/quickstep/res/values-zh-rCN/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"预测的应用:<xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"请从最左侧边缘开始滑动。"</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"请从左侧边缘滑动到屏幕中间位置后再松开手指。"</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"太好了!现在从右侧向左滑动手指即可返回"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"如要返回上一个屏幕,您也可以从右侧边缘滑动到屏幕中间位置。"</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"请从最右侧边缘开始滑动。"</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"请从右侧边缘滑动到屏幕中间位置后再松开手指。"</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"您完成了“返回”手势教程。接下来了解如何切换应用。"</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"您完成了“返回”手势教程。"</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"滑动时,手的位置不要太靠近屏幕底部。"</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"如要调节“返回”手势的灵敏度,请转到“设置”"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"从左侧向右滑动手指即可返回"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"如要返回您查看过的上一个屏幕,请从左侧边缘滑动到屏幕中间位置。"</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"请从屏幕底部边缘向上滑动。"</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"在松开手指前请勿停下来。"</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"请向上滑动。"</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"您完成了“转到主屏幕”手势教程。接下来了解如何返回。"</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"您完成了“转到主屏幕”手势教程。"</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"滑动即可转到主屏幕"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"从屏幕底部向上滑动。这个手势会一律将您转到主屏幕。"</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"请从屏幕底部边缘向上滑动。"</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"请尝试按住窗口较长时间,然后再松开手指。"</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"请向上滑动,然后停住。"</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"您已了解如何使用手势了。如要关闭手势,请转到“设置”。"</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"您完成了“切换应用”手势教程。"</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"滑动即可切换应用"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"从屏幕底部向上滑动后按住,然后松开。"</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"大功告成"</string>
diff --git a/quickstep/res/values-zh-rHK/strings.xml b/quickstep/res/values-zh-rHK/strings.xml
index 0b1c53d..feee950 100644
--- a/quickstep/res/values-zh-rHK/strings.xml
+++ b/quickstep/res/values-zh-rHK/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"預測應用程式:<xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"請從螢幕左側邊緣滑動。"</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"請從螢幕左側邊緣往中央滑動,然後放開手指。"</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"太好了!現在只要從螢幕右側往左滑動即可返回"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"從螢幕右側往中央滑動亦可返回上一個畫面。"</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"請從螢幕右側邊緣滑動。"</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"請從螢幕右側邊緣往中央滑動,然後放開手指"</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"您已完成「返回」手勢的教學課程。接下來一起瞭解如何切換應用程式。"</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"您已完成「返回」手勢的教學課程。"</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"滑動時,手的位置不要太接近螢幕底部。"</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"如要變更「返回」手勢的敏感度,請前往「設定」"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"從螢幕左側往右滑動即可返回"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"如要返回上一個畫面,請從螢幕左側往中央滑動。"</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"請從螢幕底部邊緣向上滑動。"</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"放開手指前請勿停下來。"</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"請向上滑動。"</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"您已完成「返回主畫面」手勢的教學課程。接著,一起來瞭解如何返回上一個畫面。"</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"您已完成「返回主畫面」手勢的教學課程。"</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"向上滑動即可返回主畫面。"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"從螢幕底部向上滑動。這個手勢在所有畫面下都可讓您返回主畫面。"</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"請從螢幕底部邊緣向上滑動。"</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"請嘗試按住視窗更長時間,然後再放開。"</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"請向上滑動,然後停住。"</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"您已學會如何使用手勢。如要關閉手勢,請前往「設定」。"</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"您已完成「切換應用程式」手勢的教學課程。"</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"滑動即可切換應用程式"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"從螢幕底部向上滑動並按住,然後放開。"</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"大功告成"</string>
diff --git a/quickstep/res/values-zh-rTW/strings.xml b/quickstep/res/values-zh-rTW/strings.xml
index 6ad7e8d..6dc5c57 100644
--- a/quickstep/res/values-zh-rTW/strings.xml
+++ b/quickstep/res/values-zh-rTW/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"預測的應用程式:<xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"請從螢幕左側邊緣滑動。"</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"請從螢幕左側邊緣往中央滑動,然後放開手指。"</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"太好了!現在只要從螢幕右側往左滑動即可返回"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"從螢幕右側往中央滑動也可返回上一個畫面。"</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"請從螢幕右側邊緣滑動。"</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"請從螢幕右側邊緣往中央滑動,然後放開手指。"</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"你已完成「返回」手勢的教學課程。接著,一起來瞭解如何切換應用程式。"</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"你已完成「返回」手勢的教學課程。"</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"滑動時,手的位置不要太接近螢幕底部。"</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"如要變更「返回」手勢的敏感度,請前往「設定」"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"從螢幕左側往右滑動即可返回"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"如要返回先前的畫面,請從螢幕左側往中央滑動。"</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"請從螢幕底部邊緣向上滑動。"</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"放開手指前請勿停下來。"</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"請向上滑動。"</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"你已完成「返回主畫面」手勢的教學課程。接著,一起來瞭解如何返回上一個畫面。"</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"你已完成「返回主畫面」手勢的教學課程。"</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"使用滑動手勢返回主畫面"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"從螢幕底部向上滑動,即可返回主畫面。"</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"請從螢幕底部邊緣向上滑動。"</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"請按住視窗久一點,然後再放開。"</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"請向上滑動,然後停住。"</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"你已瞭解如何使用手勢了。如要關閉手勢,請前往「設定」。"</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"你已完成「切換應用程式」手勢的教學課程。"</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"使用滑動手勢切換應用程式"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"從螢幕底部向上滑動並按住,然後放開。"</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"大功告成"</string>
diff --git a/quickstep/res/values-zu/strings.xml b/quickstep/res/values-zu/strings.xml
index 82dc5cf..06d039f 100644
--- a/quickstep/res/values-zu/strings.xml
+++ b/quickstep/res/values-zu/strings.xml
@@ -47,38 +47,28 @@
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Uhlelo lokusebenza olubikezelwe: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Qiniseka ukuthi uswayiphela ekudeni emngceleni ongakwesobunxele."</string>
<string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Qiniseka ukuthi uswayipha kusuka emngceleni okwesobunxele kuya phakathi kwesikrini bese uyadedela."</string>
- <!-- no translation found for back_gesture_feedback_title_complete_left_edge (1381455921760094003) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_subtitle_complete_left_edge (8106594510099968430) -->
- <skip />
+ <string name="back_gesture_feedback_title_complete_left_edge" msgid="1381455921760094003">"Kuhle! Manje swayipha kusuka kwesokudla ukuze uye emuva"</string>
+ <string name="back_gesture_feedback_subtitle_complete_left_edge" msgid="8106594510099968430">"Futhi ungabuyela emuva esikrinini sangaphambilini ngokuswayipha kusuka kunqenqema langakwesokudla ukuya maphakathi nesikrini."</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Qiniseka ukuthi uswayiphela ekudeni emngceleni ongakwesokudla."</string>
<string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Qiniseka ukuthi uswayipha kusuka emngceleni okwesokudla kuya phakathi kwesikrini bese uyadedela."</string>
- <!-- no translation found for back_gesture_feedback_complete_with_follow_up (8653374779579748392) -->
- <skip />
- <!-- no translation found for back_gesture_feedback_complete_without_follow_up (6405649621667113830) -->
- <skip />
+ <string name="back_gesture_feedback_complete_with_follow_up" msgid="8653374779579748392">"Ukuqedile ukuthinta kokubuyela emuva. Ngokulandelayo, funda indlela yokushintsha ama-app."</string>
+ <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Ukuqedile ukuthinta kokubuyela emuva."</string>
<string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Qiniseka ukuba awuswayipheli eduze kakhulu naphansi kwesikrini."</string>
<string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Ukuze ushintshe ukuzwela kokuthinta emuva, iya Kumasethingi"</string>
- <!-- no translation found for back_gesture_intro_title (5538727561353262952) -->
- <skip />
- <!-- no translation found for back_gesture_intro_subtitle (8139048712004626940) -->
- <skip />
+ <string name="back_gesture_intro_title" msgid="5538727561353262952">"Swayipha kusuka kwesobunxele ukuze ubuyele emuva"</string>
+ <string name="back_gesture_intro_subtitle" msgid="8139048712004626940">"Ukuze ubuyele esikrinini sangaphambilini lapho ubukade ukhona, swayipha kusuka kunqenqema lwesokunxele ukuya maphakathi nesikrini."</string>
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Qiniseka ukuthi uswayiphela phezulu kusuka emngceleni ophansi wesikrini."</string>
<string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Qiniseka ukuthi awumisi ngaphambi kokudedela."</string>
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Qiniseka ukuthi uswayiphela ngqo phezulu."</string>
- <!-- no translation found for home_gesture_feedback_complete_with_follow_up (1427872029729605034) -->
- <skip />
- <!-- no translation found for home_gesture_feedback_complete_without_follow_up (8049099486868933882) -->
- <skip />
+ <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Ukuqedile ukuthinta kokuya Ekhaya. Ngokulandelayo, funda indlela yokuya emuva."</string>
+ <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Ukuqedile ukuthinta kokuya Ekhaya."</string>
<string name="home_gesture_intro_title" msgid="836590312858441830">"Swayipha ukuze uye ekhaya"</string>
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Swayiphela phezulu kusuka phansi kwesikrini sakho.Lokhu kuthinta kuhlala kukusa esikrinini sasekhaya."</string>
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Qiniseka ukuthi uswayiphela phezulu kusuka emngceleni ophansi wesikrini."</string>
<string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Zama ukubamba iwindi isikhashana ngaphambi kokulidedela."</string>
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Qiniseka ukuthi uswayiphela ngqo phezulu bese uyamisa."</string>
- <!-- no translation found for overview_gesture_feedback_complete_with_follow_up (3544611727467765026) -->
- <skip />
- <!-- no translation found for overview_gesture_feedback_complete_without_follow_up (3199486203448379152) -->
- <skip />
+ <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Ufunde ukusebenzisa ukuthinta. Ukuze uvale ukuthinta, iya kokuthi Amasethingi."</string>
+ <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Ukuqedile ukuthinta kokushintsha ama-app."</string>
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Swayipha ukuze ushintshe ama-app"</string>
<string name="overview_gesture_intro_subtitle" msgid="1579517193845186042">"Swayiphela phezulu kusuka ngezansi kwesikrini sakho, ubambe, bese udedele."</string>
<string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Konke kusethiwe"</string>
diff --git a/quickstep/res/values/dimens.xml b/quickstep/res/values/dimens.xml
index c459472..420c145 100644
--- a/quickstep/res/values/dimens.xml
+++ b/quickstep/res/values/dimens.xml
@@ -19,6 +19,8 @@
<dimen name="task_thumbnail_icon_size_grid">32dp</dimen>
<!-- For screens without rounded corners -->
<dimen name="task_corner_radius_small">2dp</dimen>
+ <!-- For Launchers that want to override the default dialog corner radius -->
+ <dimen name="task_corner_radius_override">-1dp</dimen>
<dimen name="overview_proactive_row_height">48dp</dimen>
<dimen name="overview_proactive_row_bottom_margin">16dp</dimen>
@@ -39,6 +41,11 @@
<dimen name="overview_grid_focus_vertical_margin">90dp</dimen>
<dimen name="split_placeholder_size">110dp</dimen>
+ <!-- These speeds are in dp/s -->
+ <dimen name="max_task_dismiss_drag_velocity">2.25dp</dimen>
+ <dimen name="default_task_dismiss_drag_velocity">1.75dp</dimen>
+ <dimen name="default_task_dismiss_drag_velocity_grid">0.75dp</dimen>
+
<dimen name="recents_page_spacing">16dp</dimen>
<dimen name="recents_clear_all_deadzone_vertical_margin">70dp</dimen>
@@ -142,4 +149,5 @@
<!-- Note that this applies to both sides of all icons, so visible space is double this. -->
<dimen name="taskbar_icon_spacing">8dp</dimen>
<dimen name="taskbar_folder_margin">16dp</dimen>
+ <dimen name="taskbar_nav_buttons_spacing">16dp</dimen>
</resources>
diff --git a/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java b/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java
index 6966fb6..bc2c125 100644
--- a/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java
+++ b/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java
@@ -20,7 +20,6 @@
import static com.android.launcher3.LauncherState.FLAG_HIDE_BACK_BUTTON;
import static com.android.launcher3.LauncherState.NORMAL;
import static com.android.launcher3.LauncherState.NO_OFFSET;
-import static com.android.launcher3.util.DisplayController.CHANGE_ACTIVE_SCREEN;
import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
import static com.android.quickstep.SysUINavigationMode.Mode.TWO_BUTTONS;
import static com.android.quickstep.util.NavigationModeFeatureFlag.LIVE_TILE;
@@ -29,10 +28,9 @@
import android.animation.AnimatorSet;
import android.animation.ValueAnimator;
import android.app.ActivityOptions;
-import android.content.Context;
+import android.content.ComponentName;
import android.content.Intent;
import android.content.IntentSender;
-import android.content.ComponentName;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.CancellationSignal;
@@ -51,13 +49,11 @@
import com.android.launcher3.statehandlers.BackButtonAlphaHandler;
import com.android.launcher3.statehandlers.DepthController;
import com.android.launcher3.statemanager.StateManager.StateHandler;
-import com.android.launcher3.taskbar.TaskbarActivityContext;
import com.android.launcher3.taskbar.TaskbarController;
+import com.android.launcher3.taskbar.TaskbarManager;
import com.android.launcher3.taskbar.TaskbarStateHandler;
-import com.android.launcher3.taskbar.TaskbarView;
import com.android.launcher3.uioverrides.RecentsViewStateController;
import com.android.launcher3.util.ActivityOptionsWrapper;
-import com.android.launcher3.util.DisplayController;
import com.android.launcher3.util.ObjectWrapper;
import com.android.launcher3.util.UiThreadHelper;
import com.android.quickstep.RecentsModel;
@@ -67,6 +63,7 @@
import com.android.quickstep.SystemUiProxy;
import com.android.quickstep.TaskUtils;
import com.android.quickstep.TouchInteractionService;
+import com.android.quickstep.TouchInteractionService.TISBinder;
import com.android.quickstep.util.RemoteAnimationProvider;
import com.android.quickstep.util.RemoteFadeOutAnimationListener;
import com.android.quickstep.util.SplitSelectStateController;
@@ -88,8 +85,6 @@
private DepthController mDepthController = new DepthController(this);
private QuickstepTransitionManager mAppTransitionManager;
- private ServiceConnection mTisBinderConnection;
- protected TouchInteractionService.TISBinder mTisBinder;
/**
* Reusable command for applying the back button alpha on the background thread.
@@ -100,8 +95,20 @@
private OverviewActionsView mActionsView;
+ private @Nullable TaskbarManager mTaskbarManager;
private @Nullable TaskbarController mTaskbarController;
+ private final ServiceConnection mTisBinderConnection = new ServiceConnection() {
+ @Override
+ public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
+ mTaskbarManager = ((TISBinder) iBinder).getTaskbarManager();
+ mTaskbarManager.setLauncher(BaseQuickstepLauncher.this);
+ }
+
+ @Override
+ public void onServiceDisconnected(ComponentName componentName) { }
+ };
private final TaskbarStateHandler mTaskbarStateHandler = new TaskbarStateHandler(this);
+
// Will be updated when dragging from taskbar.
private @Nullable DragOptions mNextWorkspaceDragOptions = null;
private SplitPlaceholderView mSplitPlaceholderView;
@@ -111,24 +118,6 @@
super.onCreate(savedInstanceState);
SysUINavigationMode.INSTANCE.get(this).addModeChangeListener(this);
addMultiWindowModeChangedListener(mDepthController);
- setupTouchInteractionServiceBinder();
- }
-
- private void setupTouchInteractionServiceBinder() {
- Intent intent = new Intent(this, TouchInteractionService.class);
- mTisBinderConnection = new ServiceConnection() {
- @Override
- public void onServiceConnected(ComponentName componentName, IBinder binder) {
- mTisBinder = ((TouchInteractionService.TISBinder) binder);
- mTisBinder.setTaskbarOverviewProxyDelegate(mTaskbarController);
- }
-
- @Override
- public void onServiceDisconnected(ComponentName componentName) {
- mTisBinder = null;
- }
- };
- bindService(intent, mTisBinderConnection, 0);
}
@Override
@@ -136,15 +125,12 @@
mAppTransitionManager.onActivityDestroyed();
SysUINavigationMode.INSTANCE.get(this).removeModeChangeListener(this);
- if (mTaskbarController != null) {
- mTaskbarController.cleanup();
- mTaskbarController = null;
- if (mTisBinder != null) {
- mTisBinder.setTaskbarOverviewProxyDelegate(null);
- unbindService(mTisBinderConnection);
- }
- }
+
+ unbindService(mTisBinderConnection);
+ if (mTaskbarManager != null) {
+ mTaskbarManager.setLauncher(null);
+ }
super.onDestroy();
}
@@ -271,37 +257,12 @@
mAppTransitionManager = new QuickstepTransitionManager(this);
mAppTransitionManager.registerRemoteAnimations();
- addTaskbarIfNecessary();
- addOnDeviceProfileChangeListener(newDp -> addTaskbarIfNecessary());
+ bindService(new Intent(this, TouchInteractionService.class), mTisBinderConnection, 0);
+
}
- @Override
- public void onDisplayInfoChanged(Context context, DisplayController.Info info,
- int flags) {
- super.onDisplayInfoChanged(context, info, flags);
- if ((flags & CHANGE_ACTIVE_SCREEN) != 0) {
- addTaskbarIfNecessary();
- }
- }
-
- private void addTaskbarIfNecessary() {
- if (mTaskbarController != null) {
- mTaskbarController.cleanup();
- if (mTisBinder != null) {
- mTisBinder.setTaskbarOverviewProxyDelegate(null);
- }
- mTaskbarController = null;
- }
- if (mDeviceProfile.isTaskbarPresent) {
- TaskbarView taskbarViewOnHome = (TaskbarView) mHotseat.getTaskbarView();
- TaskbarActivityContext taskbarActivityContext = new TaskbarActivityContext(this);
- mTaskbarController = new TaskbarController(this,
- taskbarActivityContext.getTaskbarContainerView(), taskbarViewOnHome);
- mTaskbarController.init();
- if (mTisBinder != null) {
- mTisBinder.setTaskbarOverviewProxyDelegate(mTaskbarController);
- }
- }
+ public void setTaskbarController(TaskbarController taskbarController) {
+ mTaskbarController = taskbarController;
}
public <T extends OverviewActionsView> T getActionsView() {
@@ -340,14 +301,9 @@
}
@Override
- public boolean isViewInTaskbar(View v) {
- return mTaskbarController != null && mTaskbarController.isViewInTaskbar(v);
- }
-
public boolean supportsAdaptiveIconAnimation(View clickedView) {
return mAppTransitionManager.hasControlRemoteAppTransitionPermission()
- && FeatureFlags.ADAPTIVE_ICON_WINDOW_ANIM.get()
- && !isViewInTaskbar(clickedView);
+ && FeatureFlags.ADAPTIVE_ICON_WINDOW_ANIM.get();
}
@Override
@@ -388,7 +344,7 @@
@Override
public float[] getNormalOverviewScaleAndOffset() {
return SysUINavigationMode.getMode(this).hasGestures
- ? new float[] {1, NO_OFFSET, 1} : new float[] {1.1f, NO_OFFSET, NO_OFFSET};
+ ? new float[] {1, 1} : new float[] {1.1f, NO_OFFSET};
}
@Override
diff --git a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java
index 275dfda..80754a0 100644
--- a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java
+++ b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java
@@ -75,7 +75,6 @@
import com.android.launcher3.shortcuts.DeepShortcutView;
import com.android.launcher3.statehandlers.DepthController;
import com.android.launcher3.util.ActivityOptionsWrapper;
-import com.android.launcher3.util.DynamicResource;
import com.android.launcher3.util.MultiValueAlpha;
import com.android.launcher3.util.MultiValueAlpha.AlphaProperty;
import com.android.launcher3.util.RunnableList;
@@ -86,8 +85,8 @@
import com.android.quickstep.TaskViewUtils;
import com.android.quickstep.util.MultiValueUpdateListener;
import com.android.quickstep.util.RemoteAnimationProvider;
-import com.android.quickstep.util.StaggeredWorkspaceAnim;
import com.android.quickstep.util.SurfaceTransactionApplier;
+import com.android.quickstep.util.WorkspaceRevealAnim;
import com.android.quickstep.views.FloatingWidgetView;
import com.android.quickstep.views.RecentsView;
import com.android.systemui.shared.system.ActivityCompat;
@@ -1213,10 +1212,7 @@
}
});
} else {
- float velocityPxPerS = DynamicResource.provider(mLauncher)
- .getDimension(R.dimen.unlock_staggered_velocity_dp_per_s);
- anim.play(new StaggeredWorkspaceAnim(mLauncher, velocityPxPerS, false)
- .getAnimators());
+ anim.play(new WorkspaceRevealAnim(mLauncher, false).getAnimators());
}
}
}
@@ -1256,7 +1252,6 @@
final boolean launchingFromWidget = mV instanceof LauncherAppWidgetHostView;
final boolean launchingFromRecents = isLaunchingFromRecents(mV, appTargets);
- final boolean launchingFromTaskbar = mLauncher.isViewInTaskbar(mV);
if (launchingFromWidget) {
composeWidgetLaunchAnimator(anim, (LauncherAppWidgetHostView) mV, appTargets,
wallpaperTargets, nonAppTargets);
@@ -1267,8 +1262,6 @@
launcherClosing);
addCujInstrumentation(
anim, InteractionJankMonitorWrapper.CUJ_APP_LAUNCH_FROM_RECENTS);
- } else if (launchingFromTaskbar) {
- // TODO
} else {
composeIconLaunchAnimator(anim, mV, appTargets, wallpaperTargets, nonAppTargets,
launcherClosing);
diff --git a/quickstep/src/com/android/launcher3/hybridhotseat/HotseatEduDialog.java b/quickstep/src/com/android/launcher3/hybridhotseat/HotseatEduDialog.java
index a2ed211..14b0c5d 100644
--- a/quickstep/src/com/android/launcher3/hybridhotseat/HotseatEduDialog.java
+++ b/quickstep/src/com/android/launcher3/hybridhotseat/HotseatEduDialog.java
@@ -48,7 +48,7 @@
* User education dialog for hybrid hotseat. Allows user to migrate hotseat items to a new page in
* the workspace and shows predictions on the whole hotseat
*/
-public class HotseatEduDialog extends AbstractSlideInView implements Insettable {
+public class HotseatEduDialog extends AbstractSlideInView<Launcher> implements Insettable {
private static final int DEFAULT_CLOSE_DURATION = 200;
protected static final int FINAL_SCRIM_BG_COLOR = 0x88000000;
@@ -84,7 +84,7 @@
mHotseatWrapper = findViewById(R.id.hotseat_wrapper);
mSampleHotseat = findViewById(R.id.sample_prediction);
- DeviceProfile grid = mLauncher.getDeviceProfile();
+ DeviceProfile grid = mActivityContext.getDeviceProfile();
Rect padding = grid.getHotseatLayoutPadding();
mSampleHotseat.getLayoutParams().height = grid.cellHeightPx;
@@ -110,13 +110,13 @@
mHotseatEduController.moveHotseatItems();
mHotseatEduController.finishOnboarding();
- mLauncher.getStatsLogManager().logger().log(LAUNCHER_HOTSEAT_EDU_ACCEPT);
+ mActivityContext.getStatsLogManager().logger().log(LAUNCHER_HOTSEAT_EDU_ACCEPT);
}
private void onDismiss(View v) {
mHotseatEduController.showDimissTip();
mHotseatEduController.finishOnboarding();
- mLauncher.getStatsLogManager().logger().log(LAUNCHER_HOTSEAT_EDU_DENY);
+ mActivityContext.getStatsLogManager().logger().log(LAUNCHER_HOTSEAT_EDU_DENY);
handleClose(true);
}
@@ -131,12 +131,12 @@
int rightInset = insets.right - mInsets.right;
int bottomInset = insets.bottom - mInsets.bottom;
mInsets.set(insets);
- if (mLauncher.getOrientation() == Configuration.ORIENTATION_PORTRAIT) {
+ if (mActivityContext.getOrientation() == Configuration.ORIENTATION_PORTRAIT) {
setPadding(leftInset, getPaddingTop(), rightInset, 0);
mHotseatWrapper.setPadding(mHotseatWrapper.getPaddingLeft(), getPaddingTop(),
mHotseatWrapper.getPaddingRight(), bottomInset);
mHotseatWrapper.getLayoutParams().height =
- mLauncher.getDeviceProfile().hotseatBarSizePx + insets.bottom;
+ mActivityContext.getDeviceProfile().hotseatBarSizePx + insets.bottom;
} else {
setPadding(0, getPaddingTop(), 0, 0);
@@ -178,7 +178,7 @@
}
private void populatePreview(List<WorkspaceItemInfo> predictions) {
- for (int i = 0; i < mLauncher.getDeviceProfile().numShownHotseatIcons; i++) {
+ for (int i = 0; i < mActivityContext.getDeviceProfile().numShownHotseatIcons; i++) {
WorkspaceItemInfo info = predictions.get(i);
PredictedAppIcon icon = PredictedAppIcon.createIcon(mSampleHotseat, info);
icon.setEnabled(false);
@@ -194,13 +194,13 @@
*/
public void show(List<WorkspaceItemInfo> predictions) {
if (getParent() != null
- || predictions.size() < mLauncher.getDeviceProfile().numShownHotseatIcons
+ || predictions.size() < mActivityContext.getDeviceProfile().numShownHotseatIcons
|| mHotseatEduController == null) {
return;
}
- AbstractFloatingView.closeAllOpenViews(mLauncher);
+ AbstractFloatingView.closeAllOpenViews(mActivityContext);
attachToContainer();
- mLauncher.getStatsLogManager().logger().log(LAUNCHER_HOTSEAT_EDU_SEEN);
+ mActivityContext.getStatsLogManager().logger().log(LAUNCHER_HOTSEAT_EDU_SEEN);
animateOpen();
populatePreview(predictions);
}
diff --git a/quickstep/src/com/android/launcher3/taskbar/ButtonProvider.java b/quickstep/src/com/android/launcher3/taskbar/ButtonProvider.java
index 0d4130d..540f748 100644
--- a/quickstep/src/com/android/launcher3/taskbar/ButtonProvider.java
+++ b/quickstep/src/com/android/launcher3/taskbar/ButtonProvider.java
@@ -16,12 +16,17 @@
package com.android.launcher3.taskbar;
+import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_BACK;
+import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_HOME;
+import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_IME_SWITCH;
+import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_RECENTS;
+
import android.annotation.DrawableRes;
-import android.content.Context;
import android.view.View;
import android.widget.ImageView;
import com.android.launcher3.R;
+import com.android.launcher3.taskbar.TaskbarNavButtonController.TaskbarButton;
/**
* Creates Buttons for Taskbar for 3 button nav.
@@ -29,47 +34,46 @@
*/
public class ButtonProvider {
- private int mMarginLeftRight;
- private final Context mContext;
+ private final int mMarginLeftRight;
+ private final TaskbarActivityContext mContext;
- public ButtonProvider(Context context) {
+ public ButtonProvider(TaskbarActivityContext context) {
mContext = context;
- }
-
- public void setMarginLeftRight(int margin) {
- mMarginLeftRight = margin;
+ mMarginLeftRight = context.getResources()
+ .getDimensionPixelSize(R.dimen.taskbar_icon_spacing);
}
public View getBack() {
// Back button
- return getButtonForDrawable(R.drawable.ic_sysbar_back);
+ return getButtonForDrawable(R.drawable.ic_sysbar_back, BUTTON_BACK);
}
public View getDown() {
// Ime down button
- return getButtonForDrawable(R.drawable.ic_sysbar_back);
+ return getButtonForDrawable(R.drawable.ic_sysbar_back, BUTTON_BACK);
}
public View getHome() {
// Home button
- return getButtonForDrawable(R.drawable.ic_sysbar_home);
+ return getButtonForDrawable(R.drawable.ic_sysbar_home, BUTTON_HOME);
}
public View getRecents() {
// Recents button
- return getButtonForDrawable(R.drawable.ic_sysbar_recent);
+ return getButtonForDrawable(R.drawable.ic_sysbar_recent, BUTTON_RECENTS);
}
public View getImeSwitcher() {
// IME Switcher Button
- return getButtonForDrawable(R.drawable.ic_ime_switcher);
+ return getButtonForDrawable(R.drawable.ic_ime_switcher, BUTTON_IME_SWITCH);
}
- private View getButtonForDrawable(@DrawableRes int drawableId) {
+ private View getButtonForDrawable(@DrawableRes int drawableId, @TaskbarButton int buttonType) {
ImageView buttonView = new ImageView(mContext);
buttonView.setImageResource(drawableId);
buttonView.setBackgroundResource(R.drawable.taskbar_icon_click_feedback_roundrect);
buttonView.setPadding(mMarginLeftRight, 0, mMarginLeftRight, 0);
+ buttonView.setOnClickListener(view -> mContext.onNavigationButtonClick(buttonType));
return buttonView;
}
diff --git a/quickstep/src/com/android/launcher3/taskbar/ImeBarView.java b/quickstep/src/com/android/launcher3/taskbar/ImeBarView.java
index bb3669b..287caab 100644
--- a/quickstep/src/com/android/launcher3/taskbar/ImeBarView.java
+++ b/quickstep/src/com/android/launcher3/taskbar/ImeBarView.java
@@ -16,9 +16,6 @@
package com.android.launcher3.taskbar;
-import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_BACK;
-import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_IME_SWITCH;
-
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
@@ -29,7 +26,6 @@
public class ImeBarView extends RelativeLayout {
private ButtonProvider mButtonProvider;
- private TaskbarController.TaskbarViewCallbacks mControllerCallbacks;
private View mImeView;
public ImeBarView(Context context) {
@@ -44,12 +40,9 @@
super(context, attrs, defStyleAttr);
}
- public void construct(ButtonProvider buttonProvider) {
+ public void init(ButtonProvider buttonProvider) {
mButtonProvider = buttonProvider;
- }
- public void init(TaskbarController.TaskbarViewCallbacks taskbarCallbacks) {
- mControllerCallbacks = taskbarCallbacks;
ActivityContext context = getActivityContext();
RelativeLayout.LayoutParams imeParams = new RelativeLayout.LayoutParams(
context.getDeviceProfile().iconSizePx,
@@ -64,24 +57,16 @@
// Down Arrow
View downView = mButtonProvider.getDown();
- downView.setOnClickListener(view -> mControllerCallbacks.onNavigationButtonClick(
- BUTTON_BACK));
downView.setLayoutParams(downParams);
downView.setRotation(-90);
addView(downView);
// IME switcher button
mImeView = mButtonProvider.getImeSwitcher();
- mImeView.setOnClickListener(view -> mControllerCallbacks.onNavigationButtonClick(
- BUTTON_IME_SWITCH));
mImeView.setLayoutParams(imeParams);
addView(mImeView);
}
- public void cleanup() {
- removeAllViews();
- }
-
public void setImeSwitcherVisibility(boolean show) {
mImeView.setVisibility(show ? VISIBLE : GONE);
}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
index 3af51d5..70f2788 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
@@ -15,56 +15,164 @@
*/
package com.android.launcher3.taskbar;
-import android.content.ContextWrapper;
+import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
+import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
+import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
+
+import static com.android.systemui.shared.system.WindowManagerWrapper.ITYPE_BOTTOM_TAPPABLE_ELEMENT;
+import static com.android.systemui.shared.system.WindowManagerWrapper.ITYPE_EXTRA_NAVIGATION_BAR;
+
+import android.app.ActivityOptions;
+import android.content.ActivityNotFoundException;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.LauncherApps;
+import android.graphics.PixelFormat;
import android.graphics.Point;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
+import android.os.Process;
+import android.os.SystemProperties;
+import android.util.Log;
+import android.view.ContextThemeWrapper;
+import android.view.Display;
+import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
+import android.view.WindowManager;
+import android.widget.Toast;
+import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import com.android.launcher3.BaseQuickstepLauncher;
+import com.android.launcher3.AbstractFloatingView;
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.DragSource;
import com.android.launcher3.DropTarget;
+import com.android.launcher3.LauncherSettings.Favorites;
import com.android.launcher3.R;
import com.android.launcher3.dragndrop.DragController;
import com.android.launcher3.dragndrop.DragOptions;
import com.android.launcher3.dragndrop.DragView;
import com.android.launcher3.dragndrop.DraggableView;
+import com.android.launcher3.folder.Folder;
+import com.android.launcher3.folder.FolderIcon;
+import com.android.launcher3.model.data.FolderInfo;
import com.android.launcher3.model.data.ItemInfo;
+import com.android.launcher3.model.data.WorkspaceItemInfo;
+import com.android.launcher3.taskbar.TaskbarNavButtonController.TaskbarButton;
+import com.android.launcher3.touch.ItemClickHandler;
+import com.android.launcher3.util.PackageManagerHelper;
+import com.android.launcher3.util.Themes;
+import com.android.launcher3.util.TraceHelper;
import com.android.launcher3.views.ActivityContext;
-import com.android.launcher3.views.BaseDragLayer;
+import com.android.quickstep.SysUINavigationMode;
+import com.android.quickstep.SysUINavigationMode.Mode;
+import com.android.systemui.shared.recents.model.Task;
+import com.android.systemui.shared.system.ActivityManagerWrapper;
+import com.android.systemui.shared.system.WindowManagerWrapper;
/**
* The {@link ActivityContext} with which we inflate Taskbar-related Views. This allows UI elements
* that are used by both Launcher and Taskbar (such as Folder) to reference a generic
* ActivityContext and BaseDragLayer instead of the Launcher activity and its DragLayer.
*/
-public class TaskbarActivityContext extends ContextWrapper implements ActivityContext {
+public class TaskbarActivityContext extends ContextThemeWrapper implements ActivityContext {
+
+ private static final boolean ENABLE_THREE_BUTTON_TASKBAR =
+ SystemProperties.getBoolean("persist.debug.taskbar_three_button", false);
+ private static final String TAG = "TaskbarActivityContext";
+
+ private static final String WINDOW_TITLE = "Taskbar";
private final DeviceProfile mDeviceProfile;
private final LayoutInflater mLayoutInflater;
private final TaskbarContainerView mTaskbarContainerView;
+ private final TaskbarIconController mIconController;
private final MyDragController mDragController;
- public TaskbarActivityContext(BaseQuickstepLauncher launcher) {
- super(launcher);
- mDeviceProfile = launcher.getDeviceProfile().copy(this);
+ private final WindowManager mWindowManager;
+ private WindowManager.LayoutParams mWindowLayoutParams;
+
+ private final SysUINavigationMode.Mode mNavMode;
+ private final TaskbarNavButtonController mNavButtonController;
+
+ private final boolean mIsSafeModeEnabled;
+
+ @NonNull
+ private TaskbarUIController mUIController = TaskbarUIController.DEFAULT;
+
+ private final View.OnClickListener mOnTaskbarIconClickListener;
+ private final View.OnLongClickListener mOnTaskbarIconLongClickListener;
+
+ public TaskbarActivityContext(Context windowContext, DeviceProfile dp,
+ TaskbarNavButtonController buttonController) {
+ super(windowContext, Themes.getActivityThemeRes(windowContext));
+ mDeviceProfile = dp;
+ mNavButtonController = buttonController;
+ mNavMode = SysUINavigationMode.getMode(windowContext);
+ mIsSafeModeEnabled = TraceHelper.allowIpcs("isSafeMode",
+ () -> getPackageManager().isSafeMode());
+
+ mOnTaskbarIconLongClickListener =
+ new TaskbarDragController(this)::startSystemDragOnLongClick;
+ mOnTaskbarIconClickListener = this::onTaskbarIconClicked;
+
float taskbarIconSize = getResources().getDimension(R.dimen.taskbar_icon_size);
float iconScale = taskbarIconSize / mDeviceProfile.iconSizePx;
mDeviceProfile.updateIconSize(iconScale, getResources());
mLayoutInflater = LayoutInflater.from(this).cloneInContext(this);
-
mTaskbarContainerView = (TaskbarContainerView) mLayoutInflater
.inflate(R.layout.taskbar, null, false);
+ mIconController = new TaskbarIconController(this, mTaskbarContainerView);
mDragController = new MyDragController(this);
+
+ Display display = windowContext.getDisplay();
+ Context c = display.getDisplayId() == Display.DEFAULT_DISPLAY
+ ? windowContext.getApplicationContext()
+ : windowContext.getApplicationContext().createDisplayContext(display);
+ mWindowManager = c.getSystemService(WindowManager.class);
}
- public TaskbarContainerView getTaskbarContainerView() {
- return mTaskbarContainerView;
+ public void init() {
+ mWindowLayoutParams = new WindowManager.LayoutParams(
+ MATCH_PARENT,
+ mDeviceProfile.taskbarSize,
+ TYPE_APPLICATION_OVERLAY,
+ WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
+ PixelFormat.TRANSLUCENT);
+ mWindowLayoutParams.setTitle(WINDOW_TITLE);
+ mWindowLayoutParams.packageName = getPackageName();
+ mWindowLayoutParams.gravity = Gravity.BOTTOM;
+ mWindowLayoutParams.setFitInsetsTypes(0);
+ mWindowLayoutParams.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING;
+ mWindowLayoutParams.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
+ mWindowLayoutParams.setSystemApplicationOverlay(true);
+
+ WindowManagerWrapper wmWrapper = WindowManagerWrapper.getInstance();
+ wmWrapper.setProvidesInsetsTypes(
+ mWindowLayoutParams,
+ new int[] { ITYPE_EXTRA_NAVIGATION_BAR, ITYPE_BOTTOM_TAPPABLE_ELEMENT }
+ );
+
+ mIconController.init(mOnTaskbarIconClickListener, mOnTaskbarIconLongClickListener);
+ mWindowManager.addView(mTaskbarContainerView, mWindowLayoutParams);
+ }
+
+ /**
+ * Updates the TaskbarContainer height (pass deviceProfile.taskbarSize to reset).
+ */
+ public void setTaskbarWindowHeight(int height) {
+ if (mWindowLayoutParams.height == height) {
+ return;
+ }
+ mWindowLayoutParams.height = height;
+ mWindowManager.updateViewLayout(mTaskbarContainerView, mWindowLayoutParams);
+ }
+
+ public boolean canShowNavButtons() {
+ return ENABLE_THREE_BUTTON_TASKBAR && mNavMode == Mode.THREE_BUTTONS;
}
@Override
@@ -73,7 +181,7 @@
}
@Override
- public BaseDragLayer<TaskbarActivityContext> getDragLayer() {
+ public TaskbarContainerView getDragLayer() {
return mTaskbarContainerView;
}
@@ -92,6 +200,103 @@
return mDragController;
}
+ /**
+ * Sets a new data-source for this taskbar instance
+ */
+ public void setUIController(@NonNull TaskbarUIController uiController) {
+ mUIController.onDestroy();
+ mUIController = uiController;
+ mIconController.setUIController(mUIController);
+ mUIController.onCreate();
+ }
+
+ /**
+ * Called when this instance of taskbar is no longer needed
+ */
+ public void onDestroy() {
+ setUIController(TaskbarUIController.DEFAULT);
+ mIconController.onDestroy();
+ mWindowManager.removeViewImmediate(mTaskbarContainerView);
+ }
+
+ void onNavigationButtonClick(@TaskbarButton int buttonType) {
+ mNavButtonController.onButtonClick(buttonType);
+ }
+
+ public TaskbarIconController getIconController() {
+ return mIconController;
+ }
+
+ /**
+ * Updates the TaskbarContainer to MATCH_PARENT vs original Taskbar size.
+ */
+ protected void setTaskbarWindowFullscreen(boolean fullscreen) {
+ setTaskbarWindowHeight(fullscreen ? MATCH_PARENT : getDeviceProfile().taskbarSize);
+ }
+
+ protected void onTaskbarIconClicked(View view) {
+ Object tag = view.getTag();
+ if (tag instanceof Task) {
+ Task task = (Task) tag;
+ ActivityManagerWrapper.getInstance().startActivityFromRecents(task.key,
+ ActivityOptions.makeBasic());
+ } else if (tag instanceof FolderInfo) {
+ FolderIcon folderIcon = (FolderIcon) view;
+ Folder folder = folderIcon.getFolder();
+ setTaskbarWindowFullscreen(true);
+
+ getDragLayer().post(() -> {
+ folder.animateOpen();
+
+ folder.iterateOverItems((itemInfo, itemView) -> {
+ itemView.setOnClickListener(mOnTaskbarIconClickListener);
+ itemView.setOnLongClickListener(mOnTaskbarIconLongClickListener);
+ // To play haptic when dragging, like other Taskbar items do.
+ itemView.setHapticFeedbackEnabled(true);
+ return false;
+ });
+ });
+ } else if (tag instanceof WorkspaceItemInfo) {
+ WorkspaceItemInfo info = (WorkspaceItemInfo) tag;
+ if (info.isDisabled()) {
+ ItemClickHandler.handleDisabledItemClicked(info, this);
+ } else {
+ Intent intent = new Intent(info.getIntent())
+ .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ try {
+ if (mIsSafeModeEnabled && !PackageManagerHelper.isSystemApp(this, intent)) {
+ Toast.makeText(this, R.string.safemode_shortcut_error,
+ Toast.LENGTH_SHORT).show();
+ } else if (info.isPromise()) {
+ intent = new PackageManagerHelper(this)
+ .getMarketIntent(info.getTargetPackage())
+ .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ startActivity(intent);
+
+ } else if (info.itemType == Favorites.ITEM_TYPE_DEEP_SHORTCUT) {
+ String id = info.getDeepShortcutId();
+ String packageName = intent.getPackage();
+ getSystemService(LauncherApps.class)
+ .startShortcut(packageName, id, null, null, info.user);
+ } else if (info.user.equals(Process.myUserHandle())) {
+ startActivity(intent);
+ } else {
+ getSystemService(LauncherApps.class).startMainActivity(
+ intent.getComponent(), info.user, intent.getSourceBounds(), null);
+ }
+ } catch (NullPointerException | ActivityNotFoundException | SecurityException e) {
+ Toast.makeText(this, R.string.activity_not_found, Toast.LENGTH_SHORT)
+ .show();
+ Log.e(TAG, "Unable to launch. tag=" + info + " intent=" + intent, e);
+ }
+ }
+ } else {
+ Log.e(TAG, "Unknown type clicked: " + tag);
+ }
+
+ AbstractFloatingView.closeAllOpenViews(this);
+ }
+
private static class MyDragController extends DragController<TaskbarActivityContext> {
MyDragController(TaskbarActivityContext activity) {
super(activity);
@@ -106,7 +311,8 @@
}
@Override
- protected void exitDrag() { }
+ protected void exitDrag() {
+ }
@Override
protected DropTarget getDefaultDropTarget(int[] dropCoordinates) {
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarAnimationController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarAnimationController.java
index 29f6935..815efb9 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarAnimationController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarAnimationController.java
@@ -21,6 +21,7 @@
import com.android.launcher3.BaseQuickstepLauncher;
import com.android.launcher3.Utilities;
+import com.android.launcher3.taskbar.TaskbarController.TaskbarAnimationControllerCallbacks;
import com.android.quickstep.AnimatedFloat;
import com.android.quickstep.SystemUiProxy;
import com.android.systemui.shared.system.QuickStepContract;
@@ -34,7 +35,7 @@
private static final long IME_VISIBILITY_ALPHA_DURATION = 120;
private final BaseQuickstepLauncher mLauncher;
- private final TaskbarController.TaskbarAnimationControllerCallbacks mTaskbarCallbacks;
+ private final TaskbarAnimationControllerCallbacks mTaskbarCallbacks;
// Background alpha.
private final AnimatedFloat mTaskbarBackgroundAlpha = new AnimatedFloat(
@@ -55,7 +56,7 @@
this::updateTranslationY);
public TaskbarAnimationController(BaseQuickstepLauncher launcher,
- TaskbarController.TaskbarAnimationControllerCallbacks taskbarCallbacks) {
+ TaskbarAnimationControllerCallbacks taskbarCallbacks) {
mLauncher = launcher;
mTaskbarCallbacks = taskbarCallbacks;
}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarContainerView.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarContainerView.java
index 621bba7..5034791 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarContainerView.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarContainerView.java
@@ -15,9 +15,6 @@
*/
package com.android.launcher3.taskbar;
-import static com.android.systemui.shared.system.ViewTreeObserverWrapper.InsetsInfo.TOUCHABLE_INSETS_FRAME;
-import static com.android.systemui.shared.system.ViewTreeObserverWrapper.InsetsInfo.TOUCHABLE_INSETS_REGION;
-
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
@@ -32,22 +29,21 @@
import com.android.launcher3.util.TouchController;
import com.android.launcher3.views.BaseDragLayer;
import com.android.systemui.shared.system.ViewTreeObserverWrapper;
+import com.android.systemui.shared.system.ViewTreeObserverWrapper.InsetsInfo;
+import com.android.systemui.shared.system.ViewTreeObserverWrapper.OnComputeInsetsListener;
/**
* Top-level ViewGroup that hosts the TaskbarView as well as Views created by it such as Folder.
*/
public class TaskbarContainerView extends BaseDragLayer<TaskbarActivityContext> {
- private final int[] mTempLoc = new int[2];
private final int mFolderMargin;
private final Paint mTaskbarBackgroundPaint;
- // Initialized in TaskbarController constructor.
- private TaskbarController.TaskbarContainerViewCallbacks mControllerCallbacks;
-
- // Initialized in init.
+ private TaskbarIconController.Callbacks mControllerCallbacks;
private TaskbarView mTaskbarView;
- private ViewTreeObserverWrapper.OnComputeInsetsListener mTaskbarInsetsComputer;
+
+ private final OnComputeInsetsListener mTaskbarInsetsComputer = this::onComputeTaskbarInsets;
public TaskbarContainerView(@NonNull Context context) {
this(context, null);
@@ -68,15 +64,6 @@
mFolderMargin = getResources().getDimensionPixelSize(R.dimen.taskbar_folder_margin);
mTaskbarBackgroundPaint = new Paint();
mTaskbarBackgroundPaint.setColor(getResources().getColor(R.color.taskbar_background));
- }
-
- protected void construct(TaskbarController.TaskbarContainerViewCallbacks callbacks) {
- mControllerCallbacks = callbacks;
- }
-
- protected void init(TaskbarView taskbarView) {
- mTaskbarView = taskbarView;
- mTaskbarInsetsComputer = createTaskbarInsetsComputer();
recreateControllers();
}
@@ -85,46 +72,24 @@
mControllers = new TouchController[0];
}
- private ViewTreeObserverWrapper.OnComputeInsetsListener createTaskbarInsetsComputer() {
- return insetsInfo -> {
- if (mControllerCallbacks.isTaskbarTouchable()) {
- // Accept touches anywhere in our bounds.
- insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_FRAME);
- } else {
- // Let touches pass through us.
- insetsInfo.touchableRegion.setEmpty();
- insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION);
- }
-
- // TaskbarContainerView provides insets to other apps based on contentInsets. These
- // insets should stay consistent even if we expand TaskbarContainerView's bounds, e.g.
- // to show a floating view like Folder. Thus, we set the contentInsets to be where
- // mTaskbarView is, since its position never changes and insets rather than overlays.
- int[] loc = mTempLoc;
- float scale = mTaskbarView.getScaleX();
- float translationY = mTaskbarView.getTranslationY();
- mTaskbarView.setScaleX(1);
- mTaskbarView.setScaleY(1);
- mTaskbarView.setTranslationY(0);
- mTaskbarView.getLocationInWindow(loc);
- mTaskbarView.setScaleX(scale);
- mTaskbarView.setScaleY(scale);
- mTaskbarView.setTranslationY(translationY);
- insetsInfo.contentInsets.left = loc[0];
- insetsInfo.contentInsets.top = loc[1];
- insetsInfo.contentInsets.right = getWidth() - (loc[0] + mTaskbarView.getWidth());
- insetsInfo.contentInsets.bottom = getHeight() - (loc[1] + mTaskbarView.getHeight());
- };
+ public void init(TaskbarIconController.Callbacks callbacks, TaskbarView taskbarView) {
+ mControllerCallbacks = callbacks;
+ mTaskbarView = taskbarView;
}
- protected void cleanup() {
+ private void onComputeTaskbarInsets(InsetsInfo insetsInfo) {
+ if (mControllerCallbacks != null) {
+ mControllerCallbacks.updateInsetsTouchability(insetsInfo);
+ }
+ }
+
+ protected void onDestroy() {
ViewTreeObserverWrapper.removeOnComputeInsetsListener(mTaskbarInsetsComputer);
}
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
-
ViewTreeObserverWrapper.addOnComputeInsetsListener(getViewTreeObserver(),
mTaskbarInsetsComputer);
}
@@ -133,7 +98,7 @@
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
- cleanup();
+ onDestroy();
}
@Override
@@ -143,10 +108,25 @@
return true;
}
+ public void updateImeBarVisibilityAlpha(float alpha) {
+ if (mControllerCallbacks != null) {
+ mControllerCallbacks.updateImeBarVisibilityAlpha(alpha);
+ }
+ }
+
@Override
public void onViewRemoved(View child) {
super.onViewRemoved(child);
- mControllerCallbacks.onViewRemoved();
+ if (mControllerCallbacks != null) {
+ mControllerCallbacks.onContainerViewRemoved();
+ }
+ }
+
+ @Override
+ protected void dispatchDraw(Canvas canvas) {
+ canvas.drawRect(0, canvas.getHeight() - mTaskbarView.getHeight(), canvas.getWidth(),
+ canvas.getHeight(), mTaskbarBackgroundPaint);
+ super.dispatchDraw(canvas);
}
/**
@@ -158,16 +138,6 @@
return boundingBox;
}
- protected TaskbarActivityContext getTaskbarActivityContext() {
- return mActivity;
- }
-
- @Override
- protected void dispatchDraw(Canvas canvas) {
- canvas.drawRect(0, canvas.getHeight() - mTaskbarView.getHeight(), canvas.getWidth(),
- canvas.getHeight(), mTaskbarBackgroundPaint);
- super.dispatchDraw(canvas);
- }
/**
* Sets the alpha of the background color behind all the Taskbar contents.
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarController.java
index 6084e10..cdae5be 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarController.java
@@ -15,105 +15,83 @@
*/
package com.android.launcher3.taskbar;
-import static android.view.View.GONE;
-import static android.view.View.INVISIBLE;
-import static android.view.View.VISIBLE;
-import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
-import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
-import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
-
-import static com.android.systemui.shared.system.WindowManagerWrapper.ITYPE_BOTTOM_TAPPABLE_ELEMENT;
-import static com.android.systemui.shared.system.WindowManagerWrapper.ITYPE_EXTRA_NAVIGATION_BAR;
-
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
-import android.app.ActivityOptions;
-import android.graphics.PixelFormat;
-import android.graphics.Point;
import android.graphics.Rect;
-import android.inputmethodservice.InputMethodService;
-import android.view.Gravity;
+import android.graphics.RectF;
import android.view.MotionEvent;
-import android.view.View;
-import android.view.WindowManager;
import androidx.annotation.Nullable;
-import com.android.launcher3.AbstractFloatingView;
import com.android.launcher3.BaseQuickstepLauncher;
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.LauncherState;
import com.android.launcher3.QuickstepTransitionManager;
import com.android.launcher3.R;
-import com.android.launcher3.anim.AlphaUpdateListener;
+import com.android.launcher3.Utilities;
import com.android.launcher3.anim.PendingAnimation;
-import com.android.launcher3.folder.Folder;
-import com.android.launcher3.folder.FolderIcon;
-import com.android.launcher3.model.data.FolderInfo;
-import com.android.launcher3.model.data.ItemInfo;
import com.android.launcher3.states.StateAnimationConfig;
-import com.android.launcher3.taskbar.TaskbarNavButtonController.TaskbarButton;
-import com.android.launcher3.touch.ItemClickHandler;
-import com.android.launcher3.views.ActivityContext;
-import com.android.quickstep.AnimatedFloat;
-import com.android.quickstep.SysUINavigationMode;
-import com.android.quickstep.TouchInteractionService.TaskbarOverviewProxyDelegate;
-import com.android.systemui.shared.recents.model.Task;
-import com.android.systemui.shared.system.ActivityManagerWrapper;
-import com.android.systemui.shared.system.WindowManagerWrapper;
+
/**
- * Interfaces with Launcher/WindowManager/SystemUI to determine what to show in TaskbarView.
+ * A data source which integrates with a Launcher instance
+ * TODO: Rename to have Launcher prefix
*/
-public class TaskbarController implements TaskbarOverviewProxyDelegate {
- private static final String WINDOW_TITLE = "Taskbar";
-
- private final TaskbarContainerView mTaskbarContainerView;
- private final TaskbarView mTaskbarViewInApp;
- private final TaskbarView mTaskbarViewOnHome;
- private final ImeBarView mImeBarView;
+public class TaskbarController extends TaskbarUIController {
private final BaseQuickstepLauncher mLauncher;
- private final WindowManager mWindowManager;
- // Layout width and height of the Taskbar in the default state.
- private final Point mTaskbarSize;
private final TaskbarStateHandler mTaskbarStateHandler;
private final TaskbarAnimationController mTaskbarAnimationController;
private final TaskbarHotseatController mHotseatController;
- private final TaskbarDragController mDragController;
- private final TaskbarNavButtonController mNavButtonController;
- // Initialized in init().
- private WindowManager.LayoutParams mWindowLayoutParams;
- private SysUINavigationMode.Mode mNavMode = SysUINavigationMode.Mode.NO_BUTTON;
- private final SysUINavigationMode.NavigationModeChangeListener mNavigationModeChangeListener =
- this::onNavModeChanged;
+ private final TaskbarActivityContext mContext;
+ final TaskbarContainerView mTaskbarContainerView;
+ final TaskbarView mTaskbarView;
private @Nullable Animator mAnimator;
private boolean mIsAnimatingToLauncher;
- public TaskbarController(BaseQuickstepLauncher launcher,
- TaskbarContainerView taskbarContainerView, TaskbarView taskbarViewOnHome) {
+ public TaskbarController(BaseQuickstepLauncher launcher, TaskbarActivityContext context) {
+ mContext = context;
+ mTaskbarContainerView = context.getDragLayer();
+ mTaskbarView = mTaskbarContainerView.findViewById(R.id.taskbar_view);
+
mLauncher = launcher;
- mTaskbarContainerView = taskbarContainerView;
- mTaskbarContainerView.construct(createTaskbarContainerViewCallbacks());
- ButtonProvider buttonProvider = new ButtonProvider(launcher);
- mTaskbarViewInApp = mTaskbarContainerView.findViewById(R.id.taskbar_view);
- mTaskbarViewInApp.construct(createTaskbarViewCallbacks(), buttonProvider);
- mTaskbarViewOnHome = taskbarViewOnHome;
- mTaskbarViewOnHome.construct(createTaskbarViewCallbacks(), buttonProvider);
- mImeBarView = mTaskbarContainerView.findViewById(R.id.ime_bar_view);
- mImeBarView.construct(buttonProvider);
- mNavButtonController = new TaskbarNavButtonController(launcher);
- mWindowManager = mLauncher.getWindowManager();
- mTaskbarSize = new Point(MATCH_PARENT, mLauncher.getDeviceProfile().taskbarSize);
mTaskbarStateHandler = mLauncher.getTaskbarStateHandler();
mTaskbarAnimationController = new TaskbarAnimationController(mLauncher,
createTaskbarAnimationControllerCallbacks());
- mHotseatController = new TaskbarHotseatController(mLauncher,
- createTaskbarHotseatControllerCallbacks());
- mDragController = new TaskbarDragController(mLauncher);
+ mHotseatController = new TaskbarHotseatController(
+ mLauncher, mTaskbarView::updateHotseatItems);
+ }
+
+ @Override
+ protected void onCreate() {
+ mTaskbarStateHandler.setAnimationController(mTaskbarAnimationController);
+ mTaskbarAnimationController.init();
+ mHotseatController.init();
+ setTaskbarViewVisible(!mLauncher.hasBeenResumed());
+ alignRealHotseatWithTaskbar();
+ mLauncher.setTaskbarController(this);
+ }
+
+ @Override
+ protected void onDestroy() {
+ if (mAnimator != null) {
+ // End this first, in case it relies on properties that are about to be cleaned up.
+ mAnimator.end();
+ }
+ mTaskbarStateHandler.setAnimationController(null);
+ mTaskbarAnimationController.cleanup();
+ mHotseatController.cleanup();
+ setTaskbarViewVisible(true);
+ mLauncher.getHotseat().setIconsAlpha(1f);
+ mLauncher.setTaskbarController(null);
+ }
+
+ @Override
+ protected boolean isTaskbarTouchable() {
+ return !mIsAnimatingToLauncher;
}
private TaskbarAnimationControllerCallbacks createTaskbarAnimationControllerCallbacks() {
@@ -125,245 +103,34 @@
@Override
public void updateTaskbarVisibilityAlpha(float alpha) {
- mTaskbarViewInApp.setAlpha(alpha);
- mTaskbarViewOnHome.setAlpha(alpha);
+ mTaskbarView.setAlpha(alpha);
}
@Override
public void updateImeBarVisibilityAlpha(float alpha) {
- if (mNavMode != SysUINavigationMode.Mode.THREE_BUTTONS) {
- // TODO Remove sysui IME bar for gesture nav as well
- return;
- }
- mImeBarView.setAlpha(alpha);
- mImeBarView.setVisibility(alpha == 0 ? GONE : VISIBLE);
+ mTaskbarContainerView.updateImeBarVisibilityAlpha(alpha);
}
@Override
public void updateTaskbarScale(float scale) {
- mTaskbarViewInApp.setScaleX(scale);
- mTaskbarViewInApp.setScaleY(scale);
+ mTaskbarView.setScaleX(scale);
+ mTaskbarView.setScaleY(scale);
}
@Override
public void updateTaskbarTranslationY(float translationY) {
if (translationY < 0) {
// Resize to accommodate the max translation we'll reach.
- setTaskbarWindowHeight(mTaskbarSize.y
+ mContext.setTaskbarWindowHeight(mContext.getDeviceProfile().taskbarSize
+ mLauncher.getHotseat().getTaskbarOffsetY());
} else {
- setTaskbarWindowHeight(mTaskbarSize.y);
+ mContext.setTaskbarWindowHeight(mContext.getDeviceProfile().taskbarSize);
}
- mTaskbarViewInApp.setTranslationY(translationY);
+ mTaskbarView.setTranslationY(translationY);
}
};
}
- private TaskbarContainerViewCallbacks createTaskbarContainerViewCallbacks() {
- return new TaskbarContainerViewCallbacks() {
- @Override
- public void onViewRemoved() {
- // Ensure no other children present (like Folders, etc)
- for (int i = 0; i < mTaskbarContainerView.getChildCount(); i++) {
- View v = mTaskbarContainerView.getChildAt(i);
- if (!((v instanceof TaskbarView) || (v instanceof ImeBarView))){
- return;
- }
- }
- setTaskbarWindowFullscreen(false);
- }
-
- @Override
- public boolean isTaskbarTouchable() {
- return mTaskbarContainerView.getAlpha() > AlphaUpdateListener.ALPHA_CUTOFF_THRESHOLD
- && (mTaskbarViewInApp.getVisibility() == VISIBLE
- || mImeBarView.getVisibility() == VISIBLE)
- && !mIsAnimatingToLauncher;
- }
- };
- }
-
- private TaskbarViewCallbacks createTaskbarViewCallbacks() {
- return new TaskbarViewCallbacks() {
- @Override
- public View.OnClickListener getItemOnClickListener() {
- return view -> {
- Object tag = view.getTag();
- if (tag instanceof Task) {
- Task task = (Task) tag;
- ActivityManagerWrapper.getInstance().startActivityFromRecents(task.key,
- ActivityOptions.makeBasic());
- } else if (tag instanceof FolderInfo) {
- FolderIcon folderIcon = (FolderIcon) view;
- Folder folder = folderIcon.getFolder();
-
- setTaskbarWindowFullscreen(true);
-
- mTaskbarContainerView.post(() -> {
- folder.animateOpen();
-
- folder.iterateOverItems((itemInfo, itemView) -> {
- itemView.setOnClickListener(getItemOnClickListener());
- itemView.setOnLongClickListener(getItemOnLongClickListener());
- // To play haptic when dragging, like other Taskbar items do.
- itemView.setHapticFeedbackEnabled(true);
- return false;
- });
- });
- } else {
- ItemClickHandler.INSTANCE.onClick(view);
- }
-
- AbstractFloatingView.closeAllOpenViews(
- mTaskbarContainerView.getTaskbarActivityContext());
- };
- }
-
- @Override
- public View.OnLongClickListener getItemOnLongClickListener() {
- return mDragController::startSystemDragOnLongClick;
- }
-
- @Override
- public int getEmptyHotseatViewVisibility(TaskbarView taskbarView) {
- // When on the home screen, we want the empty hotseat views to take up their full
- // space so that the others line up with the home screen hotseat.
- boolean isOnHomeScreen = taskbarView == mTaskbarViewOnHome
- || mLauncher.hasBeenResumed() || mIsAnimatingToLauncher;
- return isOnHomeScreen ? INVISIBLE : GONE;
- }
-
- @Override
- public float getNonIconScale(TaskbarView taskbarView) {
- return taskbarView == mTaskbarViewOnHome ? getTaskbarScaleOnHome() : 1f;
- }
-
- @Override
- public void onItemPositionsChanged(TaskbarView taskbarView) {
- if (taskbarView == mTaskbarViewOnHome) {
- alignRealHotseatWithTaskbar();
- }
- }
-
- @Override
- public void onNavigationButtonClick(@TaskbarButton int buttonType) {
- mNavButtonController.onButtonClick(buttonType);
- }
- };
- }
-
- private TaskbarHotseatControllerCallbacks createTaskbarHotseatControllerCallbacks() {
- return new TaskbarHotseatControllerCallbacks() {
- @Override
- public void updateHotseatItems(ItemInfo[] hotseatItemInfos) {
- mTaskbarViewInApp.updateHotseatItems(hotseatItemInfos);
- }
- };
- }
-
- /**
- * Initializes the Taskbar, including adding it to the screen.
- */
- public void init() {
- mNavMode = SysUINavigationMode.INSTANCE.get(mLauncher)
- .addModeChangeListener(mNavigationModeChangeListener);
- mTaskbarViewInApp.init(mHotseatController.getNumHotseatIcons(), mNavMode);
- mTaskbarViewOnHome.init(mHotseatController.getNumHotseatIcons(), mNavMode);
- mTaskbarContainerView.init(mTaskbarViewInApp);
- mImeBarView.init(createTaskbarViewCallbacks());
- addToWindowManager();
- mTaskbarStateHandler.setTaskbarCallbacks(createTaskbarStateHandlerCallbacks());
- mTaskbarAnimationController.init();
- mHotseatController.init();
-
- setWhichTaskbarViewIsVisible(mLauncher.hasBeenResumed()
- ? mTaskbarViewOnHome
- : mTaskbarViewInApp);
- }
-
- private TaskbarStateHandlerCallbacks createTaskbarStateHandlerCallbacks() {
- return new TaskbarStateHandlerCallbacks() {
- @Override
- public AnimatedFloat getAlphaTarget() {
- return mTaskbarAnimationController.getTaskbarVisibilityForLauncherState();
- }
-
- @Override
- public AnimatedFloat getScaleTarget() {
- return mTaskbarAnimationController.getTaskbarScaleForLauncherState();
- }
-
- @Override
- public AnimatedFloat getTranslationYTarget() {
- return mTaskbarAnimationController.getTaskbarTranslationYForLauncherState();
- }
- };
- }
-
- /**
- * Removes the Taskbar from the screen, and removes any obsolete listeners etc.
- */
- public void cleanup() {
- if (mAnimator != null) {
- // End this first, in case it relies on properties that are about to be cleaned up.
- mAnimator.end();
- }
-
- mTaskbarViewInApp.cleanup();
- mTaskbarViewOnHome.cleanup();
- mTaskbarContainerView.cleanup();
- mImeBarView.cleanup();
- removeFromWindowManager();
- mTaskbarStateHandler.setTaskbarCallbacks(null);
- mTaskbarAnimationController.cleanup();
- mHotseatController.cleanup();
-
- setWhichTaskbarViewIsVisible(null);
- SysUINavigationMode.INSTANCE.get(mLauncher)
- .removeModeChangeListener(mNavigationModeChangeListener);
- }
-
- private void removeFromWindowManager() {
- mWindowManager.removeViewImmediate(mTaskbarContainerView);
- }
-
- private void addToWindowManager() {
- final int gravity = Gravity.BOTTOM;
-
- mWindowLayoutParams = new WindowManager.LayoutParams(
- mTaskbarSize.x,
- mTaskbarSize.y,
- TYPE_APPLICATION_OVERLAY,
- WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
- PixelFormat.TRANSLUCENT);
- mWindowLayoutParams.setTitle(WINDOW_TITLE);
- mWindowLayoutParams.packageName = mLauncher.getPackageName();
- mWindowLayoutParams.gravity = gravity;
- mWindowLayoutParams.setFitInsetsTypes(0);
- mWindowLayoutParams.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING;
- mWindowLayoutParams.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
- mWindowLayoutParams.setSystemApplicationOverlay(true);
-
- WindowManagerWrapper wmWrapper = WindowManagerWrapper.getInstance();
- wmWrapper.setProvidesInsetsTypes(
- mWindowLayoutParams,
- new int[] { ITYPE_EXTRA_NAVIGATION_BAR, ITYPE_BOTTOM_TAPPABLE_ELEMENT }
- );
-
- TaskbarContainerView.LayoutParams taskbarLayoutParams =
- new TaskbarContainerView.LayoutParams(mTaskbarSize.x, mTaskbarSize.y);
- taskbarLayoutParams.gravity = gravity;
- mTaskbarViewInApp.setLayoutParams(taskbarLayoutParams);
-
- mWindowManager.addView(mTaskbarContainerView, mWindowLayoutParams);
- }
-
- private void onNavModeChanged(SysUINavigationMode.Mode newMode) {
- mNavMode = newMode;
- cleanup();
- init();
- }
-
/**
* Should be called from onResume() and onPause(), and animates the Taskbar accordingly.
*/
@@ -401,13 +168,14 @@
@Override
public void onAnimationStart(Animator animation) {
mIsAnimatingToLauncher = true;
- mTaskbarViewInApp.updateHotseatItemsVisibility();
+ mTaskbarView.setHolesAllowedInLayout(true);
+ mTaskbarView.updateHotseatItemsVisibility();
}
@Override
public void onAnimationEnd(Animator animation) {
mIsAnimatingToLauncher = false;
- setWhichTaskbarViewIsVisible(mTaskbarViewOnHome);
+ setTaskbarViewVisible(false);
}
});
@@ -420,44 +188,21 @@
anim.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationStart(Animator animation) {
- mTaskbarViewInApp.updateHotseatItemsVisibility();
- setWhichTaskbarViewIsVisible(mTaskbarViewInApp);
+ mTaskbarView.updateHotseatItemsVisibility();
+ setTaskbarViewVisible(true);
}
@Override
public void onAnimationEnd(Animator animation) {
+ mTaskbarView.setHolesAllowedInLayout(false);
}
});
return anim.buildAnim();
}
- /**
- * Should be called when the IME visibility changes, so we can hide/show Taskbar accordingly.
- */
- public void setIsImeVisible(boolean isImeVisible) {
- mTaskbarAnimationController.animateToVisibilityForIme(isImeVisible ? 0 : 1);
- blockTaskbarTouchesForIme(isImeVisible);
- }
-
- /**
- * When in 3 button nav, the above doesn't get called since we prevent sysui nav bar from
- * instantiating at all, which is what's responsible for sending sysui state flags over.
- *
- * @param vis IME visibility flag
- * @param backDisposition Used to determine back button behavior for software keyboard
- * See BACK_DISPOSITION_* constants in {@link InputMethodService}
- */
- public void updateImeStatus(int displayId, int vis, int backDisposition,
- boolean showImeSwitcher) {
- if (displayId != mTaskbarContainerView.getContext().getDisplayId() ||
- mNavMode != SysUINavigationMode.Mode.THREE_BUTTONS) {
- return;
- }
-
- boolean imeVisible = (vis & InputMethodService.IME_VISIBLE) != 0;
- mTaskbarAnimationController.animateToVisibilityForIme(imeVisible ? 0 : 1);
- mImeBarView.setImeSwitcherVisibility(showImeSwitcher);
- blockTaskbarTouchesForIme(imeVisible);
+ @Override
+ protected void onImeVisible(TaskbarContainerView containerView, boolean isVisible) {
+ mTaskbarAnimationController.animateToVisibilityForIme(isVisible ? 0 : 1);
}
/**
@@ -472,24 +217,17 @@
* @return Whether any Taskbar item could handle the given MotionEvent if given the chance.
*/
public boolean isEventOverAnyTaskbarItem(MotionEvent ev) {
- return mTaskbarViewInApp.isEventOverAnyItem(ev);
+ return mTaskbarView.isEventOverAnyItem(ev);
}
public boolean isDraggingItem() {
- return mTaskbarViewInApp.isDraggingItem() || mTaskbarViewOnHome.isDraggingItem();
- }
-
- /**
- * @return Whether the given View is in the same window as Taskbar.
- */
- public boolean isViewInTaskbar(View v) {
- return mTaskbarContainerView.isAttachedToWindow()
- && mTaskbarContainerView.getWindowId().equals(v.getWindowId());
+ return mTaskbarView.isDraggingItem();
}
/**
* Pads the Hotseat to line up exactly with Taskbar's copy of the Hotseat.
*/
+ @Override
public void alignRealHotseatWithTaskbar() {
Rect hotseatBounds = new Rect();
DeviceProfile grid = mLauncher.getDeviceProfile();
@@ -498,60 +236,28 @@
int hotseatTopDiff = hotseatHeight - grid.taskbarSize - taskbarOffset;
int hotseatBottomDiff = taskbarOffset;
- mTaskbarViewOnHome.getHotseatBounds().roundOut(hotseatBounds);
+ RectF hotseatBoundsF = mTaskbarView.getHotseatBounds();
+ Utilities.scaleRectFAboutPivot(hotseatBoundsF, getTaskbarScaleOnHome(),
+ mTaskbarView.getPivotX(), mTaskbarView.getPivotY());
+ hotseatBoundsF.round(hotseatBounds);
mLauncher.getHotseat().setPadding(hotseatBounds.left,
hotseatBounds.top + hotseatTopDiff,
- mTaskbarViewOnHome.getWidth() - hotseatBounds.right,
- mTaskbarViewOnHome.getHeight() - hotseatBounds.bottom + hotseatBottomDiff);
- }
-
- private void setWhichTaskbarViewIsVisible(@Nullable TaskbarView visibleTaskbar) {
- mTaskbarViewInApp.setVisibility(visibleTaskbar == mTaskbarViewInApp
- ? VISIBLE : INVISIBLE);
- mTaskbarViewOnHome.setVisibility(visibleTaskbar == mTaskbarViewOnHome
- ? VISIBLE : INVISIBLE);
- mLauncher.getHotseat().setIconsAlpha(visibleTaskbar != mTaskbarViewInApp ? 1f : 0f);
- }
-
- private void blockTaskbarTouchesForIme(boolean block) {
- mTaskbarViewOnHome.setTouchesEnabled(!block);
- mTaskbarViewInApp.setTouchesEnabled(!block);
+ mTaskbarView.getWidth() - hotseatBounds.right,
+ mTaskbarView.getHeight() - hotseatBounds.bottom + hotseatBottomDiff);
}
/**
* Returns the ratio of the taskbar icon size on home vs in an app.
*/
public float getTaskbarScaleOnHome() {
- DeviceProfile inAppDp = mTaskbarContainerView.getTaskbarActivityContext()
- .getDeviceProfile();
- DeviceProfile onHomeDp = ActivityContext.lookupContext(mTaskbarViewOnHome.getContext())
- .getDeviceProfile();
+ DeviceProfile inAppDp = mContext.getDeviceProfile();
+ DeviceProfile onHomeDp = mLauncher.getDeviceProfile();
return (float) onHomeDp.cellWidthPx / inAppDp.cellWidthPx;
}
- /**
- * Updates the TaskbarContainer to MATCH_PARENT vs original Taskbar size.
- */
- private void setTaskbarWindowFullscreen(boolean fullscreen) {
- setTaskbarWindowHeight(fullscreen ? MATCH_PARENT : mTaskbarSize.y);
- }
-
- /**
- * Updates the TaskbarContainer height (pass mTaskbarSize.y to reset).
- */
- private void setTaskbarWindowHeight(int height) {
- mWindowLayoutParams.width = mTaskbarSize.x;
- mWindowLayoutParams.height = height;
- mWindowManager.updateViewLayout(mTaskbarContainerView, mWindowLayoutParams);
- }
-
- /**
- * Contains methods that TaskbarStateHandler can call to interface with TaskbarController.
- */
- protected interface TaskbarStateHandlerCallbacks {
- AnimatedFloat getAlphaTarget();
- AnimatedFloat getScaleTarget();
- AnimatedFloat getTranslationYTarget();
+ void setTaskbarViewVisible(boolean isVisible) {
+ mTaskbarView.setIconsVisibility(isVisible);
+ mLauncher.getHotseat().setIconsAlpha(isVisible ? 0f : 1f);
}
/**
@@ -565,32 +271,4 @@
void updateTaskbarScale(float scale);
void updateTaskbarTranslationY(float translationY);
}
-
- /**
- * Contains methods that TaskbarContainerView can call to interface with TaskbarController.
- */
- protected interface TaskbarContainerViewCallbacks {
- void onViewRemoved();
- boolean isTaskbarTouchable();
- }
-
- /**
- * Contains methods that TaskbarView can call to interface with TaskbarController.
- */
- protected interface TaskbarViewCallbacks {
- View.OnClickListener getItemOnClickListener();
- View.OnLongClickListener getItemOnLongClickListener();
- int getEmptyHotseatViewVisibility(TaskbarView taskbarView);
- /** Returns how much to scale non-icon elements such as spacing and dividers. */
- float getNonIconScale(TaskbarView taskbarView);
- void onItemPositionsChanged(TaskbarView taskbarView);
- void onNavigationButtonClick(@TaskbarButton int buttonType);
- }
-
- /**
- * Contains methods that TaskbarHotseatController can call to interface with TaskbarController.
- */
- protected interface TaskbarHotseatControllerCallbacks {
- void updateHotseatItems(ItemInfo[] hotseatItemInfos);
- }
}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java
index 5eb34cb..ee44927 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java
@@ -20,6 +20,7 @@
import android.content.ClipData;
import android.content.ClipDescription;
+import android.content.Context;
import android.content.Intent;
import android.content.pm.LauncherApps;
import android.content.res.Resources;
@@ -29,7 +30,6 @@
import android.view.DragEvent;
import android.view.View;
-import com.android.launcher3.BaseQuickstepLauncher;
import com.android.launcher3.BubbleTextView;
import com.android.launcher3.LauncherSettings;
import com.android.launcher3.R;
@@ -43,12 +43,12 @@
*/
public class TaskbarDragController {
- private final BaseQuickstepLauncher mLauncher;
+ private final Context mContext;
private final int mDragIconSize;
- public TaskbarDragController(BaseQuickstepLauncher launcher) {
- mLauncher = launcher;
- Resources resources = mLauncher.getResources();
+ public TaskbarDragController(Context context) {
+ mContext = context;
+ Resources resources = mContext.getResources();
mDragIconSize = resources.getDimensionPixelSize(R.dimen.taskbar_icon_drag_icon_size);
}
@@ -63,7 +63,6 @@
}
BubbleTextView btv = (BubbleTextView) view;
-
View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view) {
@Override
public void onProvideShadowMetrics(Point shadowSize, Point shadowTouchPoint) {
@@ -87,7 +86,7 @@
Intent intent = null;
if (tag instanceof WorkspaceItemInfo) {
WorkspaceItemInfo item = (WorkspaceItemInfo) tag;
- LauncherApps launcherApps = mLauncher.getSystemService(LauncherApps.class);
+ LauncherApps launcherApps = mContext.getSystemService(LauncherApps.class);
clipDescription = new ClipDescription(item.title,
new String[] {
item.itemType == LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarHotseatController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarHotseatController.java
index 68829cd..91cf7ef 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarHotseatController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarHotseatController.java
@@ -26,6 +26,8 @@
import com.android.launcher3.dragndrop.DragOptions;
import com.android.launcher3.model.data.ItemInfo;
+import java.util.function.Consumer;
+
/**
* Works with TaskbarController to update the TaskbarView's Hotseat items.
*/
@@ -33,13 +35,12 @@
private final BaseQuickstepLauncher mLauncher;
private final Hotseat mHotseat;
- private final TaskbarController.TaskbarHotseatControllerCallbacks mTaskbarCallbacks;
+ private final Consumer<ItemInfo[]> mTaskbarCallbacks;
private final int mNumHotseatIcons;
private final DragController.DragListener mDragListener = new DragController.DragListener() {
@Override
- public void onDragStart(DropTarget.DragObject dragObject, DragOptions options) {
- }
+ public void onDragStart(DropTarget.DragObject dragObject, DragOptions options) { }
@Override
public void onDragEnd() {
@@ -47,8 +48,8 @@
}
};
- public TaskbarHotseatController(BaseQuickstepLauncher launcher,
- TaskbarController.TaskbarHotseatControllerCallbacks taskbarCallbacks) {
+ public TaskbarHotseatController(
+ BaseQuickstepLauncher launcher, Consumer<ItemInfo[]> taskbarCallbacks) {
mLauncher = launcher;
mHotseat = mLauncher.getHotseat();
mTaskbarCallbacks = taskbarCallbacks;
@@ -85,10 +86,6 @@
}
}
- mTaskbarCallbacks.updateHotseatItems(hotseatItemInfos);
- }
-
- protected int getNumHotseatIcons() {
- return mNumHotseatIcons;
+ mTaskbarCallbacks.accept(hotseatItemInfos);
}
}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarIconController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarIconController.java
new file mode 100644
index 0000000..2a37915
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarIconController.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.launcher3.taskbar;
+
+import static android.view.View.GONE;
+import static android.view.View.VISIBLE;
+
+import static com.android.systemui.shared.system.ViewTreeObserverWrapper.InsetsInfo.TOUCHABLE_INSETS_FRAME;
+import static com.android.systemui.shared.system.ViewTreeObserverWrapper.InsetsInfo.TOUCHABLE_INSETS_REGION;
+
+import android.graphics.Rect;
+import android.inputmethodservice.InputMethodService;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.View.OnLongClickListener;
+
+import androidx.annotation.NonNull;
+
+import com.android.launcher3.R;
+import com.android.launcher3.anim.AlphaUpdateListener;
+import com.android.systemui.shared.system.ViewTreeObserverWrapper.InsetsInfo;
+
+/**
+ * Controller for taskbar icon UI
+ */
+public class TaskbarIconController {
+
+ private final Rect mTempRect = new Rect();
+
+ private final TaskbarActivityContext mActivity;
+ private final TaskbarContainerView mContainerView;
+
+ private final TaskbarView mTaskbarView;
+ private final ImeBarView mImeBarView;
+
+ @NonNull
+ private TaskbarUIController mUIController = TaskbarUIController.DEFAULT;
+
+ TaskbarIconController(TaskbarActivityContext activity, TaskbarContainerView containerView) {
+ mActivity = activity;
+ mContainerView = containerView;
+ mTaskbarView = mContainerView.findViewById(R.id.taskbar_view);
+ mImeBarView = mContainerView.findViewById(R.id.ime_bar_view);
+ }
+
+ public void init(OnClickListener clickListener, OnLongClickListener longClickListener) {
+ mContainerView.addOnLayoutChangeListener((v, a, b, c, d, e, f, g, h) ->
+ mUIController.alignRealHotseatWithTaskbar());
+
+ ButtonProvider buttonProvider = new ButtonProvider(mActivity);
+ mImeBarView.init(buttonProvider);
+ mTaskbarView.construct(clickListener, longClickListener, buttonProvider);
+ mTaskbarView.getLayoutParams().height = mActivity.getDeviceProfile().taskbarSize;
+
+ mContainerView.init(new Callbacks(), mTaskbarView);
+ }
+
+ public void onDestroy() {
+ mContainerView.onDestroy();
+ }
+
+ public void setUIController(@NonNull TaskbarUIController uiController) {
+ mUIController = uiController;
+ }
+
+ /**
+ * When in 3 button nav, the above doesn't get called since we prevent sysui nav bar from
+ * instantiating at all, which is what's responsible for sending sysui state flags over.
+ *
+ * @param vis IME visibility flag
+ */
+ public void updateImeStatus(int displayId, int vis, boolean showImeSwitcher) {
+ if (displayId != mActivity.getDisplayId() || !mActivity.canShowNavButtons()) {
+ return;
+ }
+
+ mImeBarView.setImeSwitcherVisibility(showImeSwitcher);
+ setImeIsVisible((vis & InputMethodService.IME_VISIBLE) != 0);
+ }
+
+ /**
+ * Should be called when the IME visibility changes, so we can hide/show Taskbar accordingly.
+ */
+ public void setImeIsVisible(boolean isImeVisible) {
+ mTaskbarView.setTouchesEnabled(!isImeVisible);
+ mUIController.onImeVisible(mContainerView, isImeVisible);
+ }
+
+ /**
+ * Callbacks for {@link TaskbarContainerView} to interact with the icon controller
+ */
+ public class Callbacks {
+
+ /**
+ * Called to update the touchable insets
+ */
+ public void updateInsetsTouchability(InsetsInfo insetsInfo) {
+ insetsInfo.touchableRegion.setEmpty();
+ if (mContainerView.getAlpha() < AlphaUpdateListener.ALPHA_CUTOFF_THRESHOLD) {
+ // Let touches pass through us.
+ insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION);
+ } else if (mImeBarView.getVisibility() == VISIBLE) {
+ insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_FRAME);
+ } else if (!mUIController.isTaskbarTouchable()) {
+ // Let touches pass through us.
+ insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION);
+ } else if (mTaskbarView.areIconsVisible()) {
+ // Buttons are visible, take over the full taskbar area
+ insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_FRAME);
+ } else {
+ if (mTaskbarView.mSystemButtonContainer.getVisibility() == VISIBLE) {
+ mContainerView.getDescendantRectRelativeToSelf(
+ mTaskbarView.mSystemButtonContainer, mTempRect);
+ insetsInfo.touchableRegion.set(mTempRect);
+ }
+ insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION);
+ }
+
+ // TaskbarContainerView provides insets to other apps based on contentInsets. These
+ // insets should stay consistent even if we expand TaskbarContainerView's bounds, e.g.
+ // to show a floating view like Folder. Thus, we set the contentInsets to be where
+ // mTaskbarView is, since its position never changes and insets rather than overlays.
+ insetsInfo.contentInsets.left = mTaskbarView.getLeft();
+ insetsInfo.contentInsets.top = mTaskbarView.getTop();
+ insetsInfo.contentInsets.right = mContainerView.getWidth() - mTaskbarView.getRight();
+ insetsInfo.contentInsets.bottom = mContainerView.getHeight() - mTaskbarView.getBottom();
+ }
+
+ public void onContainerViewRemoved() {
+ int count = mContainerView.getChildCount();
+ // Ensure no other children present (like Folders, etc)
+ for (int i = 0; i < count; i++) {
+ View v = mContainerView.getChildAt(i);
+ if (!((v instanceof TaskbarView) || (v instanceof ImeBarView))) {
+ return;
+ }
+ }
+ mActivity.setTaskbarWindowFullscreen(false);
+ }
+
+ public void updateImeBarVisibilityAlpha(float alpha) {
+ if (!mActivity.canShowNavButtons()) {
+ // TODO Remove sysui IME bar for gesture nav as well
+ return;
+ }
+ mImeBarView.setAlpha(alpha);
+ mImeBarView.setVisibility(alpha == 0 ? GONE : VISIBLE);
+ }
+ }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java
new file mode 100644
index 0000000..b9eec93
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.launcher3.taskbar;
+
+import static android.view.Display.DEFAULT_DISPLAY;
+import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
+
+import static com.android.launcher3.util.DisplayController.CHANGE_ACTIVE_SCREEN;
+import static com.android.launcher3.util.DisplayController.CHANGE_DENSITY;
+import static com.android.launcher3.util.DisplayController.CHANGE_SUPPORTED_BOUNDS;
+import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_IME_SHOWING;
+
+import android.content.Context;
+import android.hardware.display.DisplayManager;
+import android.inputmethodservice.InputMethodService;
+import android.view.Display;
+
+import androidx.annotation.Nullable;
+
+import com.android.launcher3.BaseQuickstepLauncher;
+import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.LauncherAppState;
+import com.android.launcher3.config.FeatureFlags;
+import com.android.launcher3.util.DisplayController;
+import com.android.launcher3.util.DisplayController.Info;
+import com.android.quickstep.SysUINavigationMode;
+import com.android.quickstep.SysUINavigationMode.Mode;
+import com.android.quickstep.TouchInteractionService;
+
+/**
+ * Class to manager taskbar lifecycle
+ */
+public class TaskbarManager implements DisplayController.DisplayInfoChangeListener,
+ SysUINavigationMode.NavigationModeChangeListener {
+
+ private final Context mContext;
+ private final DisplayController mDisplayController;
+ private final SysUINavigationMode mSysUINavigationMode;
+ private final TaskbarNavButtonController mNavButtonController;
+
+ private TaskbarActivityContext mTaskbarActivityContext;
+ private BaseQuickstepLauncher mLauncher;
+
+ private static final int CHANGE_FLAGS =
+ CHANGE_ACTIVE_SCREEN | CHANGE_DENSITY | CHANGE_SUPPORTED_BOUNDS;
+
+ public TaskbarManager(TouchInteractionService service) {
+ mDisplayController = DisplayController.INSTANCE.get(service);
+ mSysUINavigationMode = SysUINavigationMode.INSTANCE.get(service);
+ Display display =
+ service.getSystemService(DisplayManager.class).getDisplay(DEFAULT_DISPLAY);
+ mContext = service.createWindowContext(display, TYPE_APPLICATION_OVERLAY, null);
+ mNavButtonController = new TaskbarNavButtonController(service);
+
+ mDisplayController.addChangeListener(this);
+ mSysUINavigationMode.addModeChangeListener(this);
+ recreateTaskbar();
+ }
+
+ @Override
+ public void onNavigationModeChanged(Mode newMode) {
+ recreateTaskbar();
+ }
+
+ @Override
+ public void onDisplayInfoChanged(Context context, Info info, int flags) {
+ if ((flags & CHANGE_FLAGS) != 0) {
+ recreateTaskbar();
+ }
+ }
+
+ private void destroyExistingTaskbar() {
+ if (mTaskbarActivityContext != null) {
+ mTaskbarActivityContext.onDestroy();
+ mTaskbarActivityContext = null;
+ }
+ }
+
+ /**
+ * Sets or clears a launcher to act as taskbar callback
+ */
+ public void setLauncher(@Nullable BaseQuickstepLauncher launcher) {
+ mLauncher = launcher;
+ if (mTaskbarActivityContext != null) {
+ mTaskbarActivityContext.setUIController(mLauncher == null
+ ? TaskbarUIController.DEFAULT
+ : new TaskbarController(launcher, mTaskbarActivityContext));
+ }
+ }
+
+ private void recreateTaskbar() {
+ destroyExistingTaskbar();
+ if (!FeatureFlags.ENABLE_TASKBAR.get()) {
+ return;
+ }
+ DeviceProfile dp = LauncherAppState.getIDP(mContext).getDeviceProfile(mContext);
+ if (!dp.isTaskbarPresent) {
+ return;
+ }
+ mTaskbarActivityContext = new TaskbarActivityContext(
+ mContext, dp.copy(mContext), mNavButtonController);
+ mTaskbarActivityContext.init();
+ if (mLauncher != null) {
+ mTaskbarActivityContext.setUIController(
+ new TaskbarController(mLauncher, mTaskbarActivityContext));
+ }
+ }
+
+ /**
+ * See {@link com.android.systemui.shared.system.QuickStepContract.SystemUiStateFlags}
+ * @param systemUiStateFlags The latest SystemUiStateFlags
+ */
+ public void onSystemUiFlagsChanged(int systemUiStateFlags) {
+ boolean isImeVisible = (systemUiStateFlags & SYSUI_STATE_IME_SHOWING) != 0;
+ if (mTaskbarActivityContext != null) {
+ mTaskbarActivityContext.getIconController().setImeIsVisible(isImeVisible);
+ }
+ }
+
+ /**
+ * When in 3 button nav, the above doesn't get called since we prevent sysui nav bar from
+ * instantiating at all, which is what's responsible for sending sysui state flags over.
+ *
+ * @param vis IME visibility flag
+ * @param backDisposition Used to determine back button behavior for software keyboard
+ * See BACK_DISPOSITION_* constants in {@link InputMethodService}
+ */
+ public void updateImeStatus(int displayId, int vis, int backDisposition,
+ boolean showImeSwitcher) {
+ if (mTaskbarActivityContext != null) {
+ mTaskbarActivityContext.getIconController()
+ .updateImeStatus(displayId, vis, showImeSwitcher);
+ }
+ }
+
+ /**
+ * Called when the manager is no longer needed
+ */
+ public void destroy() {
+ destroyExistingTaskbar();
+ mDisplayController.removeChangeListener(this);
+ mSysUINavigationMode.removeModeChangeListener(this);
+ }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java
index 54e1610..3b5afad 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java
@@ -16,7 +16,8 @@
package com.android.launcher3.taskbar;
-import android.content.Context;
+import static android.view.Display.DEFAULT_DISPLAY;
+
import android.content.Intent;
import android.view.inputmethod.InputMethodManager;
@@ -53,11 +54,10 @@
static final int BUTTON_RECENTS = BUTTON_HOME << 1;
static final int BUTTON_IME_SWITCH = BUTTON_RECENTS << 1;
+ private final TouchInteractionService mService;
- private final Context mContext;
-
- public TaskbarNavButtonController(Context context) {
- mContext = context;
+ public TaskbarNavButtonController(TouchInteractionService service) {
+ mService = service;
}
public void onButtonClick(@TaskbarButton int buttonType) {
@@ -78,13 +78,13 @@
}
private void navigateHome() {
- mContext.startActivity(new Intent(Intent.ACTION_MAIN)
+ mService.startActivity(new Intent(Intent.ACTION_MAIN)
.addCategory(Intent.CATEGORY_HOME)
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}
private void navigateToOverview() {
- TouchInteractionService.getInstance().getOverviewCommandHelper()
+ mService.getOverviewCommandHelper()
.addCommand(OverviewCommandHelper.TYPE_SHOW);
}
@@ -93,8 +93,8 @@
}
private void showIMESwitcher() {
- mContext.getSystemService(InputMethodManager.class).showInputMethodPickerFromSystem(
- true /* showAuxiliarySubtypes */, mContext.getDisplayId());
+ mService.getSystemService(InputMethodManager.class)
+ .showInputMethodPickerFromSystem(true /* showAuxiliarySubtypes */,
+ DEFAULT_DISPLAY);
}
-
}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStateHandler.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarStateHandler.java
index 6ea51fa..a701aae 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarStateHandler.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarStateHandler.java
@@ -24,59 +24,52 @@
import com.android.launcher3.BaseQuickstepLauncher;
import com.android.launcher3.LauncherState;
import com.android.launcher3.anim.PendingAnimation;
+import com.android.launcher3.anim.PropertySetter;
import com.android.launcher3.statemanager.StateManager;
import com.android.launcher3.states.StateAnimationConfig;
import com.android.quickstep.AnimatedFloat;
/**
* StateHandler to animate Taskbar according to Launcher's state machine. Does nothing if Taskbar
- * isn't present (i.e. {@link #setTaskbarCallbacks} is never called).
+ * isn't present (i.e. {@link #setAnimationController} is never called).
*/
public class TaskbarStateHandler implements StateManager.StateHandler<LauncherState> {
private final BaseQuickstepLauncher mLauncher;
// Contains Taskbar-related methods and fields we should aniamte. If null, don't do anything.
- private @Nullable TaskbarController.TaskbarStateHandlerCallbacks mTaskbarCallbacks = null;
+ private @Nullable TaskbarAnimationController mAnimationController = null;
public TaskbarStateHandler(BaseQuickstepLauncher launcher) {
mLauncher = launcher;
}
- public void setTaskbarCallbacks(TaskbarController.TaskbarStateHandlerCallbacks callbacks) {
- mTaskbarCallbacks = callbacks;
+ public void setAnimationController(TaskbarAnimationController callbacks) {
+ mAnimationController = callbacks;
}
@Override
public void setState(LauncherState state) {
- if (mTaskbarCallbacks == null) {
- return;
- }
-
- AnimatedFloat alphaTarget = mTaskbarCallbacks.getAlphaTarget();
- AnimatedFloat scaleTarget = mTaskbarCallbacks.getScaleTarget();
- AnimatedFloat translationYTarget = mTaskbarCallbacks.getTranslationYTarget();
- boolean isTaskbarVisible = (state.getVisibleElements(mLauncher) & TASKBAR) != 0;
- alphaTarget.updateValue(isTaskbarVisible ? 1f : 0f);
- scaleTarget.updateValue(state.getTaskbarScale(mLauncher));
- translationYTarget.updateValue(state.getTaskbarTranslationY(mLauncher));
+ setState(state, PropertySetter.NO_ANIM_PROPERTY_SETTER);
}
@Override
public void setStateWithAnimation(LauncherState toState, StateAnimationConfig config,
PendingAnimation animation) {
- if (mTaskbarCallbacks == null) {
+ setState(toState, animation);
+ }
+
+ private void setState(LauncherState toState, PropertySetter setter) {
+ if (mAnimationController == null) {
return;
}
- AnimatedFloat alphaTarget = mTaskbarCallbacks.getAlphaTarget();
- AnimatedFloat scaleTarget = mTaskbarCallbacks.getScaleTarget();
- AnimatedFloat translationYTarget = mTaskbarCallbacks.getTranslationYTarget();
boolean isTaskbarVisible = (toState.getVisibleElements(mLauncher) & TASKBAR) != 0;
- animation.setFloat(alphaTarget, AnimatedFloat.VALUE, isTaskbarVisible ? 1f : 0f, LINEAR);
- animation.setFloat(scaleTarget, AnimatedFloat.VALUE, toState.getTaskbarScale(mLauncher),
- LINEAR);
- animation.setFloat(translationYTarget, AnimatedFloat.VALUE,
- toState.getTaskbarTranslationY(mLauncher), ACCEL_DEACCEL);
+ setter.setFloat(mAnimationController.getTaskbarVisibilityForLauncherState(),
+ AnimatedFloat.VALUE, isTaskbarVisible ? 1f : 0f, LINEAR);
+ setter.setFloat(mAnimationController.getTaskbarScaleForLauncherState(),
+ AnimatedFloat.VALUE, toState.getTaskbarScale(mLauncher), LINEAR);
+ setter.setFloat(mAnimationController.getTaskbarTranslationYForLauncherState(),
+ AnimatedFloat.VALUE, toState.getTaskbarTranslationY(mLauncher), ACCEL_DEACCEL);
}
}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java
new file mode 100644
index 0000000..e16f5e6
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.launcher3.taskbar;
+
+/**
+ * Base class for providing different taskbar UI
+ */
+public class TaskbarUIController {
+
+ public static final TaskbarUIController DEFAULT = new TaskbarUIController();
+
+ /**
+ * Pads the Hotseat to line up exactly with Taskbar's copy of the Hotseat.
+ */
+ public void alignRealHotseatWithTaskbar() { }
+
+ protected void onCreate() { }
+
+ protected void onDestroy() { }
+
+ protected boolean isTaskbarTouchable() {
+ return true;
+ }
+
+ protected void onImeVisible(TaskbarContainerView container, boolean isVisible) {
+ container.updateImeBarVisibilityAlpha(isVisible ? 1 : 0);
+ }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java
index 9e8013e..c6573a6 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java
@@ -15,20 +15,14 @@
*/
package com.android.launcher3.taskbar;
-import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_BACK;
-import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_HOME;
-import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_RECENTS;
+import static android.view.View.MeasureSpec.EXACTLY;
+import static android.view.View.MeasureSpec.makeMeasureSpec;
-import android.animation.Animator;
-import android.animation.AnimatorSet;
-import android.animation.LayoutTransition;
-import android.animation.ValueAnimator;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.RectF;
-import android.os.SystemProperties;
import android.util.AttributeSet;
import android.view.DragEvent;
import android.view.Gravity;
@@ -51,17 +45,12 @@
import com.android.launcher3.model.data.ItemInfo;
import com.android.launcher3.model.data.WorkspaceItemInfo;
import com.android.launcher3.views.ActivityContext;
-import com.android.quickstep.SysUINavigationMode;
/**
* Hosts the Taskbar content such as Hotseat and Recent Apps. Drawn on top of other apps.
*/
public class TaskbarView extends LinearLayout implements FolderIcon.FolderIconParent, Insettable {
-
- private static final boolean ENABLE_THREE_BUTTON_TASKBAR =
- SystemProperties.getBoolean("persist.debug.taskbar_three_button", false);
-
private final int mIconTouchSize;
private final boolean mIsRtl;
private final int mTouchSlop;
@@ -69,17 +58,16 @@
private final RectF mDelegateSlopBounds = new RectF();
private final int[] mTempOutLocation = new int[2];
- // Initialized in TaskbarController constructor.
- private TaskbarController.TaskbarViewCallbacks mControllerCallbacks;
- // Scale on elements that aren't icons.
- private float mNonIconScale;
- private int mItemMarginLeftRight;
+ private final int mItemMarginLeftRight;
- // Initialized in init().
- private LayoutTransition mLayoutTransition;
- private int mHotseatStartIndex;
- private int mHotseatEndIndex;
- private LinearLayout mButtonRegion;
+ private final TaskbarActivityContext mActivityContext;
+
+ // Initialized in TaskbarController constructor.
+ private View.OnClickListener mIconClickListener;
+ private View.OnLongClickListener mIconLongClickListener;
+
+ LinearLayout mSystemButtonContainer;
+ LinearLayout mHotseatIconsContainer;
// Delegate touches to the closest view if within mIconTouchSize.
private boolean mDelegateTargeted;
@@ -91,10 +79,12 @@
// Only non-null when the corresponding Folder is open.
private @Nullable FolderIcon mLeaveBehindFolderIcon;
- private int mNavButtonStartIndex;
/** Provider of buttons added to taskbar in 3 button nav */
private ButtonProvider mButtonProvider;
+ private boolean mDisableRelayout;
+ private boolean mAreHolesAllowed;
+
public TaskbarView(@NonNull Context context) {
this(context, null);
}
@@ -111,80 +101,58 @@
public TaskbarView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr,
int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
+ mActivityContext = ActivityContext.lookupContext(context);
Resources resources = getResources();
mIconTouchSize = resources.getDimensionPixelSize(R.dimen.taskbar_icon_touch_size);
+ mItemMarginLeftRight = resources.getDimensionPixelSize(R.dimen.taskbar_icon_spacing);
+
mIsRtl = Utilities.isRtl(resources);
mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
}
- protected void construct(TaskbarController.TaskbarViewCallbacks taskbarViewCallbacks,
- ButtonProvider buttonProvider) {
- mControllerCallbacks = taskbarViewCallbacks;
- mNonIconScale = mControllerCallbacks.getNonIconScale(this);
- mItemMarginLeftRight = getResources().getDimensionPixelSize(R.dimen.taskbar_icon_spacing);
- mItemMarginLeftRight = Math.round(mItemMarginLeftRight * mNonIconScale);
- mButtonProvider = buttonProvider;
- mButtonProvider.setMarginLeftRight(mItemMarginLeftRight);
+ @Override
+ protected void onFinishInflate() {
+ super.onFinishInflate();
+ mSystemButtonContainer = findViewById(R.id.system_button_layout);
+ mHotseatIconsContainer = findViewById(R.id.hotseat_icons_layout);
}
- protected void init(int numHotseatIcons, SysUINavigationMode.Mode newMode) {
- // TODO: check if buttons on left
- if (newMode == SysUINavigationMode.Mode.THREE_BUTTONS && ENABLE_THREE_BUTTON_TASKBAR) {
- // 3 button
- mNavButtonStartIndex = 0;
+ protected void construct(OnClickListener clickListener, OnLongClickListener longClickListener,
+ ButtonProvider buttonProvider) {
+ mIconClickListener = clickListener;
+ mIconLongClickListener = longClickListener;
+ mButtonProvider = buttonProvider;
+
+ if (mActivityContext.canShowNavButtons()) {
createNavButtons();
} else {
- mNavButtonStartIndex = -1;
- removeNavButtons();
+ mSystemButtonContainer.setVisibility(GONE);
}
- mHotseatStartIndex = mNavButtonStartIndex + 1;
- mHotseatEndIndex = mHotseatStartIndex + numHotseatIcons - 1;
+ int numHotseatIcons = mActivityContext.getDeviceProfile().numShownHotseatIcons;
updateHotseatItems(new ItemInfo[numHotseatIcons]);
-
- mLayoutTransition = new LayoutTransition();
- addUpdateListenerForAllLayoutTransitions(() -> {
- if (getLayoutTransition() == mLayoutTransition) {
- mControllerCallbacks.onItemPositionsChanged(this);
- }
- });
- setLayoutTransition(mLayoutTransition);
}
- private void addUpdateListenerForAllLayoutTransitions(Runnable onUpdate) {
- addUpdateListenerForLayoutTransition(LayoutTransition.CHANGE_APPEARING, onUpdate);
- addUpdateListenerForLayoutTransition(LayoutTransition.CHANGE_DISAPPEARING, onUpdate);
- addUpdateListenerForLayoutTransition(LayoutTransition.CHANGING, onUpdate);
- addUpdateListenerForLayoutTransition(LayoutTransition.APPEARING, onUpdate);
- addUpdateListenerForLayoutTransition(LayoutTransition.DISAPPEARING, onUpdate);
- }
-
- private void addUpdateListenerForLayoutTransition(int transitionType, Runnable onUpdate) {
- Animator anim = mLayoutTransition.getAnimator(transitionType);
- if (anim instanceof ValueAnimator) {
- ((ValueAnimator) anim).addUpdateListener(valueAnimator -> onUpdate.run());
- } else {
- AnimatorSet animSet = new AnimatorSet();
- ValueAnimator updateAnim = ValueAnimator.ofFloat(0, 1);
- updateAnim.addUpdateListener(valueAnimator -> onUpdate.run());
- animSet.playTogether(anim, updateAnim);
- mLayoutTransition.setAnimator(transitionType, animSet);
+ /**
+ * Enables/disables empty icons in taskbar so that the layout matches with Launcher
+ */
+ public void setHolesAllowedInLayout(boolean areHolesAllowed) {
+ if (mAreHolesAllowed != areHolesAllowed) {
+ mAreHolesAllowed = areHolesAllowed;
+ updateHotseatItemsVisibility();
+ // TODO: Add animation
}
}
- protected void cleanup() {
- endAllLayoutTransitionAnimators();
- setLayoutTransition(null);
- removeAllViews();
- }
-
- private void endAllLayoutTransitionAnimators() {
- mLayoutTransition.getAnimator(LayoutTransition.CHANGE_APPEARING).end();
- mLayoutTransition.getAnimator(LayoutTransition.CHANGE_DISAPPEARING).end();
- mLayoutTransition.getAnimator(LayoutTransition.CHANGING).end();
- mLayoutTransition.getAnimator(LayoutTransition.APPEARING).end();
- mLayoutTransition.getAnimator(LayoutTransition.DISAPPEARING).end();
+ private void setHolesAllowedInLayoutNoAnimation(boolean areHolesAllowed) {
+ if (mAreHolesAllowed != areHolesAllowed) {
+ mAreHolesAllowed = areHolesAllowed;
+ updateHotseatItemsVisibility();
+ onMeasure(makeMeasureSpec(getMeasuredWidth(), EXACTLY),
+ makeMeasureSpec(getMeasuredHeight(), EXACTLY));
+ onLayout(false, getLeft(), getTop(), getRight(), getBottom());
+ }
}
/**
@@ -192,10 +160,9 @@
*/
protected void updateHotseatItems(ItemInfo[] hotseatItemInfos) {
for (int i = 0; i < hotseatItemInfos.length; i++) {
- ItemInfo hotseatItemInfo = hotseatItemInfos[!mIsRtl ? i
- : hotseatItemInfos.length - i - 1];
- int hotseatIndex = mHotseatStartIndex + i;
- View hotseatView = getChildAt(hotseatIndex);
+ ItemInfo hotseatItemInfo = hotseatItemInfos[
+ !mIsRtl ? i : hotseatItemInfos.length - i - 1];
+ View hotseatView = mHotseatIconsContainer.getChildAt(i);
// Replace any Hotseat views with the appropriate type if it's not already that type.
final int expectedLayoutResId;
@@ -213,23 +180,23 @@
} else {
expectedLayoutResId = R.layout.taskbar_app_icon;
}
- if (hotseatView == null || hotseatView.getSourceLayoutResId() != expectedLayoutResId
+ if (hotseatView == null
+ || hotseatView.getSourceLayoutResId() != expectedLayoutResId
|| needsReinflate) {
- removeView(hotseatView);
- ActivityContext activityContext = getActivityContext();
+ mHotseatIconsContainer.removeView(hotseatView);
if (isFolder) {
FolderInfo folderInfo = (FolderInfo) hotseatItemInfo;
FolderIcon folderIcon = FolderIcon.inflateFolderAndIcon(expectedLayoutResId,
- getActivityContext(), this, folderInfo);
+ mActivityContext, this, folderInfo);
folderIcon.setTextVisible(false);
hotseatView = folderIcon;
} else {
hotseatView = inflate(expectedLayoutResId);
}
- int iconSize = activityContext.getDeviceProfile().iconSizePx;
+ int iconSize = mActivityContext.getDeviceProfile().iconSizePx;
LayoutParams lp = new LayoutParams(iconSize, iconSize);
lp.setMargins(mItemMarginLeftRight, 0, mItemMarginLeftRight, 0);
- addView(hotseatView, hotseatIndex, lp);
+ mHotseatIconsContainer.addView(hotseatView, i, lp);
}
// Apply the Hotseat ItemInfos, or hide the view if there is none for a given index.
@@ -237,13 +204,11 @@
&& hotseatItemInfo instanceof WorkspaceItemInfo) {
((BubbleTextView) hotseatView).applyFromWorkspaceItem(
(WorkspaceItemInfo) hotseatItemInfo);
- hotseatView.setOnClickListener(mControllerCallbacks.getItemOnClickListener());
- hotseatView.setOnLongClickListener(
- mControllerCallbacks.getItemOnLongClickListener());
+ hotseatView.setOnClickListener(mIconClickListener);
+ hotseatView.setOnLongClickListener(mIconLongClickListener);
} else if (isFolder) {
- hotseatView.setOnClickListener(mControllerCallbacks.getItemOnClickListener());
- hotseatView.setOnLongClickListener(
- mControllerCallbacks.getItemOnLongClickListener());
+ hotseatView.setOnClickListener(mIconClickListener);
+ hotseatView.setOnLongClickListener(mIconLongClickListener);
} else {
hotseatView.setOnClickListener(null);
hotseatView.setOnLongClickListener(null);
@@ -254,24 +219,14 @@
}
protected void updateHotseatItemsVisibility() {
- for (int i = mHotseatStartIndex; i <= mHotseatEndIndex; i++) {
- updateHotseatItemVisibility(getChildAt(i));
+ for (int i = mHotseatIconsContainer.getChildCount() - 1; i >= 0; i--) {
+ updateHotseatItemVisibility(mHotseatIconsContainer.getChildAt(i));
}
}
private void updateHotseatItemVisibility(View hotseatView) {
- if (hotseatView.getTag() != null) {
- hotseatView.setVisibility(VISIBLE);
- } else {
- int oldVisibility = hotseatView.getVisibility();
- int newVisibility = mControllerCallbacks.getEmptyHotseatViewVisibility(this);
- hotseatView.setVisibility(newVisibility);
- if (oldVisibility == GONE && newVisibility != GONE) {
- // By default, the layout transition only runs when going to VISIBLE,
- // but we want it to run when going to GONE to INVISIBLE as well.
- getLayoutTransition().showChild(this, hotseatView, oldVisibility);
- }
- }
+ hotseatView.setVisibility(
+ hotseatView.getTag() != null ? VISIBLE : (mAreHolesAllowed ? INVISIBLE : GONE));
}
@Override
@@ -378,49 +333,20 @@
return findDelegateView(xInOurCoordinates, yInOurCoorindates) != null;
}
- private void removeNavButtons() {
- if (mButtonRegion != null) {
- mButtonRegion.removeAllViews();
- removeView(mButtonRegion);
- } // else We've never been in 3 button. Woah Scoob!
- }
-
/**
* Add back/home/recents buttons into a single ViewGroup that will be inserted at
* {@param navButtonStartIndex}
*/
private void createNavButtons() {
- ActivityContext context = getActivityContext();
- if (mButtonRegion == null) {
- mButtonRegion = new LinearLayout(getContext());
- } else {
- mButtonRegion.removeAllViews();
- }
- mButtonRegion.setVisibility(VISIBLE);
-
LinearLayout.LayoutParams buttonParams = new LinearLayout.LayoutParams(
- context.getDeviceProfile().iconSizePx,
- context.getDeviceProfile().iconSizePx
+ mActivityContext.getDeviceProfile().iconSizePx,
+ mActivityContext.getDeviceProfile().iconSizePx
);
buttonParams.gravity = Gravity.CENTER;
- View backButton = mButtonProvider.getBack();
- backButton.setOnClickListener(view -> mControllerCallbacks.onNavigationButtonClick(
- BUTTON_BACK));
- mButtonRegion.addView(backButton, buttonParams);
-
- // Home button
- View homeButton = mButtonProvider.getHome();
- homeButton.setOnClickListener(view -> mControllerCallbacks.onNavigationButtonClick(
- BUTTON_HOME));
- mButtonRegion.addView(homeButton, buttonParams);
-
- View recentsButton = mButtonProvider.getRecents();
- recentsButton.setOnClickListener(view -> mControllerCallbacks.onNavigationButtonClick(
- BUTTON_RECENTS));
- mButtonRegion.addView(recentsButton, buttonParams);
-
- addView(mButtonRegion, mNavButtonStartIndex);
+ mSystemButtonContainer.addView(mButtonProvider.getBack(), buttonParams);
+ mSystemButtonContainer.addView(mButtonProvider.getHome(), buttonParams);
+ mSystemButtonContainer.addView(mButtonProvider.getRecents(), buttonParams);
}
@Override
@@ -428,7 +354,7 @@
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
mIsDraggingItem = true;
- AbstractFloatingView.closeAllOpenViews(getActivityContext());
+ AbstractFloatingView.closeAllOpenViews(mActivityContext);
return true;
case DragEvent.ACTION_DRAG_ENDED:
mIsDraggingItem = false;
@@ -445,26 +371,26 @@
* @return The bounding box of where the hotseat elements are relative to this TaskbarView.
*/
protected RectF getHotseatBounds() {
- View firstHotseatView = null, lastHotseatView = null;
- for (int i = mHotseatStartIndex; i <= mHotseatEndIndex; i++) {
- View child = getChildAt(i);
- if (child.getVisibility() != GONE) {
- if (firstHotseatView == null) {
- firstHotseatView = child;
- }
- lastHotseatView = child;
- }
+ RectF result;
+ mDisableRelayout = true;
+ boolean wereHolesAllowed = mAreHolesAllowed;
+ setHolesAllowedInLayoutNoAnimation(true);
+ result = new RectF(
+ mHotseatIconsContainer.getLeft(),
+ mHotseatIconsContainer.getTop(),
+ mHotseatIconsContainer.getRight(),
+ mHotseatIconsContainer.getBottom());
+ setHolesAllowedInLayoutNoAnimation(wereHolesAllowed);
+ mDisableRelayout = false;
+
+ return result;
+ }
+
+ @Override
+ public void requestLayout() {
+ if (!mDisableRelayout) {
+ super.requestLayout();
}
- if (firstHotseatView == null || lastHotseatView == null) {
- return new RectF();
- }
- View leftmostHotseatView = !mIsRtl ? firstHotseatView : lastHotseatView;
- View rightmostHotseatView = !mIsRtl ? lastHotseatView : firstHotseatView;
- return new RectF(
- leftmostHotseatView.getLeft() - mItemMarginLeftRight,
- leftmostHotseatView.getTop(),
- rightmostHotseatView.getRight() + mItemMarginLeftRight,
- rightmostHotseatView.getBottom());
}
// FolderIconParent implemented methods.
@@ -495,7 +421,7 @@
}
private View inflate(@LayoutRes int layoutResId) {
- return getActivityContext().getLayoutInflater().inflate(layoutResId, this, false);
+ return mActivityContext.getLayoutInflater().inflate(layoutResId, this, false);
}
@Override
@@ -503,7 +429,11 @@
// Ignore, we just implement Insettable to draw behind system insets.
}
- private <T extends Context & ActivityContext> T getActivityContext() {
- return ActivityContext.lookupContext(getContext());
+ public void setIconsVisibility(boolean isVisible) {
+ mHotseatIconsContainer.setVisibility(isVisible ? VISIBLE : INVISIBLE);
+ }
+
+ public boolean areIconsVisible() {
+ return mHotseatIconsContainer.getVisibility() == VISIBLE;
}
}
diff --git a/quickstep/src/com/android/launcher3/uioverrides/BaseRecentsViewStateController.java b/quickstep/src/com/android/launcher3/uioverrides/BaseRecentsViewStateController.java
index 814cf93..1d52315 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/BaseRecentsViewStateController.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/BaseRecentsViewStateController.java
@@ -25,7 +25,6 @@
import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_TRANSLATE_Y;
import static com.android.launcher3.states.StateAnimationConfig.SKIP_OVERVIEW;
import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_HORIZONTAL_OFFSET;
-import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_VERTICAL_OFFSET;
import static com.android.quickstep.views.RecentsView.RECENTS_GRID_PROGRESS;
import static com.android.quickstep.views.RecentsView.RECENTS_SCALE_PROPERTY;
import static com.android.quickstep.views.RecentsView.TASK_PRIMARY_SPLIT_TRANSLATION;
@@ -65,7 +64,6 @@
float[] scaleAndOffset = state.getOverviewScaleAndOffset(mLauncher);
RECENTS_SCALE_PROPERTY.set(mRecentsView, scaleAndOffset[0]);
ADJACENT_PAGE_HORIZONTAL_OFFSET.set(mRecentsView, scaleAndOffset[1]);
- ADJACENT_PAGE_VERTICAL_OFFSET.set(mRecentsView, scaleAndOffset[2]);
TASK_SECONDARY_TRANSLATION.set(mRecentsView, 0f);
getContentAlphaProperty().set(mRecentsView, state.overviewUi ? 1f : 0);
@@ -97,8 +95,6 @@
config.getInterpolator(ANIM_OVERVIEW_SCALE, LINEAR));
setter.setFloat(mRecentsView, ADJACENT_PAGE_HORIZONTAL_OFFSET, scaleAndOffset[1],
config.getInterpolator(ANIM_OVERVIEW_TRANSLATE_X, LINEAR));
- setter.setFloat(mRecentsView, ADJACENT_PAGE_VERTICAL_OFFSET, scaleAndOffset[2],
- config.getInterpolator(ANIM_OVERVIEW_TRANSLATE_Y, LINEAR));
setter.setFloat(mRecentsView, TASK_SECONDARY_TRANSLATION, 0f,
config.getInterpolator(ANIM_OVERVIEW_TRANSLATE_Y, LINEAR));
PagedOrientationHandler orientationHandler =
diff --git a/quickstep/src/com/android/launcher3/uioverrides/QuickstepInteractionHandler.java b/quickstep/src/com/android/launcher3/uioverrides/QuickstepInteractionHandler.java
index 0014b85..3a8de3c 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/QuickstepInteractionHandler.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/QuickstepInteractionHandler.java
@@ -19,13 +19,13 @@
import android.app.ActivityTaskManager;
import android.app.PendingIntent;
import android.content.Intent;
-import android.os.Build;
import android.os.RemoteException;
import android.util.Log;
import android.util.Pair;
import android.view.View;
import android.widget.RemoteViews;
+import com.android.launcher3.Utilities;
import com.android.launcher3.model.data.ItemInfo;
import com.android.launcher3.util.ActivityOptionsWrapper;
import com.android.launcher3.widget.LauncherAppWidgetHostView;
@@ -41,6 +41,7 @@
mLauncher = launcher;
}
+ @SuppressWarnings("NewApi")
@Override
public boolean onInteraction(View view, PendingIntent pendingIntent,
RemoteViews.RemoteResponse remoteResponse) {
@@ -53,7 +54,7 @@
Pair<Intent, ActivityOptions> options = remoteResponse.getLaunchOptions(hostView);
ActivityOptionsWrapper activityOptions = mLauncher.getAppTransitionManager()
.getActivityLaunchOptions(mLauncher, hostView);
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && !pendingIntent.isActivity()) {
+ if (Utilities.ATLEAST_S && !pendingIntent.isActivity()) {
// In the event this pending intent eventually launches an activity, i.e. a trampoline,
// use the Quickstep transition animation.
try {
diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java b/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java
index 06ffae4..01c9e76 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java
@@ -19,6 +19,7 @@
import android.content.Context;
import android.graphics.Color;
+import android.os.SystemProperties;
import com.android.launcher3.BaseDraggingActivity;
import com.android.launcher3.DeviceProfile;
@@ -84,7 +85,8 @@
@Override
protected float getDepthUnchecked(Context context) {
- return 1f;
+ //TODO revert when b/178661709 is fixed
+ return SystemProperties.getBoolean("ro.launcher.depth.appLaunch", true) ? 1 : 0;
}
@Override
@@ -96,6 +98,6 @@
BaseDraggingActivity activity) {
return new float[] {
((RecentsView) activity.getOverviewPanel()).getMaxScaleForFullScreen(),
- NO_OFFSET, NO_OFFSET};
+ NO_OFFSET};
}
}
diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/OverviewModalTaskState.java b/quickstep/src/com/android/launcher3/uioverrides/states/OverviewModalTaskState.java
index 1fc288f..6f084a1 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/states/OverviewModalTaskState.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/states/OverviewModalTaskState.java
@@ -78,6 +78,6 @@
float scale = Math.min((float) modalTaskSize.height() / taskSize.y,
(float) modalTaskSize.width() / taskSize.x);
- return new float[] {scale, NO_OFFSET, NO_OFFSET};
+ return new float[] {scale, NO_OFFSET};
}
}
diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java b/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java
index c9cfad3..8c128c8 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java
@@ -20,6 +20,7 @@
import android.content.Context;
import android.graphics.Rect;
+import android.os.SystemProperties;
import android.view.View;
import com.android.launcher3.DeviceProfile;
@@ -59,7 +60,7 @@
@Override
public int getTransitionDuration(Context context) {
- // In gesture modes, overview comes in all the way from the bottom, so give it more time.
+ // In gesture modes, overview comes in all the way from the side, so give it more time.
return SysUINavigationMode.INSTANCE.get(context).getMode().hasGestures ? 380 : 250;
}
@@ -78,7 +79,7 @@
@Override
public float[] getOverviewScaleAndOffset(Launcher launcher) {
- return new float[] {NO_SCALE, NO_OFFSET, NO_OFFSET};
+ return new float[] {NO_SCALE, NO_OFFSET};
}
@Override
@@ -127,7 +128,8 @@
@Override
protected float getDepthUnchecked(Context context) {
- return 1f;
+ //TODO revert when b/178661709 is fixed
+ return SystemProperties.getBoolean("ro.launcher.depth.overview", true) ? 1 : 0;
}
@Override
diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java b/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java
index adc6b18..eb524a9 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java
@@ -23,10 +23,11 @@
import static com.android.launcher3.LauncherState.OVERVIEW;
import static com.android.launcher3.WorkspaceStateTransitionAnimation.getSpringScaleAnimator;
import static com.android.launcher3.anim.Interpolators.ACCEL;
-import static com.android.launcher3.anim.Interpolators.AGGRESSIVE_EASE_IN_OUT;
+import static com.android.launcher3.anim.Interpolators.ACCEL_DEACCEL;
import static com.android.launcher3.anim.Interpolators.DEACCEL;
import static com.android.launcher3.anim.Interpolators.DEACCEL_1_7;
import static com.android.launcher3.anim.Interpolators.DEACCEL_3;
+import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN;
import static com.android.launcher3.anim.Interpolators.FINAL_FRAME;
import static com.android.launcher3.anim.Interpolators.INSTANT;
import static com.android.launcher3.anim.Interpolators.LINEAR;
@@ -66,11 +67,11 @@
// Scale recents takes before animating in
private static final float RECENTS_PREPARE_SCALE = 1.33f;
// Scale workspace takes before animating in
- private static final float WORKSPACE_PREPARE_SCALE_GESTURES = 0.97f;
- private static final float WORKSPACE_PREPARE_SCALE_BUTTONS = 0.92f;
- // When the overview to home transition reaches this percentage, immediately hide overview and
- // start animating away the scrim and animating in workspace.
- private static final float OVERVIEW_TO_HOME_HARD_HAND_OFF = 0.4f;
+ private static final float WORKSPACE_PREPARE_SCALE = 0.92f;
+ // Constants to specify how to scroll RecentsView to the default page if it's not already there.
+ private static final int DEFAULT_PAGE = 0;
+ private static final int PER_PAGE_SCROLL_DURATION = 150;
+ private static final int MAX_PAGE_SCROLL_DURATION = 750;
// Due to use of physics, duration may differ between devices so we need to calculate and
// cache the value.
@@ -85,33 +86,32 @@
StateAnimationConfig config) {
RecentsView overview = mActivity.getOverviewPanel();
if (toState == NORMAL && fromState == OVERVIEW) {
- final float workspacePrepareScale;
+ config.setInterpolator(ANIM_OVERVIEW_ACTIONS_FADE, DEACCEL);
+ config.setInterpolator(ANIM_SCRIM_FADE, LINEAR);
+ config.setInterpolator(ANIM_WORKSPACE_SCALE, DEACCEL);
+ config.setInterpolator(ANIM_WORKSPACE_FADE, ACCEL);
+
if (SysUINavigationMode.getMode(mActivity).hasGestures
&& overview.getTaskViewCount() > 0) {
- workspacePrepareScale = WORKSPACE_PREPARE_SCALE_GESTURES;
// Overview is going offscreen, so keep it at its current scale and opacity.
config.setInterpolator(ANIM_OVERVIEW_SCALE, FINAL_FRAME);
- config.setInterpolator(ANIM_OVERVIEW_FADE, clampToProgress(
- FINAL_FRAME, 0f, OVERVIEW_TO_HOME_HARD_HAND_OFF));
- config.setInterpolator(ANIM_OVERVIEW_ACTIONS_FADE, clampToProgress(
- DEACCEL, 0f, OVERVIEW_TO_HOME_HARD_HAND_OFF));
- config.setInterpolator(ANIM_OVERVIEW_TRANSLATE_Y, AGGRESSIVE_EASE_IN_OUT);
- config.setInterpolator(ANIM_SCRIM_FADE, clampToProgress(
- DEACCEL, OVERVIEW_TO_HOME_HARD_HAND_OFF, 1f));
- config.setInterpolator(ANIM_WORKSPACE_SCALE, clampToProgress(
- DEACCEL, OVERVIEW_TO_HOME_HARD_HAND_OFF, 1f));
- config.setInterpolator(ANIM_WORKSPACE_FADE, clampToProgress(
- INSTANT, OVERVIEW_TO_HOME_HARD_HAND_OFF, 1f));
+ config.setInterpolator(ANIM_OVERVIEW_FADE, FINAL_FRAME);
+ config.setInterpolator(ANIM_OVERVIEW_TRANSLATE_X,
+ clampToProgress(FAST_OUT_SLOW_IN, 0, 0.75f));
+ config.setInterpolator(ANIM_OVERVIEW_TRANSLATE_Y, FINAL_FRAME);
} else {
- workspacePrepareScale = WORKSPACE_PREPARE_SCALE_BUTTONS;
+ config.setInterpolator(ANIM_OVERVIEW_TRANSLATE_X, ACCEL_DEACCEL);
config.setInterpolator(ANIM_OVERVIEW_SCALE, clampToProgress(ACCEL, 0, 0.9f));
config.setInterpolator(ANIM_OVERVIEW_FADE, DEACCEL_1_7);
- config.setInterpolator(ANIM_OVERVIEW_ACTIONS_FADE, LINEAR);
- config.setInterpolator(ANIM_SCRIM_FADE, LINEAR);
- config.setInterpolator(ANIM_WORKSPACE_SCALE, DEACCEL);
- config.setInterpolator(ANIM_WORKSPACE_FADE, ACCEL);
}
+ // Scroll RecentsView to page 0 as it goes offscreen, if necessary.
+ int numPagesToScroll = overview.getNextPage() - DEFAULT_PAGE;
+ long scrollDuration = Math.min(MAX_PAGE_SCROLL_DURATION,
+ numPagesToScroll * PER_PAGE_SCROLL_DURATION);
+ config.duration = Math.max(config.duration, scrollDuration);
+ overview.snapToPage(DEFAULT_PAGE, Math.toIntExact(config.duration));
+
Workspace workspace = mActivity.getWorkspace();
// Start from a higher workspace scale, but only if we're invisible so we don't jump.
boolean isWorkspaceVisible = workspace.getVisibility() == VISIBLE;
@@ -122,14 +122,14 @@
&& currentChild.getShortcutsAndWidgets().getAlpha() > 0;
}
if (!isWorkspaceVisible) {
- workspace.setScaleX(workspacePrepareScale);
- workspace.setScaleY(workspacePrepareScale);
+ workspace.setScaleX(WORKSPACE_PREPARE_SCALE);
+ workspace.setScaleY(WORKSPACE_PREPARE_SCALE);
}
Hotseat hotseat = mActivity.getHotseat();
boolean isHotseatVisible = hotseat.getVisibility() == VISIBLE && hotseat.getAlpha() > 0;
if (!isHotseatVisible) {
- hotseat.setScaleX(workspacePrepareScale);
- hotseat.setScaleY(workspacePrepareScale);
+ hotseat.setScaleX(WORKSPACE_PREPARE_SCALE);
+ hotseat.setScaleY(WORKSPACE_PREPARE_SCALE);
}
} else if ((fromState == NORMAL || fromState == HINT_STATE
|| fromState == HINT_STATE_TWO_BUTTON) && toState == OVERVIEW) {
diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonQuickSwitchTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonQuickSwitchTouchController.java
index 62687c5..40c3e02 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonQuickSwitchTouchController.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonQuickSwitchTouchController.java
@@ -43,7 +43,6 @@
import static com.android.launcher3.util.DisplayController.getSingleFrameMs;
import static com.android.launcher3.util.VibratorWrapper.OVERVIEW_HAPTIC;
import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_HORIZONTAL_OFFSET;
-import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_VERTICAL_OFFSET;
import static com.android.quickstep.views.RecentsView.CONTENT_ALPHA;
import static com.android.quickstep.views.RecentsView.FULLSCREEN_PROGRESS;
import static com.android.quickstep.views.RecentsView.RECENTS_SCALE_PROPERTY;
@@ -74,7 +73,7 @@
import com.android.quickstep.util.AnimatorControllerWithResistance;
import com.android.quickstep.util.LayoutUtils;
import com.android.quickstep.util.MotionPauseDetector;
-import com.android.quickstep.util.StaggeredWorkspaceAnim;
+import com.android.quickstep.util.WorkspaceRevealAnim;
import com.android.quickstep.views.LauncherRecentsView;
/**
@@ -224,7 +223,6 @@
// Set RecentView's initial properties.
RECENTS_SCALE_PROPERTY.set(mRecentsView, fromState.getOverviewScaleAndOffset(mLauncher)[0]);
ADJACENT_PAGE_HORIZONTAL_OFFSET.set(mRecentsView, 1f);
- ADJACENT_PAGE_VERTICAL_OFFSET.set(mRecentsView, 0f);
mRecentsView.setContentAlpha(1);
mRecentsView.setFullscreenProgress(fromState.getOverviewFullscreenProgress());
mLauncher.getActionsView().getVisibilityAlpha().setValue(
@@ -386,8 +384,7 @@
updateNonOverviewAnim(targetState, config);
nonOverviewAnim = mNonOverviewAnim.getAnimationPlayer();
- new StaggeredWorkspaceAnim(mLauncher, velocity.y, false /* animateOverviewScrim */)
- .start();
+ new WorkspaceRevealAnim(mLauncher, false /* animateOverviewScrim */).start();
} else {
boolean canceled = targetState == NORMAL;
if (canceled) {
diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java
index 5891d5f..f0ef9cc 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java
@@ -31,7 +31,6 @@
import static com.android.launcher3.states.StateAnimationConfig.ANIM_WORKSPACE_TRANSLATE;
import static com.android.launcher3.util.SystemUiController.UI_STATE_FULLSCREEN_TASK;
import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_HORIZONTAL_OFFSET;
-import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_VERTICAL_OFFSET;
import static com.android.quickstep.views.RecentsView.RECENTS_SCALE_PROPERTY;
import static com.android.quickstep.views.RecentsView.UPDATE_SYSUI_FLAGS_THRESHOLD;
import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_RECENTS;
@@ -113,7 +112,6 @@
RECENTS_SCALE_PROPERTY.set(mOverviewPanel,
QUICK_SWITCH.getOverviewScaleAndOffset(mLauncher)[0] * 0.85f);
ADJACENT_PAGE_HORIZONTAL_OFFSET.set(mOverviewPanel, 1f);
- ADJACENT_PAGE_VERTICAL_OFFSET.set(mOverviewPanel, 0f);
mOverviewPanel.setContentAlpha(1);
mCurrentAnimation = mLauncher.getStateManager()
diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewTouchController.java
index 70b3870..c6ea953 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewTouchController.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewTouchController.java
@@ -28,6 +28,7 @@
import com.android.launcher3.AbstractFloatingView;
import com.android.launcher3.BaseDraggingActivity;
import com.android.launcher3.LauncherAnimUtils;
+import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.anim.AnimatorPlaybackController;
import com.android.launcher3.anim.Interpolators;
@@ -50,6 +51,10 @@
extends AnimatorListenerAdapter implements TouchController,
SingleAxisSwipeDetector.Listener {
+ private static final float ANIMATION_PROGRESS_FRACTION_MIDPOINT = 0.5f;
+ private static final long MIN_TASK_DISMISS_ANIMATION_DURATION = 300;
+ private static final long MAX_TASK_DISMISS_ANIMATION_DURATION = 600;
+
protected final T mActivity;
private final SingleAxisSwipeDetector mDetector;
private final RecentsView mRecentsView;
@@ -277,14 +282,32 @@
} else {
mFlingBlockCheck.onEvent();
}
- mCurrentAnimation.setPlayFraction(Utilities.boundToRange(
- totalDisplacement * mProgressMultiplier, 0, 1));
+
+ // Once halfway through task dismissal interpolation, switch from reversible dragging-task
+ // animation to playing the remaining task translation animations
+ if (mCurrentAnimation.getProgressFraction() < ANIMATION_PROGRESS_FRACTION_MIDPOINT) {
+ // Halve the value as we are animating the drag across the full length for only the
+ // first half of the progress
+ mCurrentAnimation.setPlayFraction(
+ Utilities.boundToRange(totalDisplacement * mProgressMultiplier / 2, 0, 1));
+ } else {
+ float dragVelocity = -mTaskBeingDragged.getResources().getDimension(
+ mRecentsView.showAsGrid() ? R.dimen.default_task_dismiss_drag_velocity_grid
+ : R.dimen.default_task_dismiss_drag_velocity);
+ onDragEnd(dragVelocity);
+ return true;
+ }
return true;
}
@Override
public void onDragEnd(float velocity) {
+ // Limit velocity, as very large scalar values make animations play too quickly
+ float maxTaskDismissDragVelocity = mTaskBeingDragged.getResources().getDimension(
+ R.dimen.max_task_dismiss_drag_velocity);
+ velocity = Utilities.boundToRange(velocity, -maxTaskDismissDragVelocity,
+ maxTaskDismissDragVelocity);
boolean fling = mDetector.isFling(velocity);
final boolean goingToEnd;
boolean blockedFling = fling && mFlingBlockCheck.isBlocked();
@@ -305,6 +328,11 @@
if (blockedFling && !goingToEnd) {
animationDuration *= LauncherAnimUtils.blockedFlingDurationFactor(velocity);
}
+ // Due to very high or low velocity dismissals, animation durations can be inconsistently
+ // long or short. Bound the duration for animation of task translations for a more
+ // standardized feel.
+ animationDuration = Utilities.boundToRange(animationDuration,
+ MIN_TASK_DISMISS_ANIMATION_DURATION, MAX_TASK_DISMISS_ANIMATION_DURATION);
mCurrentAnimation.setEndAction(this::clearState);
mCurrentAnimation.startWithVelocity(mActivity, goingToEnd,
diff --git a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
index 63646d0..e0f430d 100644
--- a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
+++ b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
@@ -102,10 +102,10 @@
import com.android.quickstep.util.ProtoTracer;
import com.android.quickstep.util.RecentsOrientedState;
import com.android.quickstep.util.RectFSpringAnim;
-import com.android.quickstep.util.StaggeredWorkspaceAnim;
import com.android.quickstep.util.SurfaceTransactionApplier;
import com.android.quickstep.util.SwipePipToHomeAnimator;
import com.android.quickstep.util.TransformParams;
+import com.android.quickstep.util.WorkspaceRevealAnim;
import com.android.quickstep.views.RecentsView;
import com.android.quickstep.views.TaskView;
import com.android.systemui.shared.recents.model.ThumbnailData;
@@ -201,7 +201,7 @@
STATE_LAUNCHER_PRESENT | STATE_LAUNCHER_DRAWN | STATE_LAUNCHER_STARTED;
public static final long MAX_SWIPE_DURATION = 350;
- public static final long HOME_DURATION = StaggeredWorkspaceAnim.DURATION_MS;
+ public static final long HOME_DURATION = WorkspaceRevealAnim.DURATION_MS;
public static final float MIN_PROGRESS_FOR_OVERVIEW = 0.7f;
private static final float SWIPE_DURATION_MULTIPLIER =
@@ -1126,6 +1126,7 @@
windowAnim.start(mContext, velocityPxPerMs);
mRunningWindowAnim = RunningWindowAnim.wrap(windowAnim);
}
+ homeAnimFactory.setSwipeVelocity(velocityPxPerMs.y);
homeAnimFactory.playAtomicAnimation(velocityPxPerMs.y);
mLauncherTransitionController = null;
@@ -1483,6 +1484,9 @@
private void finishCurrentTransitionToRecents() {
if (LIVE_TILE.get()) {
mStateCallback.setStateOnUiThread(STATE_CURRENT_TASK_FINISHED);
+ if (mRecentsAnimationController != null) {
+ mRecentsAnimationController.getController().detachNavigationBarFromApp(true);
+ }
} else if (!hasTargets() || mRecentsAnimationController == null) {
// If there are no targets or the animation not started, then there is nothing to finish
mStateCallback.setStateOnUiThread(STATE_CURRENT_TASK_FINISHED);
diff --git a/quickstep/src/com/android/quickstep/BaseActivityInterface.java b/quickstep/src/com/android/quickstep/BaseActivityInterface.java
index c8865c4..86bf119 100644
--- a/quickstep/src/com/android/quickstep/BaseActivityInterface.java
+++ b/quickstep/src/com/android/quickstep/BaseActivityInterface.java
@@ -23,8 +23,8 @@
import static com.android.quickstep.GestureState.GestureEndTarget.RECENTS;
import static com.android.quickstep.SysUINavigationMode.getMode;
import static com.android.quickstep.util.RecentsAtomicAnimationFactory.INDEX_RECENTS_FADE_ANIM;
-import static com.android.quickstep.util.RecentsAtomicAnimationFactory.INDEX_RECENTS_TRANSLATE_Y_ANIM;
-import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_VERTICAL_OFFSET;
+import static com.android.quickstep.util.RecentsAtomicAnimationFactory.INDEX_RECENTS_TRANSLATE_X_ANIM;
+import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_HORIZONTAL_OFFSET;
import static com.android.quickstep.views.RecentsView.FULLSCREEN_PROGRESS;
import static com.android.quickstep.views.RecentsView.RECENTS_SCALE_PROPERTY;
import static com.android.quickstep.views.RecentsView.TASK_SECONDARY_TRANSLATION;
@@ -52,7 +52,6 @@
import com.android.launcher3.statehandlers.DepthController;
import com.android.launcher3.statemanager.BaseState;
import com.android.launcher3.statemanager.StatefulActivity;
-import com.android.launcher3.taskbar.TaskbarController;
import com.android.launcher3.touch.PagedOrientationHandler;
import com.android.launcher3.util.WindowBounds;
import com.android.launcher3.views.ScrimView;
@@ -123,11 +122,6 @@
return null;
}
- @Nullable
- public TaskbarController getTaskbarController() {
- return null;
- }
-
public final boolean isResumed() {
ACTIVITY_TYPE activity = getCreatedActivity();
return activity != null && activity.hasBeenResumed();
@@ -368,13 +362,6 @@
protected abstract int getOverviewScrimColorForState(ACTIVITY_TYPE activity, STATE_TYPE state);
/**
- * See {@link com.android.systemui.shared.system.QuickStepContract.SystemUiStateFlags}
- * @param systemUiStateFlags The latest SystemUiStateFlags
- */
- public void onSystemUiFlagsChanged(int systemUiStateFlags) {
- }
-
- /**
* Returns the expected STATE_TYPE from the provided GestureEndTarget.
*/
public abstract STATE_TYPE stateFromGestureEndTarget(GestureState.GestureEndTarget endTarget);
@@ -461,17 +448,17 @@
float fromTranslation = attached ? 1 : 0;
float toTranslation = attached ? 0 : 1;
mActivity.getStateManager()
- .cancelStateElementAnimation(INDEX_RECENTS_TRANSLATE_Y_ANIM);
+ .cancelStateElementAnimation(INDEX_RECENTS_TRANSLATE_X_ANIM);
if (!recentsView.isShown() && animate) {
- ADJACENT_PAGE_VERTICAL_OFFSET.set(recentsView, fromTranslation);
+ ADJACENT_PAGE_HORIZONTAL_OFFSET.set(recentsView, fromTranslation);
} else {
- fromTranslation = ADJACENT_PAGE_VERTICAL_OFFSET.get(recentsView);
+ fromTranslation = ADJACENT_PAGE_HORIZONTAL_OFFSET.get(recentsView);
}
if (!animate) {
- ADJACENT_PAGE_VERTICAL_OFFSET.set(recentsView, toTranslation);
+ ADJACENT_PAGE_HORIZONTAL_OFFSET.set(recentsView, toTranslation);
} else {
mActivity.getStateManager().createStateElementAnimation(
- INDEX_RECENTS_TRANSLATE_Y_ANIM,
+ INDEX_RECENTS_TRANSLATE_X_ANIM,
fromTranslation, toTranslation).start();
}
diff --git a/quickstep/src/com/android/quickstep/LauncherActivityInterface.java b/quickstep/src/com/android/quickstep/LauncherActivityInterface.java
index 5217c3b..ff69180 100644
--- a/quickstep/src/com/android/quickstep/LauncherActivityInterface.java
+++ b/quickstep/src/com/android/quickstep/LauncherActivityInterface.java
@@ -22,7 +22,6 @@
import static com.android.launcher3.anim.AnimatorListeners.forEndCallback;
import static com.android.launcher3.anim.Interpolators.LINEAR;
import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
-import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_IME_SHOWING;
import android.animation.Animator;
import android.animation.AnimatorSet;
@@ -164,8 +163,7 @@
}
@Nullable
- @Override
- public TaskbarController getTaskbarController() {
+ private TaskbarController getTaskbarController() {
BaseQuickstepLauncher launcher = getCreatedActivity();
if (launcher == null) {
return null;
@@ -301,16 +299,6 @@
}
@Override
- public void onSystemUiFlagsChanged(int systemUiStateFlags) {
- TaskbarController taskbarController = getTaskbarController();
- if (taskbarController == null) {
- return;
- }
- boolean isImeVisible = (systemUiStateFlags & SYSUI_STATE_IME_SHOWING) != 0;
- taskbarController.setIsImeVisible(isImeVisible);
- }
-
- @Override
public boolean deferStartingActivity(RecentsAnimationDeviceState deviceState, MotionEvent ev) {
TaskbarController taskbarController = getTaskbarController();
if (taskbarController == null) {
diff --git a/quickstep/src/com/android/quickstep/LauncherSwipeHandlerV2.java b/quickstep/src/com/android/quickstep/LauncherSwipeHandlerV2.java
index f125063..811af7e 100644
--- a/quickstep/src/com/android/quickstep/LauncherSwipeHandlerV2.java
+++ b/quickstep/src/com/android/quickstep/LauncherSwipeHandlerV2.java
@@ -18,13 +18,14 @@
import static com.android.launcher3.LauncherAnimUtils.SCALE_PROPERTY;
import static com.android.launcher3.LauncherAnimUtils.VIEW_TRANSLATE_Y;
import static com.android.launcher3.LauncherState.NORMAL;
+import static com.android.launcher3.Utilities.boundToRange;
import static com.android.launcher3.Utilities.dpToPx;
-import static com.android.launcher3.Utilities.mapToRange;
-import static com.android.launcher3.anim.Interpolators.LINEAR;
import static com.android.launcher3.config.FeatureFlags.PROTOTYPE_APP_CLOSE;
import static com.android.launcher3.views.FloatingIconView.SHAPE_PROGRESS_DURATION;
import static com.android.launcher3.views.FloatingIconView.getFloatingIconView;
+import static java.lang.Math.round;
+
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
@@ -52,10 +53,12 @@
import com.android.launcher3.util.DynamicResource;
import com.android.launcher3.util.ObjectWrapper;
import com.android.launcher3.views.FloatingIconView;
+import com.android.launcher3.views.FloatingView;
import com.android.launcher3.widget.LauncherAppWidgetHostView;
import com.android.quickstep.util.AppCloseConfig;
import com.android.quickstep.util.RectFSpringAnim;
import com.android.quickstep.util.StaggeredWorkspaceAnim;
+import com.android.quickstep.util.WorkspaceRevealAnim;
import com.android.quickstep.views.FloatingWidgetView;
import com.android.quickstep.views.RecentsView;
import com.android.quickstep.views.TaskView;
@@ -112,10 +115,6 @@
private HomeAnimationFactory createIconHomeAnimationFactory(View workspaceView) {
final ResourceProvider rp = DynamicResource.provider(mActivity);
final float transY = dpToPx(rp.getFloat(R.dimen.swipe_up_trans_y_dp));
- float dpPerSecond = dpToPx(rp.getFloat(R.dimen.swipe_up_trans_y_dp_per_s));
- final float launcherAlphaMax =
- rp.getFloat(R.dimen.swipe_up_launcher_alpha_max_progress);
-
RectF iconLocation = new RectF();
FloatingIconView floatingIconView = getFloatingIconView(mActivity, workspaceView,
true /* hideOriginal */, iconLocation, false /* isOpening */);
@@ -123,73 +122,25 @@
// We want the window alpha to be 0 once this threshold is met, so that the
// FolderIconView can be seen morphing into the icon shape.
float windowAlphaThreshold = 1f - SHAPE_PROGRESS_DURATION;
- return new LauncherHomeAnimationFactory() {
+
+ return new FloatingViewHomeAnimationFactory(floatingIconView) {
// There is a delay in loading the icon, so we need to keep the window
// opaque until it is ready.
private boolean mIsFloatingIconReady = false;
- private @Nullable ValueAnimator mBounceBackAnimator;
-
@Override
public RectF getWindowTargetRect() {
- if (PROTOTYPE_APP_CLOSE.get()) {
- // We want the target rect to be at this offset position, so that all
- // launcher content can spring back upwards.
- floatingIconView.setPositionOffsetY(transY);
- }
+ super.getWindowTargetRect();
return iconLocation;
}
@Override
public void setAnimation(RectFSpringAnim anim) {
+ super.setAnimation(anim);
anim.addAnimatorListener(floatingIconView);
floatingIconView.setOnTargetChangeListener(anim::onTargetPositionChanged);
floatingIconView.setFastFinishRunnable(anim::end);
- if (PROTOTYPE_APP_CLOSE.get()) {
- mBounceBackAnimator = bounceBackToRestingPosition();
- // Use a spring to put drag layer translation back to 0.
- anim.addAnimatorListener(new AnimatorListenerAdapter() {
- @Override
- public void onAnimationEnd(Animator animation) {
- floatingIconView.setPositionOffsetY(0);
- mBounceBackAnimator.start();
- }
- });
-
- Workspace workspace = mActivity.getWorkspace();
- workspace.setPivotToScaleWithSelf(mActivity.getHotseat());
- }
- }
-
- private ValueAnimator bounceBackToRestingPosition() {
- DragLayer dl = mActivity.getDragLayer();
- Workspace workspace = mActivity.getWorkspace();
- Hotseat hotseat = mActivity.getHotseat();
-
- final float startValue = transY;
- final float endValue = 0;
- // Ensures the velocity is always aligned with the direction.
- float pixelPerSecond = Math.abs(dpPerSecond) * Math.signum(endValue - transY);
-
- ValueAnimator springTransY = new SpringAnimationBuilder(dl.getContext())
- .setStiffness(rp.getFloat(R.dimen.swipe_up_trans_y_stiffness))
- .setDampingRatio(rp.getFloat(R.dimen.swipe_up_trans_y_damping))
- .setMinimumVisibleChange(1f)
- .setStartValue(startValue)
- .setEndValue(endValue)
- .setStartVelocity(pixelPerSecond)
- .build(dl, VIEW_TRANSLATE_Y);
- springTransY.addListener(new AnimatorListenerAdapter() {
- @Override
- public void onAnimationEnd(Animator animation) {
- dl.setTranslationY(0f);
- dl.setAlpha(1f);
- SCALE_PROPERTY.set(workspace, 1f);
- SCALE_PROPERTY.set(hotseat, 1f);
- }
- });
- return springTransY;
}
@Override
@@ -204,34 +155,15 @@
@Override
public void update(@Nullable AppCloseConfig config, RectF currentRect,
float progress, float radius) {
+ super.update(config, currentRect, progress, radius);
int fgAlpha = 255;
if (config != null && PROTOTYPE_APP_CLOSE.get()) {
- DragLayer dl = mActivity.getDragLayer();
- float translationY = config.getWorkspaceTransY();
- dl.setTranslationY(translationY);
-
- float alpha = mapToRange(progress, 0, launcherAlphaMax, 0, 1f, LINEAR);
- dl.setAlpha(Math.min(alpha, 1f));
-
- float scale = Math.min(1f, config.getWorkspaceScale());
- SCALE_PROPERTY.set(mActivity.getWorkspace(), scale);
- SCALE_PROPERTY.set(mActivity.getHotseat(), scale);
- SCALE_PROPERTY.set(mActivity.getAppsView(), scale);
-
progress = config.getInterpolatedProgress();
fgAlpha = config.getFgAlpha();
}
floatingIconView.update(1f, fgAlpha, currentRect, progress,
windowAlphaThreshold, radius, false);
}
-
- @Override
- public void onCancel() {
- floatingIconView.fastFinish();
- if (mBounceBackAnimator != null) {
- mBounceBackAnimator.cancel();
- }
- }
};
}
@@ -246,10 +178,11 @@
hostView, backgroundLocation, windowSize,
mTaskViewSimulator.getCurrentCornerRadius(), isTargetTranslucent);
- return new LauncherHomeAnimationFactory() {
+ return new FloatingViewHomeAnimationFactory(floatingWidgetView) {
@Override
public RectF getWindowTargetRect() {
+ super.getWindowTargetRect();
return backgroundLocation;
}
@@ -260,6 +193,8 @@
@Override
public void setAnimation(RectFSpringAnim anim) {
+ super.setAnimation(anim);
+
anim.addAnimatorListener(floatingWidgetView);
floatingWidgetView.setOnTargetChangeListener(anim::onTargetPositionChanged);
floatingWidgetView.setFastFinishRunnable(anim::end);
@@ -273,15 +208,11 @@
@Override
public void update(@Nullable AppCloseConfig config, RectF currentRect,
float progress, float radius) {
+ super.update(config, currentRect, progress, radius);
floatingWidgetView.update(currentRect, 1 /* floatingWidgetAlpha */,
config != null ? config.getFgAlpha() : 1f /* foregroundAlpha */,
0 /* fallbackBackgroundAlpha */, 1 - progress);
}
-
- @Override
- public void onCancel() {
- floatingWidgetView.fastFinish();
- }
};
}
@@ -323,6 +254,120 @@
true /* toRecents */, callback, true /* sendUserLeaveHint */);
}
+ private class FloatingViewHomeAnimationFactory extends LauncherHomeAnimationFactory {
+
+ private final float mTransY;
+ private final FloatingView mFloatingView;
+ private ValueAnimator mBounceBackAnimator;
+ private final AnimatorSet mWorkspaceReveal;
+
+ FloatingViewHomeAnimationFactory(FloatingView floatingView) {
+ mFloatingView = floatingView;
+
+ ResourceProvider rp = DynamicResource.provider(mActivity);
+ mTransY = dpToPx(rp.getFloat(R.dimen.swipe_up_trans_y_dp));
+
+ mWorkspaceReveal = PROTOTYPE_APP_CLOSE.get()
+ ? new WorkspaceRevealAnim(mActivity, true /* animateScrim */).getAnimators()
+ : null;
+ }
+
+ @Override
+ public @NonNull RectF getWindowTargetRect() {
+ if (PROTOTYPE_APP_CLOSE.get()) {
+ // We want the target rect to be at this offset position, so that all
+ // launcher content can spring back upwards.
+ mFloatingView.setPositionOffsetY(mTransY);
+ }
+ return super.getWindowTargetRect();
+ }
+
+ @Override
+ public boolean shouldPlayAtomicWorkspaceReveal() {
+ return false;
+ }
+
+ @Override
+ public void update(@Nullable AppCloseConfig config, RectF currentRect, float progress,
+ float radius) {
+ if (config != null && PROTOTYPE_APP_CLOSE.get()) {
+ DragLayer dl = mActivity.getDragLayer();
+ float translationY = config.getWorkspaceTransY();
+ dl.setTranslationY(translationY);
+
+ long duration = mWorkspaceReveal.getDuration();
+ long playTime = boundToRange(round(duration * progress), 0, duration);
+ mWorkspaceReveal.setCurrentPlayTime(playTime);
+ }
+ }
+
+ protected void bounceBackToRestingPosition() {
+ final float startValue = mTransY;
+ final float endValue = 0;
+ // Ensures the velocity is always aligned with the direction.
+ float pixelPerSecond = Math.abs(mSwipeVelocity) * Math.signum(endValue - mTransY);
+
+ DragLayer dl = mActivity.getDragLayer();
+ Workspace workspace = mActivity.getWorkspace();
+ Hotseat hotseat = mActivity.getHotseat();
+
+ ResourceProvider rp = DynamicResource.provider(mActivity);
+ ValueAnimator springTransY = new SpringAnimationBuilder(dl.getContext())
+ .setStiffness(rp.getFloat(R.dimen.swipe_up_trans_y_stiffness))
+ .setDampingRatio(rp.getFloat(R.dimen.swipe_up_trans_y_damping))
+ .setMinimumVisibleChange(1f)
+ .setStartValue(startValue)
+ .setEndValue(endValue)
+ .setStartVelocity(pixelPerSecond)
+ .build(dl, VIEW_TRANSLATE_Y);
+ springTransY.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ dl.setTranslationY(0f);
+ dl.setAlpha(1f);
+ SCALE_PROPERTY.set(workspace, 1f);
+ SCALE_PROPERTY.set(hotseat, 1f);
+ }
+ });
+
+ mBounceBackAnimator = springTransY;
+ mBounceBackAnimator.start();
+ }
+
+ @Override
+ public void setAnimation(RectFSpringAnim anim) {
+ if (PROTOTYPE_APP_CLOSE.get()) {
+ // Use a spring to put drag layer translation back to 0.
+ anim.addAnimatorListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ mFloatingView.setPositionOffsetY(0);
+ bounceBackToRestingPosition();
+ }
+ });
+
+ // Will be updated manually below so that the two animations are in sync.
+ mWorkspaceReveal.start();
+ mWorkspaceReveal.pause();
+
+ anim.addAnimatorListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ mWorkspaceReveal.end();
+ }
+ });
+ }
+ }
+
+ @Override
+ public void onCancel() {
+ mFloatingView.fastFinish();
+ if (mBounceBackAnimator != null) {
+ mBounceBackAnimator.cancel();
+ }
+ }
+ }
+
private class LauncherHomeAnimationFactory extends HomeAnimationFactory {
@NonNull
@Override
@@ -336,8 +381,12 @@
@Override
public void playAtomicAnimation(float velocity) {
- new StaggeredWorkspaceAnim(mActivity, velocity, true /* animateOverviewScrim */,
- !PROTOTYPE_APP_CLOSE.get()).start();
+ if (!PROTOTYPE_APP_CLOSE.get()) {
+ new StaggeredWorkspaceAnim(mActivity, velocity, true /* animateOverviewScrim */)
+ .start();
+ } else if (shouldPlayAtomicWorkspaceReveal()) {
+ new WorkspaceRevealAnim(mActivity, true).start();
+ }
}
@Override
diff --git a/quickstep/src/com/android/quickstep/SwipeUpAnimationLogic.java b/quickstep/src/com/android/quickstep/SwipeUpAnimationLogic.java
index 29a00d1..b79e934 100644
--- a/quickstep/src/com/android/quickstep/SwipeUpAnimationLogic.java
+++ b/quickstep/src/com/android/quickstep/SwipeUpAnimationLogic.java
@@ -129,6 +129,7 @@
}
protected abstract class HomeAnimationFactory {
+ protected float mSwipeVelocity;
public @NonNull RectF getWindowTargetRect() {
PagedOrientationHandler orientationHandler = getOrientationHandler();
@@ -152,10 +153,18 @@
public abstract @NonNull AnimatorPlaybackController createActivityAnimationToHome();
+ public void setSwipeVelocity(float velocity) {
+ mSwipeVelocity = velocity;
+ }
+
public void playAtomicAnimation(float velocity) {
// No-op
}
+ public boolean shouldPlayAtomicWorkspaceReveal() {
+ return true;
+ }
+
public void setAnimation(RectFSpringAnim anim) { }
public boolean keepWindowOpaque() { return false; }
diff --git a/quickstep/src/com/android/quickstep/SystemUiProxy.java b/quickstep/src/com/android/quickstep/SystemUiProxy.java
index 6fb938a..acf9992 100644
--- a/quickstep/src/com/android/quickstep/SystemUiProxy.java
+++ b/quickstep/src/com/android/quickstep/SystemUiProxy.java
@@ -107,6 +107,17 @@
}
@Override
+ public void setHomeRotationEnabled(boolean enabled) {
+ if (mSystemUiProxy != null) {
+ try {
+ mSystemUiProxy.setHomeRotationEnabled(enabled);
+ } catch (RemoteException e) {
+ Log.w(TAG, "Failed call onBackPressed", e);
+ }
+ }
+ }
+
+ @Override
public IBinder asBinder() {
// Do nothing
return null;
diff --git a/quickstep/src/com/android/quickstep/TaskAnimationManager.java b/quickstep/src/com/android/quickstep/TaskAnimationManager.java
index e90a1ab..29ddde0 100644
--- a/quickstep/src/com/android/quickstep/TaskAnimationManager.java
+++ b/quickstep/src/com/android/quickstep/TaskAnimationManager.java
@@ -168,7 +168,8 @@
if (ENABLE_SHELL_TRANSITIONS) {
RemoteTransitionCompat transition = new RemoteTransitionCompat(mCallbacks,
mController != null ? mController.getController() : null);
- Bundle options = ActivityOptionsCompat.makeRemoteTransition(transition).toBundle();
+ Bundle options = ActivityOptionsCompat.makeRemoteTransition(transition)
+ .setTransientLaunch().toBundle();
mCtx.startActivity(intent, options);
} else {
UI_HELPER_EXECUTOR.execute(() -> ActivityManagerWrapper.getInstance()
diff --git a/quickstep/src/com/android/quickstep/TouchInteractionService.java b/quickstep/src/com/android/quickstep/TouchInteractionService.java
index edc7a3c..d95f7b7 100644
--- a/quickstep/src/com/android/quickstep/TouchInteractionService.java
+++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java
@@ -52,7 +52,6 @@
import android.os.Bundle;
import android.os.IBinder;
import android.os.Looper;
-import android.os.RemoteException;
import android.os.SystemClock;
import android.os.SystemProperties;
import android.util.Log;
@@ -75,6 +74,7 @@
import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.provider.RestoreDbTask;
import com.android.launcher3.statemanager.StatefulActivity;
+import com.android.launcher3.taskbar.TaskbarManager;
import com.android.launcher3.testing.TestLogging;
import com.android.launcher3.testing.TestProtocol;
import com.android.launcher3.tracing.LauncherTraceProto;
@@ -147,21 +147,9 @@
private OverscrollPlugin mOverscrollPlugin;
/**
- * Extension of OverviewProxy aidl interface without needing to modify the actual interface.
- * This is for methods that need only need local access and not intended to make IPC calls.
+ * Local IOverviewProxy implementation with some methods for local components
*/
- public abstract static class TISBinder extends IOverviewProxy.Stub {
- public abstract void setTaskbarOverviewProxyDelegate(
- @Nullable TaskbarOverviewProxyDelegate i);
- }
-
-
- private final TISBinder mMyBinder = new TISBinder() {
-
- public void setTaskbarOverviewProxyDelegate(
- @Nullable TaskbarOverviewProxyDelegate delegate) {
- mTaskbarOverviewProxyDelegate = delegate;
- }
+ public class TISBinder extends IOverviewProxy.Stub {
@BinderThread
public void onInitialize(Bundle bundle) {
@@ -274,40 +262,24 @@
@Override
public void onImeWindowStatusChanged(int displayId, IBinder token, int vis,
- int backDisposition, boolean showImeSwitcher) throws RemoteException {
- if (mTaskbarOverviewProxyDelegate == null) {
- return;
- }
- MAIN_EXECUTOR.execute(() -> {
- if (mTaskbarOverviewProxyDelegate == null) {
- return;
- }
- mTaskbarOverviewProxyDelegate
- .updateImeStatus(displayId, vis, backDisposition, showImeSwitcher);
- });
+ int backDisposition, boolean showImeSwitcher) {
+ MAIN_EXECUTOR.execute(() -> mTaskbarManager.updateImeStatus(
+ displayId, vis, backDisposition, showImeSwitcher));
}
- };
- public interface TaskbarOverviewProxyDelegate {
- void updateImeStatus(int displayId, int vis, int backDisposition,
- boolean showImeSwitcher);
+ public TaskbarManager getTaskbarManager() {
+ return mTaskbarManager;
+ }
}
private static boolean sConnected = false;
- private static TouchInteractionService sInstance;
private static boolean sIsInitialized = false;
private RotationTouchHelper mRotationTouchHelper;
- @Nullable
- private TaskbarOverviewProxyDelegate mTaskbarOverviewProxyDelegate;
public static boolean isConnected() {
return sConnected;
}
- @Nullable
- public static TouchInteractionService getInstance() {
- return sInstance;
- }
public static boolean isInitialized() {
return sIsInitialized;
@@ -336,9 +308,7 @@
private DisplayManager mDisplayManager;
- public TouchInteractionService() {
- sInstance = this;
- }
+ private TaskbarManager mTaskbarManager;
@Override
public void onCreate() {
@@ -348,13 +318,14 @@
mMainChoreographer = Choreographer.getInstance();
mAM = ActivityManagerWrapper.getInstance();
mDeviceState = new RecentsAnimationDeviceState(this, true);
+ mDisplayManager = getSystemService(DisplayManager.class);
+ mTaskbarManager = new TaskbarManager(this);
+
mRotationTouchHelper = mDeviceState.getRotationTouchHelper();
mDeviceState.addNavigationModeChangedCallback(this::onNavigationModeChanged);
mDeviceState.addOneHandedModeChangedCallback(this::onOneHandedModeOverlayChanged);
mDeviceState.runOnUserUnlocked(this::onUserUnlocked);
ProtoTracer.INSTANCE.get(this).add(this);
- mDisplayManager = getSystemService(DisplayManager.class);
-
sConnected = true;
}
@@ -468,8 +439,7 @@
int systemUiStateFlags = mDeviceState.getSystemUiStateFlags();
SystemUiProxy.INSTANCE.get(this).setLastSystemUiStateFlags(systemUiStateFlags);
mOverviewComponentObserver.onSystemUiStateChanged();
- mOverviewComponentObserver.getActivityInterface().onSystemUiFlagsChanged(
- systemUiStateFlags);
+ mTaskbarManager.onSystemUiFlagsChanged(systemUiStateFlags);
if ((lastSysUIFlags & SYSUI_STATE_TRACING_ENABLED) !=
(systemUiStateFlags & SYSUI_STATE_TRACING_ENABLED)) {
@@ -512,6 +482,7 @@
getSystemService(AccessibilityManager.class)
.unregisterSystemAction(SYSTEM_ACTION_ID_ALL_APPS);
+ mTaskbarManager.destroy();
sConnected = false;
super.onDestroy();
}
@@ -519,7 +490,7 @@
@Override
public IBinder onBind(Intent intent) {
Log.d(TAG, "Touch service connected: user=" + getUserId());
- return mMyBinder;
+ return new TISBinder();
}
private void onInputEvent(InputEvent ev) {
diff --git a/quickstep/src/com/android/quickstep/fallback/FallbackRecentsStateController.java b/quickstep/src/com/android/quickstep/fallback/FallbackRecentsStateController.java
index 4d776ba..f0364eb 100644
--- a/quickstep/src/com/android/quickstep/fallback/FallbackRecentsStateController.java
+++ b/quickstep/src/com/android/quickstep/fallback/FallbackRecentsStateController.java
@@ -23,7 +23,6 @@
import static com.android.launcher3.states.StateAnimationConfig.ANIM_SCRIM_FADE;
import static com.android.launcher3.states.StateAnimationConfig.SKIP_OVERVIEW;
import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_HORIZONTAL_OFFSET;
-import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_VERTICAL_OFFSET;
import static com.android.quickstep.views.RecentsView.FULLSCREEN_PROGRESS;
import static com.android.quickstep.views.RecentsView.RECENTS_GRID_PROGRESS;
import static com.android.quickstep.views.RecentsView.RECENTS_SCALE_PROPERTY;
@@ -89,8 +88,6 @@
config.getInterpolator(ANIM_OVERVIEW_SCALE, LINEAR));
setter.setFloat(mRecentsView, ADJACENT_PAGE_HORIZONTAL_OFFSET, scaleAndOffset[1],
config.getInterpolator(ANIM_OVERVIEW_TRANSLATE_X, LINEAR));
- setter.setFloat(mRecentsView, ADJACENT_PAGE_VERTICAL_OFFSET, scaleAndOffset[2],
- config.getInterpolator(ANIM_OVERVIEW_TRANSLATE_Y, LINEAR));
setter.setFloat(mRecentsView, TASK_SECONDARY_TRANSLATION, 0f,
config.getInterpolator(ANIM_OVERVIEW_TRANSLATE_Y, LINEAR));
diff --git a/quickstep/src/com/android/quickstep/fallback/RecentsState.java b/quickstep/src/com/android/quickstep/fallback/RecentsState.java
index 532f219..b6cfdce 100644
--- a/quickstep/src/com/android/quickstep/fallback/RecentsState.java
+++ b/quickstep/src/com/android/quickstep/fallback/RecentsState.java
@@ -126,7 +126,7 @@
}
public float[] getOverviewScaleAndOffset(RecentsActivity activity) {
- return new float[] { NO_SCALE, NO_OFFSET, NO_OFFSET };
+ return new float[] { NO_SCALE, NO_OFFSET };
}
/**
@@ -170,7 +170,7 @@
@Override
public float[] getOverviewScaleAndOffset(RecentsActivity activity) {
- return new float[] { NO_SCALE, NO_OFFSET, 1 };
+ return new float[] { NO_SCALE, 1 };
}
}
}
diff --git a/quickstep/src/com/android/quickstep/interaction/AllSetActivity.java b/quickstep/src/com/android/quickstep/interaction/AllSetActivity.java
index 76f43c9..6f681b3 100644
--- a/quickstep/src/com/android/quickstep/interaction/AllSetActivity.java
+++ b/quickstep/src/com/android/quickstep/interaction/AllSetActivity.java
@@ -45,8 +45,8 @@
private static final String LOG_TAG = "AllSetActivity";
private static final String URI_SYSTEM_NAVIGATION_SETTING =
"#Intent;action=com.android.settings.SEARCH_RESULT_TRAMPOLINE;S.:settings:fragment_args_key=gesture_system_navigation_input_summary;S.:settings:show_fragment=com.android.settings.gestures.SystemNavigationGestureSettings;end";
- private static final String EXTRA_ACCENT_COLOR_DARK_MODE = "accent_color_dark_mode";
- private static final String EXTRA_ACCENT_COLOR_LIGHT_MODE = "accent_color_light_mode";
+ private static final String EXTRA_ACCENT_COLOR_DARK_MODE = "suwColorAccentDark";
+ private static final String EXTRA_ACCENT_COLOR_LIGHT_MODE = "suwColorAccentLight";
private int mAccentColor;
diff --git a/quickstep/src/com/android/quickstep/util/OverviewToHomeAnim.java b/quickstep/src/com/android/quickstep/util/OverviewToHomeAnim.java
index 10b7662..badb41a 100644
--- a/quickstep/src/com/android/quickstep/util/OverviewToHomeAnim.java
+++ b/quickstep/src/com/android/quickstep/util/OverviewToHomeAnim.java
@@ -30,7 +30,7 @@
/**
* Runs an animation from overview to home. Currently, this animation is just a wrapper around the
- * normal state transition and may play a {@link StaggeredWorkspaceAnim} if we're starting from an
+ * normal state transition and may play a {@link WorkspaceRevealAnim} if we're starting from an
* upward fling.
*/
public class OverviewToHomeAnim {
@@ -51,7 +51,7 @@
/**
* Starts the animation. If velocity < 0 (i.e. upwards), also plays a
- * {@link StaggeredWorkspaceAnim}.
+ * {@link WorkspaceRevealAnim}.
*/
public void animateWithVelocity(float velocity) {
StateManager<LauncherState> stateManager = mLauncher.getStateManager();
@@ -61,18 +61,18 @@
}
AnimatorSet anim = new AnimatorSet();
- boolean playStaggeredWorkspaceAnim = velocity < 0;
- if (playStaggeredWorkspaceAnim) {
- StaggeredWorkspaceAnim staggeredWorkspaceAnim = new StaggeredWorkspaceAnim(
- mLauncher, velocity, false /* animateOverviewScrim */);
- staggeredWorkspaceAnim.addAnimatorListener(new AnimationSuccessListener() {
+ boolean playWorkspaceRevealAnim = velocity < 0;
+ if (playWorkspaceRevealAnim) {
+ WorkspaceRevealAnim workspaceRevealAnim = new WorkspaceRevealAnim(mLauncher,
+ false /* animateOverviewScrim */);
+ workspaceRevealAnim.addAnimatorListener(new AnimationSuccessListener() {
@Override
public void onAnimationSuccess(Animator animator) {
mIsHomeStaggeredAnimFinished = true;
maybeOverviewToHomeAnimComplete();
}
});
- anim.play(staggeredWorkspaceAnim.getAnimators());
+ anim.play(workspaceRevealAnim.getAnimators());
} else {
mIsHomeStaggeredAnimFinished = true;
}
diff --git a/quickstep/src/com/android/quickstep/util/RecentsAtomicAnimationFactory.java b/quickstep/src/com/android/quickstep/util/RecentsAtomicAnimationFactory.java
index c1ca060..5c72c8f 100644
--- a/quickstep/src/com/android/quickstep/util/RecentsAtomicAnimationFactory.java
+++ b/quickstep/src/com/android/quickstep/util/RecentsAtomicAnimationFactory.java
@@ -15,7 +15,7 @@
*/
package com.android.quickstep.util;
-import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_VERTICAL_OFFSET;
+import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_HORIZONTAL_OFFSET;
import android.animation.Animator;
import android.animation.ObjectAnimator;
@@ -31,7 +31,7 @@
extends AtomicAnimationFactory<STATE_TYPE> {
public static final int INDEX_RECENTS_FADE_ANIM = AtomicAnimationFactory.NEXT_INDEX + 0;
- public static final int INDEX_RECENTS_TRANSLATE_Y_ANIM = AtomicAnimationFactory.NEXT_INDEX + 1;
+ public static final int INDEX_RECENTS_TRANSLATE_X_ANIM = AtomicAnimationFactory.NEXT_INDEX + 1;
private static final int MY_ANIM_COUNT = 2;
@@ -48,14 +48,14 @@
case INDEX_RECENTS_FADE_ANIM:
return ObjectAnimator.ofFloat(mActivity.getOverviewPanel(),
RecentsView.CONTENT_ALPHA, values);
- case INDEX_RECENTS_TRANSLATE_Y_ANIM: {
+ case INDEX_RECENTS_TRANSLATE_X_ANIM: {
RecentsView rv = mActivity.getOverviewPanel();
return new SpringAnimationBuilder(mActivity)
.setMinimumVisibleChange(DynamicAnimation.MIN_VISIBLE_CHANGE_SCALE)
.setDampingRatio(0.8f)
.setStiffness(250)
.setValues(values)
- .build(rv, ADJACENT_PAGE_VERTICAL_OFFSET);
+ .build(rv, ADJACENT_PAGE_HORIZONTAL_OFFSET);
}
default:
return super.createStateElementAnimation(index, values);
diff --git a/quickstep/src/com/android/quickstep/util/RecentsOrientedState.java b/quickstep/src/com/android/quickstep/util/RecentsOrientedState.java
index e983f46..bfd9008 100644
--- a/quickstep/src/com/android/quickstep/util/RecentsOrientedState.java
+++ b/quickstep/src/com/android/quickstep/util/RecentsOrientedState.java
@@ -51,6 +51,7 @@
import com.android.launcher3.util.SettingsCache;
import com.android.launcher3.util.WindowBounds;
import com.android.quickstep.BaseActivityInterface;
+import com.android.quickstep.SystemUiProxy;
import com.android.quickstep.views.TaskView;
import java.lang.annotation.Retention;
@@ -287,8 +288,9 @@
}
private void updateHomeRotationSetting() {
- setFlag(FLAG_HOME_ROTATION_ALLOWED_IN_PREFS,
- mSharedPrefs.getBoolean(ALLOW_ROTATION_PREFERENCE_KEY, false));
+ boolean homeRotationEnabled = mSharedPrefs.getBoolean(ALLOW_ROTATION_PREFERENCE_KEY, false);
+ setFlag(FLAG_HOME_ROTATION_ALLOWED_IN_PREFS, homeRotationEnabled);
+ SystemUiProxy.INSTANCE.get(mContext).setHomeRotationEnabled(homeRotationEnabled);
}
private void initFlags() {
diff --git a/quickstep/src/com/android/quickstep/util/StaggeredWorkspaceAnim.java b/quickstep/src/com/android/quickstep/util/StaggeredWorkspaceAnim.java
index d430028..49aec93 100644
--- a/quickstep/src/com/android/quickstep/util/StaggeredWorkspaceAnim.java
+++ b/quickstep/src/com/android/quickstep/util/StaggeredWorkspaceAnim.java
@@ -116,7 +116,7 @@
addStaggeredAnimationForView(child, lp.cellY + 1, totalRows);
}
} else {
- final int hotseatRow, qsbRow, taskbarRow;
+ final int hotseatRow, qsbRow;
if (grid.isTaskbarPresent) {
qsbRow = grid.inv.numRows + 1;
hotseatRow = grid.inv.numRows + 2;
@@ -124,16 +124,12 @@
hotseatRow = grid.inv.numRows + 1;
qsbRow = grid.inv.numRows + 2;
}
- // Taskbar and hotseat overlap.
- taskbarRow = hotseatRow;
-
for (int i = hotseatIcons.getChildCount() - 1; i >= 0; i--) {
View child = hotseatIcons.getChildAt(i);
addStaggeredAnimationForView(child, hotseatRow, totalRows);
}
addStaggeredAnimationForView(hotseat.getQsb(), qsbRow, totalRows);
- addStaggeredAnimationForView(hotseat.getTaskbarView(), taskbarRow, totalRows);
}
mAnimators.addListener(new AnimatorListenerAdapter() {
diff --git a/quickstep/src/com/android/quickstep/util/TaskCornerRadius.java b/quickstep/src/com/android/quickstep/util/TaskCornerRadius.java
index 3ddf1b6..6f9c99a 100644
--- a/quickstep/src/com/android/quickstep/util/TaskCornerRadius.java
+++ b/quickstep/src/com/android/quickstep/util/TaskCornerRadius.java
@@ -18,6 +18,7 @@
import static com.android.systemui.shared.system.QuickStepContract.supportsRoundedCornersOnWindows;
import android.content.Context;
+import android.content.res.Resources;
import com.android.launcher3.R;
import com.android.launcher3.util.Themes;
@@ -25,8 +26,13 @@
public class TaskCornerRadius {
public static float get(Context context) {
- return supportsRoundedCornersOnWindows(context.getResources()) ?
- Themes.getDialogCornerRadius(context):
- context.getResources().getDimension(R.dimen.task_corner_radius_small);
+ Resources resources = context.getResources();
+ if (!supportsRoundedCornersOnWindows(resources)) {
+ return resources.getDimension(R.dimen.task_corner_radius_small);
+ }
+
+ float overriddenRadius =
+ resources.getDimension(R.dimen.task_corner_radius_override);
+ return (overriddenRadius > 0) ? overriddenRadius : Themes.getDialogCornerRadius(context);
}
}
diff --git a/quickstep/src/com/android/quickstep/util/WorkspaceRevealAnim.java b/quickstep/src/com/android/quickstep/util/WorkspaceRevealAnim.java
new file mode 100644
index 0000000..50da93b
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/util/WorkspaceRevealAnim.java
@@ -0,0 +1,137 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.quickstep.util;
+
+import static com.android.launcher3.LauncherAnimUtils.SCALE_PROPERTY;
+import static com.android.launcher3.LauncherState.BACKGROUND_APP;
+import static com.android.launcher3.LauncherState.NORMAL;
+import static com.android.launcher3.anim.PropertySetter.NO_ANIM_PROPERTY_SETTER;
+import static com.android.launcher3.states.StateAnimationConfig.SKIP_DEPTH_CONTROLLER;
+import static com.android.launcher3.states.StateAnimationConfig.SKIP_OVERVIEW;
+import static com.android.launcher3.states.StateAnimationConfig.SKIP_SCRIM;
+
+import android.animation.Animator;
+import android.animation.AnimatorSet;
+import android.animation.ObjectAnimator;
+import android.view.View;
+
+import com.android.launcher3.BaseQuickstepLauncher;
+import com.android.launcher3.Launcher;
+import com.android.launcher3.R;
+import com.android.launcher3.Workspace;
+import com.android.launcher3.anim.Interpolators;
+import com.android.launcher3.anim.PendingAnimation;
+import com.android.launcher3.statehandlers.DepthController;
+import com.android.launcher3.states.StateAnimationConfig;
+import com.android.launcher3.util.DynamicResource;
+import com.android.quickstep.views.RecentsView;
+import com.android.systemui.plugins.ResourceProvider;
+
+/**
+ * Creates an animation that reveals the workspace.
+ * This is used in conjunction with the swipe up to home animation.
+ */
+public class WorkspaceRevealAnim {
+
+ // Should be used for animations running alongside this WorkspaceRevealAnim.
+ public static final int DURATION_MS = 350;
+
+ private final float mScaleStart;
+ private final AnimatorSet mAnimators = new AnimatorSet();
+
+ public WorkspaceRevealAnim(Launcher launcher, boolean animateOverviewScrim) {
+ prepareToAnimate(launcher, animateOverviewScrim);
+
+ ResourceProvider rp = DynamicResource.provider(launcher);
+ mScaleStart = rp.getFloat(R.dimen.swipe_up_scale_start);
+
+ Workspace workspace = launcher.getWorkspace();
+ workspace.setPivotToScaleWithSelf(launcher.getHotseat());
+
+ // Add reveal animations.
+ addRevealAnimatorsForView(workspace);
+ addRevealAnimatorsForView(launcher.getHotseat());
+
+ // Add overview scrim animation.
+ if (animateOverviewScrim) {
+ PendingAnimation overviewScrimBuilder = new PendingAnimation(DURATION_MS);
+ launcher.getWorkspace().getStateTransitionAnimation()
+ .setScrim(overviewScrimBuilder, NORMAL, new StateAnimationConfig());
+ mAnimators.play(overviewScrimBuilder.buildAnim());
+ }
+
+ // Add depth controller animation.
+ if (launcher instanceof BaseQuickstepLauncher) {
+ PendingAnimation depthBuilder = new PendingAnimation(DURATION_MS);
+ DepthController depth = ((BaseQuickstepLauncher) launcher).getDepthController();
+ depth.setStateWithAnimation(NORMAL, new StateAnimationConfig(), depthBuilder);
+ mAnimators.play(depthBuilder.buildAnim());
+ }
+
+ // Add sysui scrim animation.
+ mAnimators.play(launcher.getRootView().getSysUiScrim().createSysuiMultiplierAnim(0f, 1f));
+
+ mAnimators.setDuration(DURATION_MS);
+ mAnimators.setInterpolator(Interpolators.DECELERATED_EASE);
+ }
+
+ private void addRevealAnimatorsForView(View v) {
+ ObjectAnimator scale = ObjectAnimator.ofFloat(v, SCALE_PROPERTY, mScaleStart, 1f);
+ scale.setDuration(DURATION_MS);
+ scale.setInterpolator(Interpolators.DECELERATED_EASE);
+ mAnimators.play(scale);
+
+ ObjectAnimator alpha = ObjectAnimator.ofFloat(v, View.ALPHA, 0, 1f);
+ alpha.setDuration(DURATION_MS);
+ alpha.setInterpolator(Interpolators.DECELERATED_EASE);
+ mAnimators.play(alpha);
+ }
+
+ /**
+ * Setup workspace with 0 duration.
+ */
+ private void prepareToAnimate(Launcher launcher, boolean animateOverviewScrim) {
+ StateAnimationConfig config = new StateAnimationConfig();
+ config.animFlags = SKIP_OVERVIEW | SKIP_DEPTH_CONTROLLER | SKIP_SCRIM;
+ config.duration = 0;
+ // setRecentsAttachedToAppWindow() will animate recents out.
+ launcher.getStateManager().createAtomicAnimation(BACKGROUND_APP, NORMAL, config).start();
+
+ // Stop scrolling so that it doesn't interfere with the translation offscreen.
+ launcher.<RecentsView>getOverviewPanel().getScroller().forceFinished(true);
+
+ if (animateOverviewScrim) {
+ launcher.getWorkspace().getStateTransitionAnimation()
+ .setScrim(NO_ANIM_PROPERTY_SETTER, BACKGROUND_APP, config);
+ }
+ }
+
+ public AnimatorSet getAnimators() {
+ return mAnimators;
+ }
+
+ public WorkspaceRevealAnim addAnimatorListener(Animator.AnimatorListener listener) {
+ mAnimators.addListener(listener);
+ return this;
+ }
+
+ /**
+ * Starts the animation.
+ */
+ public void start() {
+ mAnimators.start();
+ }
+}
diff --git a/quickstep/src/com/android/quickstep/views/FloatingWidgetView.java b/quickstep/src/com/android/quickstep/views/FloatingWidgetView.java
index 121e094..0012dd8 100644
--- a/quickstep/src/com/android/quickstep/views/FloatingWidgetView.java
+++ b/quickstep/src/com/android/quickstep/views/FloatingWidgetView.java
@@ -34,6 +34,7 @@
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.dragndrop.DragLayer;
+import com.android.launcher3.views.FloatingView;
import com.android.launcher3.views.ListenerView;
import com.android.launcher3.widget.LauncherAppWidgetHostView;
import com.android.launcher3.widget.RoundedCornerEnforcement;
@@ -41,7 +42,7 @@
/** A view that mimics an App Widget through a launch animation. */
@TargetApi(Build.VERSION_CODES.S)
public class FloatingWidgetView extends FrameLayout implements AnimatorListener,
- OnGlobalLayoutListener {
+ OnGlobalLayoutListener, FloatingView {
private static final Matrix sTmpMatrix = new Matrix();
private final Launcher mLauncher;
@@ -59,6 +60,8 @@
private Runnable mOnTargetChangeRunnable;
private boolean mAppTargetIsTranslucent;
+ private float mIconOffsetY;
+
public FloatingWidgetView(Context context) {
this(context, null);
}
@@ -129,6 +132,7 @@
}
/** Callback at the end or early exit of the animation. */
+ @Override
public void fastFinish() {
if (isUninitialized()) return;
Runnable fastFinishRunnable = mFastFinishRunnable;
@@ -192,6 +196,12 @@
positionViews();
}
+ @Override
+ public void setPositionOffsetY(float y) {
+ mIconOffsetY = y;
+ onGlobalLayout();
+ }
+
/** Sets the layout parameters of the floating view and its background view child. */
private void positionViews() {
LayoutParams layoutParams = (LayoutParams) getLayoutParams();
@@ -200,7 +210,7 @@
// FloatingWidgetView layout is forced LTR
mBackgroundView.setTranslationX(mBackgroundPosition.left);
- mBackgroundView.setTranslationY(mBackgroundPosition.top);
+ mBackgroundView.setTranslationY(mBackgroundPosition.top + mIconOffsetY);
LayoutParams backgroundParams = (LayoutParams) mBackgroundView.getLayoutParams();
backgroundParams.leftMargin = 0;
backgroundParams.topMargin = 0;
@@ -215,7 +225,8 @@
sTmpMatrix.setTranslate(-mBackgroundOffset.left - mAppWidgetView.getLeft(),
-mBackgroundOffset.top - mAppWidgetView.getTop());
sTmpMatrix.postScale(foregroundScale, foregroundScale);
- sTmpMatrix.postTranslate(mBackgroundPosition.left, mBackgroundPosition.top);
+ sTmpMatrix.postTranslate(mBackgroundPosition.left, mBackgroundPosition.top
+ + mIconOffsetY);
mForegroundOverlayView.setMatrix(sTmpMatrix);
}
}
@@ -240,6 +251,7 @@
}
private void recycle() {
+ mIconOffsetY = 0;
mEndRunnable = null;
mFastFinishRunnable = null;
mOnTargetChangeRunnable = null;
diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java
index 5bad5e8..64c3174 100644
--- a/quickstep/src/com/android/quickstep/views/RecentsView.java
+++ b/quickstep/src/com/android/quickstep/views/RecentsView.java
@@ -32,11 +32,12 @@
import static com.android.launcher3.Utilities.squaredHypot;
import static com.android.launcher3.Utilities.squaredTouchSlop;
import static com.android.launcher3.anim.Interpolators.ACCEL;
+import static com.android.launcher3.anim.Interpolators.ACCEL_0_5;
import static com.android.launcher3.anim.Interpolators.ACCEL_0_75;
-import static com.android.launcher3.anim.Interpolators.ACCEL_2;
import static com.android.launcher3.anim.Interpolators.ACCEL_DEACCEL;
import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN;
import static com.android.launcher3.anim.Interpolators.LINEAR;
+import static com.android.launcher3.anim.Interpolators.clampToProgress;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASK_CLEAR_ALL;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASK_DISMISS_SWIPE_UP;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASK_LAUNCH_SWIPE_DOWN;
@@ -231,22 +232,6 @@
}
};
- public static final FloatProperty<RecentsView> ADJACENT_PAGE_VERTICAL_OFFSET =
- new FloatProperty<RecentsView>("adjacentPageVerticalOffset") {
- @Override
- public void setValue(RecentsView recentsView, float v) {
- if (recentsView.mAdjacentPageVerticalOffset != v) {
- recentsView.mAdjacentPageVerticalOffset = v;
- recentsView.updateVerticalPageOffsets();
- }
- }
-
- @Override
- public Float get(RecentsView recentsView) {
- return recentsView.mAdjacentPageVerticalOffset;
- }
- };
-
/**
* Can be used to tint the color of the RecentsView to simulate a scrim that can views
* excluded from. Really should be a proper scrim.
@@ -276,8 +261,6 @@
@Override
public void setValue(RecentsView recentsView, float v) {
recentsView.setTaskViewsResistanceTranslation(v);
- recentsView.mLastComputedTaskBottomPushOutDistance = null;
- recentsView.updateVerticalPageOffsets();
}
@Override
@@ -327,11 +310,9 @@
view.setScaleY(scale);
view.mLastComputedTaskStartPushOutDistance = null;
view.mLastComputedTaskEndPushOutDistance = null;
- view.mLastComputedTaskBottomPushOutDistance = null;
view.mLiveTileTaskViewSimulator.recentsViewScale.value = scale;
view.setTaskViewsResistanceTranslation(view.mTaskViewsSecondaryTranslation);
view.updatePageOffsets();
- view.updateVerticalPageOffsets();
}
@Override
@@ -356,6 +337,11 @@
// OverScroll constants
private static final int OVERSCROLL_PAGE_SNAP_ANIMATION_DURATION = 270;
+ private static final int DISMISS_TASK_DURATION = 300;
+ private static final int ADDITION_TASK_DURATION = 200;
+ private static final float INITIAL_DISMISS_TRANSLATION_INTERPOLATION_OFFSET = 0.55f;
+ private static final float ADDITIONAL_DISMISS_TRANSLATION_INTERPOLATION_OFFSET = 0.05f;
+
protected final RecentsOrientedState mOrientationState;
protected final BaseActivityInterface<STATE_TYPE, ACTIVITY_TYPE> mSizeStrategy;
protected RecentsAnimationController mRecentsAnimationController;
@@ -370,19 +356,13 @@
// How much a task that is directly offscreen will be pushed out due to RecentsView scale/pivot.
protected Float mLastComputedTaskStartPushOutDistance = null;
protected Float mLastComputedTaskEndPushOutDistance = null;
- protected Float mLastComputedTaskBottomPushOutDistance = null;
protected boolean mEnableDrawingLiveTile = false;
protected final Rect mTempRect = new Rect();
protected final RectF mTempRectF = new RectF();
private final PointF mTempPointF = new PointF();
private final float[] mTempFloat = new float[1];
private final List<OnScrollChangedListener> mScrollListeners = new ArrayList<>();
- private float mFullscreenScale;
- private static final int DISMISS_TASK_DURATION = 300;
- private static final int DISMISS_TASK_TRANSLATION_DURATION = 200;
- private static final int ADDITIONAL_DISMISS_TASK_TRANSLATION_DURATION = 75;
- private static final int ADDITION_TASK_DURATION = 200;
// The threshold at which we update the SystemUI flags when animating from the task into the app
public static final float UPDATE_SYSUI_FLAGS_THRESHOLD = 0.85f;
@@ -415,7 +395,6 @@
private boolean mOverviewFullscreenEnabled;
private float mAdjacentPageHorizontalOffset = 0;
- private float mAdjacentPageVerticalOffset = 0;
protected float mTaskViewsSecondaryTranslation = 0;
protected float mTaskViewsPrimarySplitTranslation = 0;
protected float mTaskViewsSecondarySplitTranslation = 0;
@@ -1214,7 +1193,6 @@
// Update the set of visible task's data
loadVisibleTaskData(TaskView.FLAG_UPDATE_ALL);
setTaskModalness(0);
- updateVerticalPageOffsets();
setColorTint(0);
}
@@ -1350,8 +1328,6 @@
// Compensate space caused by TaskView scaling.
float widthDiff =
taskView.getLayoutParams().width * (1 - taskView.getFullscreenScale());
- // Compensate page spacing widening caused by RecentsView scaling.
- widthDiff += mPageSpacing * (1 - 1 / mFullscreenScale);
accumulatedTranslationX += mIsRtl ? widthDiff : -widthDiff;
}
@@ -1909,21 +1885,18 @@
* This method is used when no task dismissal has occurred.
*/
private void updateGridProperties() {
- updateGridProperties(null, -1);
+ updateGridProperties(false);
}
/**
* Updates TaskView and ClearAllButton scaling and translation required to turn into grid
* layout.
* This method only calculates the potential position and depends on {@link #setGridProgress} to
- * apply the actual scaling and translation. This adds task translation animations in the case
- * of task dismissals: e.g. when dismissedTask is not null.
+ * apply the actual scaling and translation.
*
- * @param dismissedTask the TaskView dismissed, possibly null
- * @param dismissedIndex the index at which the dismissedTask was prior to dismissal, if no
- * dismissal occurred, this is unused
+ * @param isTaskDismissal indicates if update was called due to task dismissal
*/
- private void updateGridProperties(TaskView dismissedTask, int dismissedIndex) {
+ private void updateGridProperties(boolean isTaskDismissal) {
int taskCount = getTaskViewCount();
if (taskCount == 0) {
return;
@@ -1963,10 +1936,6 @@
int snappedPage = getNextPage();
TaskView snappedTaskView = getTaskViewAtByAbsoluteIndex(snappedPage);
- boolean isTaskDismissal = dismissedTask != null;
- float dismissedTaskWidth =
- isTaskDismissal ? dismissedTask.getLayoutParams().width + mPageSpacing : 0;
-
if (!isTaskDismissal) {
mTopRowIdSet.clear();
}
@@ -2062,34 +2031,13 @@
snappedTaskGridTranslationX = gridTranslations[snappedPage - mTaskViewStartIndex];
}
- // Animate task dismissTranslationX for tasks with index >= dismissed index and in the
- // same row as the dismissed index, or if the dismissed task was the focused task. Offset
- // successive task dismissal durations for a staggered effect.
- ArrayList<Animator> gridTranslationAnimators = new ArrayList<>();
- boolean isFocusedTaskDismissed =
- isTaskDismissal && dismissedTask.getTask().key.id == mFocusedTaskId;
for (int i = 0; i < taskCount; i++) {
TaskView taskView = getTaskViewAt(i);
- if (isFocusedTaskDismissed || (i >= dismissedIndex && isSameGridRow(dismissedTask,
- taskView))) {
- Animator taskDismissAnimator = ObjectAnimator.ofFloat(taskView,
- taskView.getPrimaryDismissTranslationProperty(),
- mIsRtl ? -dismissedTaskWidth : dismissedTaskWidth, 0f);
- int additionalTranslationDuration =
- i >= dismissedIndex ? (ADDITIONAL_DISMISS_TASK_TRANSLATION_DURATION * (
- (i - dismissedIndex) / 2)) : 0;
- taskDismissAnimator.setDuration(
- DISMISS_TASK_TRANSLATION_DURATION + additionalTranslationDuration);
- gridTranslationAnimators.add(taskDismissAnimator);
- }
taskView.setGridTranslationX(gridTranslations[i] - snappedTaskGridTranslationX);
taskView.getPrimaryNonFullscreenTranslationProperty().set(taskView,
snappedTaskFullscreenScrollAdjustment);
taskView.getSecondaryNonFullscreenTranslationProperty().set(taskView, 0f);
}
- AnimatorSet gridTranslationAnimatorSet = new AnimatorSet();
- gridTranslationAnimatorSet.playTogether(gridTranslationAnimators);
- gridTranslationAnimatorSet.start();
// Use the accumulated translation of the row containing the last task.
float clearAllAccumulatedTranslation = topSet.contains(taskCount - 1)
@@ -2233,7 +2181,7 @@
PendingAnimation anim) {
// Use setFloat instead of setViewAlpha as we want to keep the view visible even when it's
// alpha is set to 0 so that it can be recycled in the view pool properly
- anim.setFloat(taskView, VIEW_ALPHA, 0, ACCEL_2);
+ anim.setFloat(taskView, VIEW_ALPHA, 0, clampToProgress(ACCEL, 0, 0.5f));
SplitSelectStateController splitController = mSplitPlaceholderView.getSplitController();
ResourceProvider rp = DynamicResource.provider(mActivity);
@@ -2269,8 +2217,10 @@
throw new IllegalStateException("Invalid split task translation: " + dir);
}
}
+ // Double translation distance so dismissal drag is the full height, as we only animate
+ // the drag for the first half of the progress.
anim.add(ObjectAnimator.ofFloat(taskView, dismissingTaskViewTranslate,
- positiveNegativeFactor * translateDistance).setDuration(duration), LINEAR, sp);
+ positiveNegativeFactor * translateDistance * 2).setDuration(duration), LINEAR, sp);
if (LIVE_TILE.get() && taskView.isRunningTask()) {
anim.addOnFrameCallback(() -> {
@@ -2306,6 +2256,11 @@
}
int draggedIndex = indexOfChild(taskView);
+ boolean isFocusedTaskDismissed = taskView.getTask().key.id == mFocusedTaskId;
+ if (isFocusedTaskDismissed && showAsGrid()) {
+ anim.setFloat(mActionsView, VIEW_ALPHA, 0, clampToProgress(ACCEL_0_5, 0, 0.5f));
+ }
+ float dismissedTaskWidth = taskView.getLayoutParams().width + mPageSpacing;
boolean needsCurveUpdates = false;
for (int i = 0; i < count; i++) {
View child = getChildAt(i);
@@ -2314,7 +2269,7 @@
addDismissedTaskAnimations(taskView, duration, anim);
}
} else if (!showAsGrid()) {
- // For grid layout, don't animate other tasks when dismissing in grid for now.
+ // Compute scroll offsets from task dismissal for animation.
// If we just take newScroll - oldScroll, everything to the right of dragged task
// translates to the left. We need to offset this in some cases:
// - In RTL, add page offset to all pages, since we want pages to move to the right
@@ -2341,15 +2296,31 @@
? ((TaskView) child).getPrimaryDismissTranslationProperty()
: mOrientationHandler.getPrimaryViewTranslate();
- ResourceProvider rp = DynamicResource.provider(mActivity);
- SpringProperty sp = new SpringProperty(SpringProperty.FLAG_CAN_SPRING_ON_END)
- .setDampingRatio(
- rp.getFloat(R.dimen.dismiss_task_trans_x_damping_ratio))
- .setStiffness(rp.getFloat(R.dimen.dismiss_task_trans_x_stiffness));
- anim.add(ObjectAnimator.ofFloat(child, translationProperty, scrollDiff)
- .setDuration(duration), ACCEL, sp);
+ float additionalDismissDuration =
+ ADDITIONAL_DISMISS_TRANSLATION_INTERPOLATION_OFFSET * Math.abs(
+ i - draggedIndex);
+ anim.setFloat(child, translationProperty, scrollDiff, clampToProgress(LINEAR,
+ Utilities.boundToRange(INITIAL_DISMISS_TRANSLATION_INTERPOLATION_OFFSET
+ + additionalDismissDuration, 0f, 1f), 1));
needsCurveUpdates = true;
}
+ } else if (child instanceof TaskView) {
+ // Animate task with index >= dismissed index and in the same row as the
+ // dismissed index, or if the dismissed task was the focused task. Offset
+ // successive task dismissal durations for a staggered effect.
+ if (isFocusedTaskDismissed || (i >= draggedIndex && isSameGridRow((TaskView) child,
+ taskView))) {
+ FloatProperty translationProperty =
+ ((TaskView) child).getPrimaryDismissTranslationProperty();
+ float additionalDismissDuration =
+ ADDITIONAL_DISMISS_TRANSLATION_INTERPOLATION_OFFSET * Math.abs(
+ i - draggedIndex);
+ anim.setFloat(child, translationProperty,
+ !mIsRtl ? -dismissedTaskWidth : dismissedTaskWidth,
+ clampToProgress(LINEAR, Utilities.boundToRange(
+ INITIAL_DISMISS_TRANSLATION_INTERPOLATION_OFFSET
+ + additionalDismissDuration, 0f, 1f), 1));
+ }
}
}
@@ -2387,6 +2358,10 @@
}
}
+ // Reset task translations as they may have updated via animations in
+ // createTaskDismissAnimation
+ resetTaskVisuals();
+
int pageToSnapTo = mCurrentPage;
// Snap to start if focused task was dismissed, as after quick switch it could
// be at any page but the focused task always displays at the start.
@@ -2404,7 +2379,7 @@
} else {
snapToPageImmediately(pageToSnapTo);
// Grid got messed up, reapply.
- updateGridProperties(taskView, draggedIndex - mTaskViewStartIndex);
+ updateGridProperties(true);
if (showAsGrid() && getFocusedTaskView() == null
&& mActionsView.getVisibilityAlpha().getValue() == 1) {
animateActionsViewOut();
@@ -2414,9 +2389,6 @@
// immediately available.
onLayout(false /* changed */, getLeft(), getTop(), getRight(), getBottom());
}
- if (!showAsGrid()) {
- resetTaskVisuals();
- }
onDismissAnimationEnds();
mPendingAnimation = null;
}
@@ -2726,16 +2698,14 @@
// Update the pivots such that when the task is scaled, it fills the full page
getTaskSize(mTempRect);
- mFullscreenScale = getPagedViewOrientedState().getFullScreenScaleAndPivot(
- mTempRect, mActivity.getDeviceProfile(), mTempPointF);
+ getPagedViewOrientedState().getFullScreenScaleAndPivot(mTempRect,
+ mActivity.getDeviceProfile(), mTempPointF);
setPivotX(mTempPointF.x);
setPivotY(mTempPointF.y);
setTaskModalness(mTaskModalness);
mLastComputedTaskStartPushOutDistance = null;
mLastComputedTaskEndPushOutDistance = null;
- mLastComputedTaskBottomPushOutDistance = null;
updatePageOffsets();
- updateVerticalPageOffsets();
setImportantForAccessibility(isModal() ? IMPORTANT_FOR_ACCESSIBILITY_NO
: IMPORTANT_FOR_ACCESSIBILITY_AUTO);
}
@@ -2752,7 +2722,7 @@
float midpointOffsetSize = 0;
float leftOffsetSize = midpoint - 1 >= 0
- ? -getHorizontalOffsetSize(midpoint - 1, midpoint, offset)
+ ? getHorizontalOffsetSize(midpoint - 1, midpoint, offset)
: 0;
float rightOffsetSize = midpoint + 1 < count
? getHorizontalOffsetSize(midpoint + 1, midpoint, offset)
@@ -2889,64 +2859,6 @@
return distanceToOffscreen * offsetProgress;
}
- private void updateVerticalPageOffsets() {
- float offset = mAdjacentPageVerticalOffset;
- int count = getTaskViewCount();
-
- TaskView runningTask = mRunningTaskId == -1 || !mRunningTaskTileHidden
- ? null : getTaskView(mRunningTaskId);
- int midpoint = runningTask == null ? -1 : indexOfChild(runningTask);
-
- float offsetSize = getVerticalOffsetSize(offset);
- float midpointOffsetSize = 0;
-
- for (int i = 0; i < count; i++) {
- float translation = i == midpoint
- ? midpointOffsetSize
- : offsetSize;
- int directionFactor = mOrientationHandler.getSecondaryTranslationDirectionFactor() * -1;
- translation *= directionFactor;
- TaskView child = getTaskViewAt(i);
- FloatProperty translationProperty = child.getSecondaryTaskOffsetTranslationProperty();
- translationProperty.set(child, translation);
- if (LIVE_TILE.get() && mEnableDrawingLiveTile && i == getRunningTaskIndex()) {
- mLiveTileTaskViewSimulator.taskSecondaryTranslation.value = translation;
- redrawLiveTile();
- }
- }
- }
-
- /**
- * Computes the distance to offset the given child such that it is completely offscreen when
- * translating away from its position in overview.
- * @param offsetProgress From 0 to 1 where 0 means no offset and 1 means offset offscreen.
- */
- private float getVerticalOffsetSize(float offsetProgress) {
- if (offsetProgress == 0) {
- // Don't bother calculating everything below if we won't offset anyway.
- return 0;
- }
- // First, find the distance to offscreen from the normal (centered) task position.
- mTempRectF.set(mLastComputedTaskSize);
- RectF taskPosition = mTempRectF;
- float desiredTop = getHeight();
- float distanceToOffscreen = desiredTop - taskPosition.top;
- // Next, we need to account for the resistance translation if any (e.g. long swipe up).
- float translationY = mTaskViewsSecondaryTranslation;
- distanceToOffscreen -= translationY;
- // Finally, we need to account for RecentsView scale, because it moves tasks based on its
- // pivot. To do this, we move the task position to where it would be offscreen at scale = 1
- // (computed above), then we apply the scale via getMatrix() to determine how much that
- // moves the task from its desired position, and adjust the computed distance accordingly.
- if (mLastComputedTaskBottomPushOutDistance == null) {
- taskPosition.offsetTo(0, desiredTop + translationY);
- getMatrix().mapRect(taskPosition);
- mLastComputedTaskBottomPushOutDistance = (taskPosition.top - desiredTop) / getScaleY();
- }
- distanceToOffscreen -= mLastComputedTaskBottomPushOutDistance;
- return distanceToOffscreen * offsetProgress;
- }
-
protected void setTaskViewsResistanceTranslation(float translation) {
mTaskViewsSecondaryTranslation = translation;
for (int i = 0; i < getTaskViewCount(); i++) {
@@ -3598,11 +3510,11 @@
}
int overScrollShift = getOverScrollShift();
- if (mAdjacentPageVerticalOffset > 0) {
+ if (mAdjacentPageHorizontalOffset > 0) {
// Don't dampen the scroll (due to overscroll) if the adjacent tasks are offscreen, so
// that the page can move freely given there's no visual indication why it shouldn't.
- overScrollShift = (int) Utilities.mapRange(mAdjacentPageVerticalOffset, overScrollShift,
- getUndampedOverScrollShift());
+ overScrollShift = (int) Utilities.mapRange(mAdjacentPageHorizontalOffset,
+ overScrollShift, getUndampedOverScrollShift());
}
return getScrollForPage(pageIndex) - mOrientationHandler.getPrimaryScroll(this)
+ overScrollShift;
@@ -3794,7 +3706,8 @@
return mColorTint;
}
- private boolean showAsGrid() {
+ /** Returns {@code true} if the overview tasks are displayed as a grid. */
+ public boolean showAsGrid() {
return mOverviewGridEnabled || (mCurrentGestureEndTarget != null
&& mSizeStrategy.stateFromGestureEndTarget(
mCurrentGestureEndTarget).displayOverviewTasksAsGrid(mActivity.getDeviceProfile()));
diff --git a/quickstep/src/com/android/quickstep/views/TaskMenuView.java b/quickstep/src/com/android/quickstep/views/TaskMenuView.java
index 32cd367..bff1013 100644
--- a/quickstep/src/com/android/quickstep/views/TaskMenuView.java
+++ b/quickstep/src/com/android/quickstep/views/TaskMenuView.java
@@ -215,6 +215,7 @@
RecentsView recentsView = mTaskView.getRecentsView();
recentsView.switchToScreenshot(null,
() -> recentsView.finishRecentsAnimation(true /* toRecents */,
+ false /* shouldPip */,
() -> menuOption.onClick(view)));
} else {
menuOption.onClick(view);
diff --git a/quickstep/src/com/android/quickstep/views/TaskView.java b/quickstep/src/com/android/quickstep/views/TaskView.java
index f8be5b6..cfac32c 100644
--- a/quickstep/src/com/android/quickstep/views/TaskView.java
+++ b/quickstep/src/com/android/quickstep/views/TaskView.java
@@ -1133,11 +1133,6 @@
TASK_OFFSET_TRANSLATION_X, TASK_OFFSET_TRANSLATION_Y);
}
- public FloatProperty<TaskView> getSecondaryTaskOffsetTranslationProperty() {
- return getPagedOrientationHandler().getSecondaryValue(
- TASK_OFFSET_TRANSLATION_X, TASK_OFFSET_TRANSLATION_Y);
- }
-
public FloatProperty<TaskView> getTaskResistanceTranslationProperty() {
return getPagedOrientationHandler().getSecondaryValue(
TASK_RESISTANCE_TRANSLATION_X, TASK_RESISTANCE_TRANSLATION_Y);
diff --git a/quickstep/tests/src/com/android/quickstep/DigitalWellBeingToastTest.java b/quickstep/tests/src/com/android/quickstep/DigitalWellBeingToastTest.java
index 2a7da7e..3e84a76 100644
--- a/quickstep/tests/src/com/android/quickstep/DigitalWellBeingToastTest.java
+++ b/quickstep/tests/src/com/android/quickstep/DigitalWellBeingToastTest.java
@@ -3,8 +3,6 @@
import static androidx.test.InstrumentationRegistry.getInstrumentation;
import static com.android.launcher3.LauncherState.OVERVIEW;
-import static com.android.launcher3.util.rule.TestStabilityRule.PLATFORM_POSTSUBMIT;
-import static com.android.launcher3.util.rule.TestStabilityRule.UNBUNDLED_POSTSUBMIT;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -18,7 +16,6 @@
import androidx.test.runner.AndroidJUnit4;
import com.android.launcher3.Launcher;
-import com.android.launcher3.util.rule.TestStabilityRule;
import com.android.quickstep.views.DigitalWellBeingToast;
import com.android.quickstep.views.RecentsView;
import com.android.quickstep.views.TaskView;
diff --git a/res/layout/taskbar_view.xml b/res/color/all_apps_tab_bg.xml
similarity index 68%
rename from res/layout/taskbar_view.xml
rename to res/color/all_apps_tab_bg.xml
index 96ae43d..e59e8d2 100644
--- a/res/layout/taskbar_view.xml
+++ b/res/color/all_apps_tab_bg.xml
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2021 The Android Open Source Project
+<!-- Copyright (C) 2017 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.
@@ -14,8 +13,7 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<Space
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:visibility="gone" />
\ No newline at end of file
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
+ <item android:color="?androidprv:attr/colorAccentPrimary"/>
+</selector>
\ No newline at end of file
diff --git a/res/color/all_apps_tab_text.xml b/res/color/all_apps_tab_text.xml
index 4ddb277..2db0fb5 100644
--- a/res/color/all_apps_tab_text.xml
+++ b/res/color/all_apps_tab_text.xml
@@ -14,6 +14,6 @@
limitations under the License.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:color="?android:attr/textColorPrimaryInverse" android:state_selected="true"/>
+ <item android:color="@android:color/black" android:state_selected="true"/>
<item android:color="?android:attr/textColorTertiary"/>
</selector>
\ No newline at end of file
diff --git a/res/drawable/all_apps_tabs_background.xml b/res/drawable/all_apps_tabs_background.xml
index ca2beec..377b653 100644
--- a/res/drawable/all_apps_tabs_background.xml
+++ b/res/drawable/all_apps_tabs_background.xml
@@ -16,6 +16,6 @@
<shape android:shape="rectangle"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
- <solid android:color="?androidprv:attr/colorSurfaceVariant" />
+ <solid android:color="?androidprv:attr/colorSurface" />
<corners android:radius="@dimen/all_apps_header_pill_corner_radius" />
</shape>
\ No newline at end of file
diff --git a/res/drawable/bg_widgets_picker_handle.xml b/res/drawable/bg_widgets_picker_handle.xml
new file mode 100644
index 0000000..68681a6
--- /dev/null
+++ b/res/drawable/bg_widgets_picker_handle.xml
@@ -0,0 +1,29 @@
+<?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.
+-->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item>
+ <shape android:shape="rectangle">
+ <solid android:color="?android:attr/colorBackground" />
+ <padding android:top="16dp"/>
+ </shape>
+ </item>
+ <item android:gravity="center">
+ <shape android:shape="rectangle">
+ <solid android:color="?android:attr/textColorSecondary" />
+ <size android:width="48dp" android:height="2dp" />
+ </shape>
+ </item>
+</layer-list>
\ No newline at end of file
diff --git a/quickstep/res/layout/taskbar_view.xml b/res/drawable/personal_work_tabs_ripple.xml
similarity index 63%
rename from quickstep/res/layout/taskbar_view.xml
rename to res/drawable/personal_work_tabs_ripple.xml
index 34a88ea..2e57b80 100644
--- a/quickstep/res/layout/taskbar_view.xml
+++ b/res/drawable/personal_work_tabs_ripple.xml
@@ -13,14 +13,10 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-
-<com.android.launcher3.taskbar.TaskbarView
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/taskbar_view"
- android:layout_width="match_parent"
- android:layout_height="@dimen/taskbar_size"
- android:background="@android:color/transparent"
- android:layout_gravity="bottom"
- android:gravity="center"
- android:visibility="gone" />
-
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+ android:color="?android:attr/colorControlHighlight">
+ <shape android:shape="rectangle">
+ <solid android:color="@android:color/transparent" />
+ <corners android:radius="@dimen/all_apps_header_pill_corner_radius" />
+ </shape>
+</ripple>
\ No newline at end of file
diff --git a/res/layout/add_item_confirmation_activity.xml b/res/layout/add_item_confirmation_activity.xml
index 00d148f..0a3fbbc 100644
--- a/res/layout/add_item_confirmation_activity.xml
+++ b/res/layout/add_item_confirmation_activity.xml
@@ -16,69 +16,85 @@
** limitations under the License.
*/
-->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/add_item_confirmation"
+<com.android.launcher3.dragndrop.AddItemDragLayer
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/add_item_drag_layer"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:padding="24dp"
- android:theme="?attr/widgetsTheme"
- android:orientation="vertical">
+ android:clipChildren="false"
+ android:clipToPadding="false"
+ android:importantForAccessibility="no">
- <TextView
- style="@style/TextHeadline"
- android:id="@+id/widget_appName"
+ <com.android.launcher3.widget.AddItemWidgetsBottomSheet
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/add_item_bottom_sheet"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:gravity="center_horizontal"
- android:textColor="?android:attr/textColorPrimary"
- android:textSize="24sp"
- android:ellipsize="end"
- android:fadingEdge="horizontal"
- android:singleLine="true"
- android:maxLines="1" />
+ android:background="@drawable/add_item_dialog_background"
+ android:padding="24dp"
+ android:theme="?attr/widgetsTheme"
+ android:layout_gravity="bottom"
+ android:orientation="vertical">
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center_horizontal"
- android:paddingVertical="8dp"
- android:text="@string/add_item_request_drag_hint"
- android:textSize="14sp"
- android:textColor="?android:attr/textColorSecondary"
- android:alpha="0.7"
- android:importantForAccessibility="no"/>
-
- <include layout="@layout/widget_cell"
- android:id="@+id/widget_cell"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:layout_marginVertical="16dp" />
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="end"
- android:padding="8dp"
- android:orientation="horizontal">
- <Button
- style="@style/Widget.DeviceDefault.Button.Rounded.Colored"
- android:layout_width="wrap_content"
+ <TextView
+ style="@style/TextHeadline"
+ android:id="@+id/widget_appName"
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:paddingHorizontal="16dp"
- android:onClick="onCancelClick"
- android:text="@android:string/cancel" />
+ android:gravity="center_horizontal"
+ android:textColor="?android:attr/textColorPrimary"
+ android:textSize="24sp"
+ android:ellipsize="end"
+ android:fadingEdge="horizontal"
+ android:singleLine="true"
+ android:maxLines="1" />
- <Space
- android:layout_width="4dp"
- android:layout_height="wrap_content" />
-
- <Button
- style="@style/Widget.DeviceDefault.Button.Rounded.Colored"
- android:layout_width="wrap_content"
+ <TextView
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:paddingHorizontal="16dp"
- android:onClick="onPlaceAutomaticallyClick"
- android:text="@string/add_to_home_screen" />
- </LinearLayout>
-</LinearLayout>
+ android:gravity="center_horizontal"
+ android:paddingVertical="8dp"
+ android:text="@string/add_item_request_drag_hint"
+ android:textSize="14sp"
+ android:textColor="?android:attr/textColorSecondary"
+ android:alpha="0.7"
+ android:importantForAccessibility="no"/>
+
+ <include layout="@layout/widget_cell"
+ android:id="@+id/widget_cell"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:layout_marginVertical="16dp" />
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="end"
+ android:padding="8dp"
+ android:orientation="horizontal">
+ <Button
+ style="@style/Widget.DeviceDefault.Button.Rounded.Colored"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:paddingHorizontal="16dp"
+ android:onClick="onCancelClick"
+ android:text="@android:string/cancel" />
+
+ <Space
+ android:layout_width="4dp"
+ android:layout_height="wrap_content" />
+
+ <Button
+ style="@style/Widget.DeviceDefault.Button.Rounded.Colored"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:paddingHorizontal="16dp"
+ android:onClick="onPlaceAutomaticallyClick"
+ android:text="@string/add_to_home_screen"/>
+ </LinearLayout>
+ </com.android.launcher3.widget.AddItemWidgetsBottomSheet>
+
+</com.android.launcher3.dragndrop.AddItemDragLayer>
+
+
diff --git a/res/layout/all_apps_personal_work_tabs.xml b/res/layout/all_apps_personal_work_tabs.xml
index 750e101..f089f83 100644
--- a/res/layout/all_apps_personal_work_tabs.xml
+++ b/res/layout/all_apps_personal_work_tabs.xml
@@ -1,5 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
+<?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");
@@ -15,8 +14,7 @@
~ limitations under the License.
-->
-<com.android.launcher3.workprofile.PersonalWorkSlidingTabStrip
- xmlns:android="http://schemas.android.com/apk/res/android"
+<com.android.launcher3.workprofile.PersonalWorkSlidingTabStrip xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="@dimen/all_apps_header_pill_height"
@@ -32,7 +30,7 @@
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
- android:background="?android:attr/selectableItemBackground"
+ android:background="@drawable/personal_work_tabs_ripple"
android:text="@string/all_apps_personal_tab"
android:textColor="@color/all_apps_tab_text"
android:textSize="16sp" />
@@ -42,7 +40,7 @@
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
- android:background="?android:attr/selectableItemBackground"
+ android:background="@drawable/personal_work_tabs_ripple"
android:text="@string/all_apps_work_tab"
android:textColor="@color/all_apps_tab_text"
android:textSize="16sp" />
diff --git a/res/layout/widgets_full_sheet_search_and_recommendations.xml b/res/layout/widgets_full_sheet_search_and_recommendations.xml
index ce7a682..a89f85f 100644
--- a/res/layout/widgets_full_sheet_search_and_recommendations.xml
+++ b/res/layout/widgets_full_sheet_search_and_recommendations.xml
@@ -18,35 +18,44 @@
android:id="@+id/search_and_recommendations_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:paddingHorizontal="16dp"
android:layout_marginBottom="16dp"
- android:orientation="vertical"
- android:clipToPadding="false">
+ android:orientation="vertical">
+
<View
android:id="@+id/collapse_handle"
- android:layout_width="48dp"
- android:layout_height="2dp"
- android:layout_marginTop="16dp"
- android:elevation="2dp"
- android:layout_gravity="center_horizontal"
- android:background="?android:attr/textColorSecondary"/>
+ android:layout_width="match_parent"
+ android:layout_height="18dp"
+ android:elevation="0.1dp"
+ android:background="@drawable/bg_widgets_picker_handle"/>
+
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textSize="24sp"
- android:layout_marginTop="16dp"
+ android:layout_marginTop="24dp"
android:textColor="?android:attr/textColorSecondary"
android:text="@string/widget_button_text"/>
- <include layout="@layout/widgets_search_bar"/>
+
+ <FrameLayout
+ android:id="@+id/search_bar_container"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:elevation="0.1dp"
+ android:background="?android:attr/colorBackground"
+ android:paddingBottom="8dp"
+ android:clipToPadding="false">
+ <include layout="@layout/widgets_search_bar" />
+ </FrameLayout>
<com.android.launcher3.widget.picker.WidgetsRecommendationTableLayout
android:id="@+id/recommended_widget_table"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:layout_marginHorizontal="16dp"
+ android:layout_marginTop="8dp"
android:background="@drawable/widgets_recommendation_background"
android:paddingVertical="@dimen/recommended_widgets_table_vertical_padding"
- android:layout_marginTop="16dp"
- android:visibility="gone"/>
+ android:visibility="gone" />
</com.android.launcher3.widget.picker.SearchAndRecommendationsView>
diff --git a/res/layout/widgets_personal_work_tabs.xml b/res/layout/widgets_personal_work_tabs.xml
index f835b52..72d83e8 100644
--- a/res/layout/widgets_personal_work_tabs.xml
+++ b/res/layout/widgets_personal_work_tabs.xml
@@ -22,6 +22,7 @@
android:layout_height="@dimen/all_apps_header_pill_height"
android:layout_marginHorizontal="16dp"
android:orientation="horizontal"
+ android:background="@drawable/all_apps_tabs_background"
android:elevation="2dp"
style="@style/TextHeadline">
@@ -30,7 +31,7 @@
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
- android:background="?android:attr/selectableItemBackground"
+ android:background="@drawable/personal_work_tabs_ripple"
android:text="@string/widgets_full_sheet_personal_tab"
android:textColor="@color/all_apps_tab_text"
android:textSize="14sp" />
@@ -40,7 +41,7 @@
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
- android:background="?android:attr/selectableItemBackground"
+ android:background="@drawable/personal_work_tabs_ripple"
android:text="@string/widgets_full_sheet_work_tab"
android:textColor="@color/all_apps_tab_text"
android:textSize="14sp" />
diff --git a/res/layout/widgets_search_bar.xml b/res/layout/widgets_search_bar.xml
index 2467156..6a4bb4d 100644
--- a/res/layout/widgets_search_bar.xml
+++ b/res/layout/widgets_search_bar.xml
@@ -5,10 +5,9 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
- android:layout_marginTop="16dp"
- android:layout_marginBottom="1dp"
- android:background="@drawable/bg_widgets_searchbox"
- android:elevation="2dp">
+ android:layout_marginTop="24dp"
+ android:layout_marginHorizontal="16dp"
+ android:background="@drawable/bg_widgets_searchbox">
<com.android.launcher3.ExtendedEditText
android:id="@+id/widgets_search_bar_edit_text"
diff --git a/res/values-night/styles.xml b/res/values-night/styles.xml
index 07a5096..427525b 100644
--- a/res/values-night/styles.xml
+++ b/res/values-night/styles.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
-* Copyright (C) 2018 The Android Open Source Project
+* Copyright (C) 2008 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.
@@ -18,11 +18,7 @@
-->
<resources>
-
- <style name="AppItemActivityTheme" parent="@android:style/Theme.DeviceDefault.Dialog.Alert">
+ <style name="AddItemActivityTheme" parent="@android:style/Theme.Translucent.NoTitleBar">
<item name="widgetsTheme">@style/WidgetContainerTheme.Dark</item>
- <item name="android:windowBackground">@drawable/add_item_dialog_background</item>
- <item name="android:windowNoTitle">true</item>
</style>
-
-</resources>
\ No newline at end of file
+</resources>
diff --git a/res/values/config.xml b/res/values/config.xml
index 102d4e0..77c7e98 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -126,7 +126,7 @@
<item name="swipe_up_rect_xy_fling_friction" type="dimen" format="float">1.5</item>
- <item name="swipe_up_scale_start" type="dimen" format="float">0.98</item>
+ <item name="swipe_up_scale_start" type="dimen" format="float">0.88</item>
<item name="swipe_up_duration" type="dimen" format="float">400</item>
<item name="swipe_up_trans_y_dp" type="dimen" format="float">4.5</item>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 26587d8..451f82b 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -91,14 +91,15 @@
<dimen name="all_apps_empty_search_bg_top_offset">144dp</dimen>
<dimen name="all_apps_background_canvas_width">700dp</dimen>
<dimen name="all_apps_background_canvas_height">475dp</dimen>
- <dimen name="all_apps_header_pill_height">50dp</dimen>
- <dimen name="all_apps_header_pill_corner_radius">48dp</dimen>
+ <dimen name="all_apps_header_pill_height">36dp</dimen>
+ <dimen name="all_apps_header_pill_corner_radius">18dp</dimen>
+ <dimen name="all_apps_header_pills_width">320dp</dimen>
<dimen name="all_apps_header_tab_height">48dp</dimen>
<dimen name="all_apps_tabs_indicator_height">2dp</dimen>
<dimen name="all_apps_header_top_padding">36dp</dimen>
<dimen name="all_apps_work_profile_tab_footer_top_padding">16dp</dimen>
<dimen name="all_apps_work_profile_tab_footer_bottom_padding">20dp</dimen>
- <dimen name="all_apps_tabs_side_padding">12dp</dimen>
+ <dimen name="all_apps_tabs_side_padding">32dp</dimen>
<dimen name="all_apps_divider_height">1dp</dimen>
<dimen name="all_apps_tip_bottom_margin">8dp</dimen>
diff --git a/res/values/id.xml b/res/values/id.xml
index 39c49bd..1bd40ce 100644
--- a/res/values/id.xml
+++ b/res/values/id.xml
@@ -15,6 +15,7 @@
limitations under the License.
-->
<resources>
+ <item type="id" name="apps_list_view_work" />
<item type="id" name="view_type_widgets_list" />
<item type="id" name="view_type_widgets_header" />
<item type="id" name="view_type_widgets_search_header" />
diff --git a/res/values/styles.xml b/res/values/styles.xml
index fa41b1a..6d22951 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -149,12 +149,6 @@
<style name="AppTheme.Dark.DarkMainColor" parent="@style/LauncherTheme.Dark.DarkMainColor" />
<style name="AppTheme.Dark.DarkText" parent="@style/LauncherTheme.Dark.DarkText" />
- <style name="AppItemActivityTheme" parent="@android:style/Theme.DeviceDefault.Light.Dialog.Alert">
- <item name="widgetsTheme">@style/WidgetContainerTheme</item>
- <item name="android:windowBackground">@drawable/add_item_dialog_background</item>
- <item name="android:windowNoTitle">true</item>
- </style>
-
<style name="HomeSettingsTheme" parent="@android:style/Theme.DeviceDefault.Settings">
<item name="android:navigationBarColor">?android:colorPrimaryDark</item>
<item name="preferenceTheme">@style/HomeSettingsPreferenceTheme</item>
@@ -213,8 +207,7 @@
<item name="disabledIconAlpha">.54</item>
</style>
-
- <style name="BaseIconUnBounded" parent="@android:style/TextAppearance.DeviceDefault">
+ <style name="BaseIconUnBounded" parent="@android:style/TextAppearance.DeviceDefault.DialogWindowTitle">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">match_parent</item>
<item name="android:layout_gravity">center</item>
@@ -272,7 +265,8 @@
<style name="DropTargetButton" parent="DropTargetButtonBase" />
- <style name="TextHeadline" parent="@android:style/TextAppearance.DeviceDefault.DialogWindowTitle" />
+ <style name="TextHeadline" parent="@android:style/TextAppearance.DeviceDefault" />
+
<style name="PrimaryHeadline" parent="@android:style/TextAppearance.DeviceDefault.DialogWindowTitle"/>
<style name="TextTitle" parent="@android:style/TextAppearance.DeviceDefault" />
@@ -291,4 +285,8 @@
<style name="Widget.DeviceDefault.Button.Rounded.Colored" parent="@android:style/Widget.DeviceDefault.Button.Colored">
<item name="android:background">@drawable/add_item_dialog_button_background</item>
</style>
+
+ <style name="AddItemActivityTheme" parent="@android:style/Theme.Translucent.NoTitleBar">
+ <item name="widgetsTheme">@style/WidgetContainerTheme</item>
+ </style>
</resources>
diff --git a/src/com/android/launcher3/AbstractFloatingView.java b/src/com/android/launcher3/AbstractFloatingView.java
index 32b2c9a..b3952ca 100644
--- a/src/com/android/launcher3/AbstractFloatingView.java
+++ b/src/com/android/launcher3/AbstractFloatingView.java
@@ -63,7 +63,8 @@
TYPE_DRAG_DROP_POPUP,
TYPE_TASK_MENU,
TYPE_OPTIONS_POPUP,
- TYPE_ICON_SURFACE
+ TYPE_ICON_SURFACE,
+ TYPE_PIN_WIDGET_FROM_EXTERNAL_POPUP
})
@Retention(RetentionPolicy.SOURCE)
public @interface FloatingViewType {}
@@ -84,11 +85,13 @@
public static final int TYPE_OPTIONS_POPUP = 1 << 12;
public static final int TYPE_ICON_SURFACE = 1 << 13;
+ public static final int TYPE_PIN_WIDGET_FROM_EXTERNAL_POPUP = 1 << 14;
+
public static final int TYPE_ALL = TYPE_FOLDER | TYPE_ACTION_POPUP
| TYPE_WIDGETS_BOTTOM_SHEET | TYPE_WIDGET_RESIZE_FRAME | TYPE_WIDGETS_FULL_SHEET
| TYPE_ON_BOARD_POPUP | TYPE_DISCOVERY_BOUNCE | TYPE_TASK_MENU
| TYPE_OPTIONS_POPUP | TYPE_SNACKBAR | TYPE_LISTENER | TYPE_ALL_APPS_EDU
- | TYPE_ICON_SURFACE | TYPE_DRAG_DROP_POPUP;
+ | TYPE_ICON_SURFACE | TYPE_DRAG_DROP_POPUP | TYPE_PIN_WIDGET_FROM_EXTERNAL_POPUP;
// Type of popups which should be kept open during launcher rebind
public static final int TYPE_REBIND_SAFE = TYPE_WIDGETS_FULL_SHEET
diff --git a/src/com/android/launcher3/BubbleTextView.java b/src/com/android/launcher3/BubbleTextView.java
index 3d044d6..322c6ee 100644
--- a/src/com/android/launcher3/BubbleTextView.java
+++ b/src/com/android/launcher3/BubbleTextView.java
@@ -447,10 +447,6 @@
* @param canvas The canvas to draw to.
*/
protected void drawDotIfNecessary(Canvas canvas) {
- if (mActivity instanceof Launcher && ((Launcher) mActivity).isViewInTaskbar(this)) {
- // TODO: support notification dots in Taskbar
- return;
- }
if (!mForceHideDot && (hasDot() || mDotParams.scale > 0)) {
getIconBounds(mDotParams.iconBounds);
Utilities.scaleRectAboutCenter(mDotParams.iconBounds,
diff --git a/src/com/android/launcher3/Hotseat.java b/src/com/android/launcher3/Hotseat.java
index b2a9e75..ff380ce 100644
--- a/src/com/android/launcher3/Hotseat.java
+++ b/src/com/android/launcher3/Hotseat.java
@@ -49,7 +49,6 @@
private final View mQsb;
private final int mQsbHeight;
- private final View mTaskbarView;
private final int mTaskbarViewHeight;
public Hotseat(Context context) {
@@ -67,10 +66,7 @@
mQsbHeight = mQsb.getLayoutParams().height;
addView(mQsb);
- mTaskbarView = LayoutInflater.from(context).inflate(R.layout.taskbar_view, this, false);
- mTaskbarViewHeight = mTaskbarView.getLayoutParams().height;
- // We want taskbar in the back so its background applies to Hotseat as well.
- addView(mTaskbarView, 0);
+ mTaskbarViewHeight = context.getResources().getDimensionPixelSize(R.dimen.taskbar_size);
}
/**
@@ -187,8 +183,6 @@
int width = getShortcutsAndWidgets().getMeasuredWidth();
mQsb.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
MeasureSpec.makeMeasureSpec(mQsbHeight, MeasureSpec.EXACTLY));
- mTaskbarView.measure(MeasureSpec.makeMeasureSpec(getMeasuredWidth(), MeasureSpec.EXACTLY),
- MeasureSpec.makeMeasureSpec(mTaskbarViewHeight, MeasureSpec.EXACTLY));
}
@Override
@@ -202,13 +196,6 @@
int bottom = b - t - getQsbOffsetY();
int top = bottom - mQsbHeight;
mQsb.layout(left, top, right, bottom);
-
- int taskbarWidth = mTaskbarView.getMeasuredWidth();
- left = (r - l - taskbarWidth) / 2;
- right = left + taskbarWidth;
- bottom = b - t - getTaskbarOffsetY();
- top = bottom - mTaskbarViewHeight;
- mTaskbarView.layout(left, top, right, bottom);
}
/**
@@ -244,10 +231,4 @@
return mQsb;
}
- /**
- * Returns the Taskbar inside hotseat
- */
- public View getTaskbarView() {
- return mTaskbarView;
- }
}
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 16ffd7a..8889e60 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -1942,13 +1942,6 @@
@Override
public boolean startActivitySafely(View v, Intent intent, ItemInfo item) {
- if (isViewInTaskbar(v)) {
- // Start the activity without the hacky workarounds below, which assume the View was
- // clicked when Launcher was resumed and will be hidden until Launcher is re-resumed
- // (this isn't the case for Taskbar).
- return super.startActivitySafely(v, intent, item);
- }
-
if (!hasBeenResumed()) {
// Workaround an issue where the WM launch animation is clobbered when finishing the
// recents animation into launcher. Defer launching the activity until Launcher is
@@ -2804,7 +2797,7 @@
* @see LauncherState#getOverviewScaleAndOffset(Launcher)
*/
public float[] getNormalOverviewScaleAndOffset() {
- return new float[] {NO_SCALE, NO_OFFSET, NO_OFFSET};
+ return new float[] {NO_SCALE, NO_OFFSET};
}
/**
@@ -2860,13 +2853,6 @@
.start();
}
- /**
- * @return Whether the View is in the same window as the Taskbar window.
- */
- public boolean isViewInTaskbar(View v) {
- return false;
- }
-
public boolean supportsAdaptiveIconAnimation(View clickedView) {
return false;
}
diff --git a/src/com/android/launcher3/LauncherAppState.java b/src/com/android/launcher3/LauncherAppState.java
index 834b5a7..b6cc6d6 100644
--- a/src/com/android/launcher3/LauncherAppState.java
+++ b/src/com/android/launcher3/LauncherAppState.java
@@ -24,6 +24,8 @@
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
+import android.content.SharedPreferences;
+import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.content.pm.LauncherApps;
import android.os.UserHandle;
import android.util.Log;
@@ -45,6 +47,7 @@
import com.android.launcher3.util.SafeCloseable;
import com.android.launcher3.util.SettingsCache;
import com.android.launcher3.util.SimpleBroadcastReceiver;
+import com.android.launcher3.util.Themes;
import com.android.launcher3.widget.custom.CustomWidgetManager;
public class LauncherAppState {
@@ -108,6 +111,12 @@
observer, MODEL_EXECUTOR.getHandler());
mOnTerminateCallback.add(iconChangeTracker::close);
MODEL_EXECUTOR.execute(observer::verifyIconChanged);
+ if (ENABLE_THEMED_ICONS.get()) {
+ SharedPreferences prefs = Utilities.getPrefs(mContext);
+ prefs.registerOnSharedPreferenceChangeListener(observer);
+ mOnTerminateCallback.add(
+ () -> prefs.unregisterOnSharedPreferenceChangeListener(observer));
+ }
InstallSessionTracker installSessionTracker =
InstallSessionHelper.INSTANCE.get(context).registerInstallTracker(mModel);
@@ -128,7 +137,7 @@
mContext = context;
mInvariantDeviceProfile = InvariantDeviceProfile.INSTANCE.get(context);
- mIconProvider = new IconProvider(context, ENABLE_THEMED_ICONS.get());
+ mIconProvider = new IconProvider(context, Themes.isThemedIconEnabled(context));
mIconCache = new IconCache(mContext, mInvariantDeviceProfile,
iconCacheFileName, mIconProvider);
mWidgetCache = new WidgetPreviewLoader(mContext, mIconCache);
@@ -187,7 +196,8 @@
return InvariantDeviceProfile.INSTANCE.get(context);
}
- private class IconObserver implements IconProvider.IconChangeListener {
+ private class IconObserver
+ implements IconProvider.IconChangeListener, OnSharedPreferenceChangeListener {
@Override
public void onAppIconChanged(String packageName, UserHandle user) {
@@ -207,5 +217,13 @@
onSystemIconStateChanged(iconState);
}
}
+
+ @Override
+ public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
+ if (Themes.KEY_THEMED_ICONS.equals(key)) {
+ mIconProvider.setIconThemeSupported(Themes.isThemedIconEnabled(mContext));
+ verifyIconChanged();
+ }
+ }
}
}
diff --git a/src/com/android/launcher3/LauncherState.java b/src/com/android/launcher3/LauncherState.java
index 8432f4b..3399ce9 100644
--- a/src/com/android/launcher3/LauncherState.java
+++ b/src/com/android/launcher3/LauncherState.java
@@ -172,12 +172,10 @@
}
/**
- * Returns an array of three elements.
+ * Returns an array of two elements.
* The first specifies the scale for the overview
* The second is the factor ([0, 1], 0 => center-screen; 1 => offscreen) by which overview
* should be shifted horizontally.
- * The third is the factor ([0, 1], 0 => center-screen; 1 => offscreen) by which overview
- * should be shifted vertically.
*/
public float[] getOverviewScaleAndOffset(Launcher launcher) {
return launcher.getNormalOverviewScaleAndOffset();
diff --git a/src/com/android/launcher3/Utilities.java b/src/com/android/launcher3/Utilities.java
index 7ae729a..2884fba 100644
--- a/src/com/android/launcher3/Utilities.java
+++ b/src/com/android/launcher3/Utilities.java
@@ -324,15 +324,17 @@
}
public static void scaleRectFAboutCenter(RectF r, float scale) {
+ scaleRectFAboutPivot(r, scale, r.centerX(), r.centerY());
+ }
+
+ public static void scaleRectFAboutPivot(RectF r, float scale, float px, float py) {
if (scale != 1.0f) {
- float cx = r.centerX();
- float cy = r.centerY();
- r.offset(-cx, -cy);
+ r.offset(-px, -py);
r.left = r.left * scale;
r.top = r.top * scale ;
r.right = r.right * scale;
r.bottom = r.bottom * scale;
- r.offset(cx, cy);
+ r.offset(px, py);
}
}
diff --git a/src/com/android/launcher3/allapps/AllAppsContainerView.java b/src/com/android/launcher3/allapps/AllAppsContainerView.java
index 7be1138..9df95bf 100644
--- a/src/com/android/launcher3/allapps/AllAppsContainerView.java
+++ b/src/com/android/launcher3/allapps/AllAppsContainerView.java
@@ -30,11 +30,13 @@
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.Rect;
+import android.os.Parcelable;
import android.os.Process;
import android.text.Selection;
import android.text.SpannableStringBuilder;
import android.util.AttributeSet;
import android.util.Log;
+import android.util.SparseArray;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MotionEvent;
@@ -133,6 +135,7 @@
private int mHeaderColor;
+
public AllAppsContainerView(Context context) {
this(context, null);
}
@@ -151,12 +154,10 @@
R.dimen.dynamic_grid_cell_border_spacing);
mHeaderTopPadding = context.getResources()
.getDimensionPixelSize(R.dimen.all_apps_header_top_padding);
- int accentColor = Themes.getColorAccent(getContext());
- mHeaderProtectionColor = ColorUtils.blendARGB(mScrimColor, accentColor, .3f);
+ mHeaderProtectionColor = context.getColor(R.color.all_apps_tab_bg);
mLauncher.addOnDeviceProfileChangeListener(this);
-
mSearchAdapterProvider = mLauncher.createSearchAdapterProvider(this);
mSearchQueryBuilder = new SpannableStringBuilder();
Selection.setSelection(mSearchQueryBuilder, 0);
@@ -171,6 +172,19 @@
mAllAppsStore.addUpdateListener(this::onAppsUpdated);
}
+ @Override
+ protected void dispatchRestoreInstanceState(SparseArray<Parcelable> sparseArray) {
+ try {
+ // Many slice view id is not properly assigned, and hence throws null
+ // pointer exception in the underneath method. Catching the exception
+ // simply doesn't restore these slice views. This doesn't have any
+ // user visible effect because because we query them again.
+ super.dispatchRestoreInstanceState(sparseArray);
+ } catch (Exception e) {
+ Log.e("AllAppsContainerView", "restoreInstanceState viewId = 0", e);
+ }
+ }
+
/**
* Sets the long click listener for icons
*/
@@ -438,6 +452,7 @@
setupWorkToggle();
mAH[AdapterHolder.MAIN].setup(mViewPager.getChildAt(0), mPersonalMatcher);
mAH[AdapterHolder.WORK].setup(mViewPager.getChildAt(1), mWorkMatcher);
+ mAH[AdapterHolder.WORK].recyclerView.setId(R.id.apps_list_view_work);
mViewPager.getPageIndicator().setActiveMarker(AdapterHolder.MAIN);
findViewById(R.id.tab_personal)
.setOnClickListener((View view) -> {
@@ -705,7 +720,7 @@
mHeaderPaint.setColor(mHeaderColor);
mHeaderPaint.setAlpha((int) (getAlpha() * Color.alpha(mHeaderColor)));
if (mHeaderPaint.getColor() != mScrimColor && mHeaderPaint.getColor() != 0) {
- canvas.drawRect(0, 0, getWidth(), mHeaderTopPadding + getTranslationY(),
+ canvas.drawRect(0, 0, getWidth(), mSearchContainer.getTop() + getTranslationY(),
mHeaderPaint);
}
}
@@ -815,10 +830,13 @@
protected void updateHeaderScroll(int scrolledOffset) {
float prog = Math.max(0, Math.min(1, (float) scrolledOffset / mHeaderThreshold));
- int headerColor = ColorUtils.setAlphaComponent(mHeaderProtectionColor, (int) (prog * 255));
+ int viewBG = ColorUtils.blendARGB(mScrimColor, mHeaderProtectionColor, prog);
+ int headerColor = ColorUtils.setAlphaComponent(viewBG,
+ (int) (getSearchView().getAlpha() * 255));
if (headerColor != mHeaderColor) {
mHeaderColor = headerColor;
- getSearchView().setBackgroundColor(mHeaderColor);
+ getSearchView().setBackgroundColor(viewBG);
+ getFloatingHeaderView().setHeaderColor(viewBG);
invalidateHeader();
}
}
diff --git a/src/com/android/launcher3/allapps/FloatingHeaderView.java b/src/com/android/launcher3/allapps/FloatingHeaderView.java
index 733d867..f55ab25 100644
--- a/src/com/android/launcher3/allapps/FloatingHeaderView.java
+++ b/src/com/android/launcher3/allapps/FloatingHeaderView.java
@@ -17,6 +17,9 @@
import android.animation.ValueAnimator;
import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.Rect;
import android.util.ArrayMap;
@@ -50,26 +53,28 @@
private final Rect mClip = new Rect(0, 0, Integer.MAX_VALUE, Integer.MAX_VALUE);
private final ValueAnimator mAnimator = ValueAnimator.ofInt(0, 0);
private final Point mTempOffset = new Point();
- private final RecyclerView.OnScrollListener mOnScrollListener = new RecyclerView.OnScrollListener() {
- @Override
- public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
- }
+ private final Paint mBGPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
+ private final RecyclerView.OnScrollListener mOnScrollListener =
+ new RecyclerView.OnScrollListener() {
+ @Override
+ public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
+ }
- @Override
- public void onScrolled(RecyclerView rv, int dx, int dy) {
- if (rv != mCurrentRV) {
- return;
- }
+ @Override
+ public void onScrolled(RecyclerView rv, int dx, int dy) {
+ if (rv != mCurrentRV) {
+ return;
+ }
- if (mAnimator.isStarted()) {
- mAnimator.cancel();
- }
+ if (mAnimator.isStarted()) {
+ mAnimator.cancel();
+ }
- int current = -mCurrentRV.getCurrentScrollY();
- moved(current);
- applyVerticalMove();
- }
- };
+ int current = -mCurrentRV.getCurrentScrollY();
+ moved(current);
+ applyVerticalMove();
+ }
+ };
private final int mHeaderTopPadding;
@@ -80,9 +85,10 @@
private AllAppsRecyclerView mWorkRV;
private AllAppsRecyclerView mCurrentRV;
private ViewGroup mParent;
- private boolean mHeaderCollapsed;
+ public boolean mHeaderCollapsed;
private int mSnappedScrolledY;
private int mTranslationY;
+ private int mHeaderColor;
private boolean mForwardToRecyclerView;
@@ -219,7 +225,7 @@
}
private AllAppsRecyclerView setupRV(AllAppsRecyclerView old, AllAppsRecyclerView updated) {
- if (old != updated && updated != null ) {
+ if (old != updated && updated != null) {
updated.addOnScrollListener(mOnScrollListener);
}
return updated;
@@ -262,6 +268,7 @@
}
} else {
mHeaderCollapsed = false;
+ invalidate();
}
mTranslationY = currentScrollY;
} else if (!mHeaderCollapsed) {
@@ -274,10 +281,28 @@
} else if (mTranslationY <= -mMaxTranslation) { // hide or stay hidden
mHeaderCollapsed = true;
mSnappedScrolledY = -mMaxTranslation;
+ invalidate();
}
}
}
+ /**
+ * Set current header protection background color
+ */
+ public void setHeaderColor(int color) {
+ mHeaderColor = color;
+ invalidate();
+ }
+
+ @Override
+ protected void dispatchDraw(Canvas canvas) {
+ if (mHeaderCollapsed && mHeaderColor != Color.TRANSPARENT) {
+ mBGPaint.setColor(mHeaderColor);
+ canvas.drawRect(0, 0, getWidth(), getHeight() + mTranslationY, mBGPaint);
+ }
+ super.dispatchDraw(canvas);
+ }
+
protected void applyVerticalMove() {
int uncappedTranslationY = mTranslationY;
mTranslationY = Math.max(mTranslationY, -mMaxTranslation);
diff --git a/src/com/android/launcher3/anim/Interpolators.java b/src/com/android/launcher3/anim/Interpolators.java
index 9d73bba..1e7b224 100644
--- a/src/com/android/launcher3/anim/Interpolators.java
+++ b/src/com/android/launcher3/anim/Interpolators.java
@@ -35,6 +35,7 @@
public static final Interpolator LINEAR = new LinearInterpolator();
public static final Interpolator ACCEL = new AccelerateInterpolator();
+ public static final Interpolator ACCEL_0_5 = new AccelerateInterpolator(0.5f);
public static final Interpolator ACCEL_0_75 = new AccelerateInterpolator(0.75f);
public static final Interpolator ACCEL_1_5 = new AccelerateInterpolator(1.5f);
public static final Interpolator ACCEL_2 = new AccelerateInterpolator(2);
@@ -149,11 +150,15 @@
*/
public static Interpolator clampToProgress(Interpolator interpolator, float lowerBound,
float upperBound) {
- if (upperBound <= lowerBound) {
- throw new IllegalArgumentException(String.format(
- "lowerBound (%f) must be less than upperBound (%f)", lowerBound, upperBound));
+ if (upperBound < lowerBound) {
+ throw new IllegalArgumentException(
+ String.format("upperBound (%f) must be greater than lowerBound (%f)",
+ upperBound, lowerBound));
}
return t -> {
+ if (t == lowerBound && t == upperBound) {
+ return t == 0f ? 0 : 1;
+ }
if (t < lowerBound) {
return 0;
}
diff --git a/src/com/android/launcher3/dragndrop/AddItemActivity.java b/src/com/android/launcher3/dragndrop/AddItemActivity.java
index 5ba36f2..5dae5a6 100644
--- a/src/com/android/launcher3/dragndrop/AddItemActivity.java
+++ b/src/com/android/launcher3/dragndrop/AddItemActivity.java
@@ -30,6 +30,7 @@
import android.content.ClipDescription;
import android.content.Intent;
import android.content.pm.LauncherApps.PinItemRequest;
+import android.content.res.Configuration;
import android.graphics.Canvas;
import android.graphics.Point;
import android.graphics.PointF;
@@ -37,7 +38,6 @@
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
-import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.DragShadowBuilder;
@@ -56,6 +56,8 @@
import com.android.launcher3.model.WidgetItem;
import com.android.launcher3.model.data.ItemInfo;
import com.android.launcher3.pm.PinRequestHelper;
+import com.android.launcher3.util.SystemUiController;
+import com.android.launcher3.views.AbstractSlideInView;
import com.android.launcher3.views.BaseDragLayer;
import com.android.launcher3.widget.LauncherAppWidgetHost;
import com.android.launcher3.widget.LauncherAppWidgetProviderInfo;
@@ -69,8 +71,12 @@
import java.util.function.Supplier;
+/**
+ * Activity to show pin widget dialog.
+ */
@TargetApi(Build.VERSION_CODES.O)
-public class AddItemActivity extends BaseActivity implements OnLongClickListener, OnTouchListener {
+public class AddItemActivity extends BaseActivity
+ implements OnLongClickListener, OnTouchListener, AbstractSlideInView.OnCloseListener {
private static final int SHADOW_SIZE = 10;
@@ -82,6 +88,7 @@
private PinItemRequest mRequest;
private LauncherAppState mApp;
private InvariantDeviceProfile mIdp;
+ private BaseDragLayer<AddItemActivity> mDragLayer;
private WidgetCell mWidgetCell;
@@ -111,6 +118,14 @@
mDeviceProfile = mIdp.getDeviceProfile(getApplicationContext());
setContentView(R.layout.add_item_confirmation_activity);
+ // Set flag to allow activity to draw over navigation and status bar.
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
+ WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
+ mDragLayer = findViewById(R.id.add_item_drag_layer);
+ mDragLayer.recreateControllers();
+ mDragLayer.setInsets(mDeviceProfile.getInsets());
+ AbstractSlideInView<AddItemActivity> slideInView = findViewById(R.id.add_item_bottom_sheet);
+ slideInView.addOnCloseListener(this);
mWidgetCell = findViewById(R.id.widget_cell);
if (mRequest.getRequestType() == PinItemRequest.REQUEST_TYPE_SHORTCUT) {
@@ -135,6 +150,8 @@
TextView widgetAppName = findViewById(R.id.widget_appName);
widgetAppName.setText(getApplicationInfo().labelRes);
+
+ setupNavBarColor();
}
@Override
@@ -338,7 +355,20 @@
@Override
public BaseDragLayer getDragLayer() {
- throw new UnsupportedOperationException();
+ return mDragLayer;
+ }
+
+ @Override
+ public void onSlideInViewClosed() {
+ finish();
+ }
+
+ protected void setupNavBarColor() {
+ boolean isSheetDark = (getApplicationContext().getResources().getConfiguration().uiMode
+ & Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_YES;
+ getSystemUiController().updateUiState(
+ SystemUiController.UI_STATE_BASE_WINDOW,
+ isSheetDark ? SystemUiController.FLAG_DARK_NAV : SystemUiController.FLAG_LIGHT_NAV);
}
private void logCommand(StatsLogManager.EventEnum command) {
@@ -346,15 +376,4 @@
.withItemInfo((ItemInfo) mWidgetCell.getWidgetView().getTag())
.log(command);
}
-
- @Override
- public void onAttachedToWindow() {
- super.onAttachedToWindow();
- View view = getWindow().getDecorView();
- WindowManager.LayoutParams layoutParams =
- (WindowManager.LayoutParams) view.getLayoutParams();
- layoutParams.gravity = Gravity.BOTTOM;
- layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
- getWindowManager().updateViewLayout(view, layoutParams);
- }
}
diff --git a/src/com/android/launcher3/dragndrop/AddItemDragLayer.java b/src/com/android/launcher3/dragndrop/AddItemDragLayer.java
new file mode 100644
index 0000000..5b52c3d
--- /dev/null
+++ b/src/com/android/launcher3/dragndrop/AddItemDragLayer.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.launcher3.dragndrop;
+
+import android.content.Context;
+import android.util.AttributeSet;
+
+import com.android.launcher3.util.TouchController;
+import com.android.launcher3.views.BaseDragLayer;
+
+/**
+ * Drag layer for {@link AddItemActivity}.
+ */
+public class AddItemDragLayer extends BaseDragLayer<AddItemActivity> {
+
+ public AddItemDragLayer(Context context, AttributeSet attrs) {
+ this(context, attrs, /*alphaChannelCount= */ 1);
+ }
+
+ public AddItemDragLayer(Context context, AttributeSet attrs, int alphaChannelCount) {
+ super(context, attrs, alphaChannelCount);
+ }
+
+ @Override
+ public void recreateControllers() {
+ mControllers = new TouchController[] {};
+ }
+}
diff --git a/src/com/android/launcher3/graphics/GridCustomizationsProvider.java b/src/com/android/launcher3/graphics/GridCustomizationsProvider.java
index cb42e7a..a03e48d 100644
--- a/src/com/android/launcher3/graphics/GridCustomizationsProvider.java
+++ b/src/com/android/launcher3/graphics/GridCustomizationsProvider.java
@@ -1,5 +1,9 @@
package com.android.launcher3.graphics;
+import static com.android.launcher3.Utilities.getPrefs;
+import static com.android.launcher3.util.Themes.KEY_THEMED_ICONS;
+import static com.android.launcher3.util.Themes.isThemedIconEnabled;
+
import android.content.ContentProvider;
import android.content.ContentValues;
import android.content.pm.PackageManager;
@@ -15,6 +19,7 @@
import com.android.launcher3.InvariantDeviceProfile;
import com.android.launcher3.InvariantDeviceProfile.GridOption;
import com.android.launcher3.R;
+import com.android.launcher3.config.FeatureFlags;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
@@ -55,6 +60,11 @@
private static final String METHOD_GET_PREVIEW = "get_preview";
+ private static final String GET_ICON_THEMED = "/get_icon_themed";
+ private static final String SET_ICON_THEMED = "/set_icon_themed";
+ private static final String ICON_THEMED = "/icon_themed";
+ private static final String BOOLEAN_VALUE = "boolean_value";
+
@Override
public boolean onCreate() {
return true;
@@ -63,22 +73,31 @@
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
- if (!KEY_LIST_OPTIONS.equals(uri.getPath())) {
- return null;
+ switch (uri.getPath()) {
+ case KEY_LIST_OPTIONS: {
+ MatrixCursor cursor = new MatrixCursor(new String[] {
+ KEY_NAME, KEY_ROWS, KEY_COLS, KEY_PREVIEW_COUNT, KEY_IS_DEFAULT});
+ InvariantDeviceProfile idp = InvariantDeviceProfile.INSTANCE.get(getContext());
+ for (GridOption gridOption : parseAllGridOptions()) {
+ cursor.newRow()
+ .add(KEY_NAME, gridOption.name)
+ .add(KEY_ROWS, gridOption.numRows)
+ .add(KEY_COLS, gridOption.numColumns)
+ .add(KEY_PREVIEW_COUNT, 1)
+ .add(KEY_IS_DEFAULT, idp.numColumns == gridOption.numColumns
+ && idp.numRows == gridOption.numRows);
+ }
+ return cursor;
+ }
+ case GET_ICON_THEMED:
+ case ICON_THEMED: {
+ MatrixCursor cursor = new MatrixCursor(new String[] {BOOLEAN_VALUE});
+ cursor.newRow().add(BOOLEAN_VALUE, isThemedIconEnabled(getContext()) ? 1 : 0);
+ return cursor;
+ }
+ default:
+ return null;
}
- MatrixCursor cursor = new MatrixCursor(new String[] {
- KEY_NAME, KEY_ROWS, KEY_COLS, KEY_PREVIEW_COUNT, KEY_IS_DEFAULT});
- InvariantDeviceProfile idp = InvariantDeviceProfile.INSTANCE.get(getContext());
- for (GridOption gridOption : parseAllGridOptions()) {
- cursor.newRow()
- .add(KEY_NAME, gridOption.name)
- .add(KEY_ROWS, gridOption.numRows)
- .add(KEY_COLS, gridOption.numColumns)
- .add(KEY_PREVIEW_COUNT, 1)
- .add(KEY_IS_DEFAULT, idp.numColumns == gridOption.numColumns
- && idp.numRows == gridOption.numRows);
- }
- return cursor;
}
private List<GridOption> parseAllGridOptions() {
@@ -117,25 +136,37 @@
@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
- if (!KEY_DEFAULT_GRID.equals(uri.getPath())) {
- return 0;
- }
+ switch (uri.getPath()) {
+ case KEY_DEFAULT_GRID: {
+ String gridName = values.getAsString(KEY_NAME);
+ // Verify that this is a valid grid option
+ GridOption match = null;
+ for (GridOption option : parseAllGridOptions()) {
+ if (option.name.equals(gridName)) {
+ match = option;
+ break;
+ }
+ }
+ if (match == null) {
+ return 0;
+ }
- String gridName = values.getAsString(KEY_NAME);
- // Verify that this is a valid grid option
- GridOption match = null;
- for (GridOption option : parseAllGridOptions()) {
- if (option.name.equals(gridName)) {
- match = option;
- break;
+ InvariantDeviceProfile.INSTANCE.get(getContext())
+ .setCurrentGrid(getContext(), gridName);
+ return 1;
}
+ case ICON_THEMED:
+ case SET_ICON_THEMED: {
+ if (FeatureFlags.ENABLE_THEMED_ICONS.get()) {
+ getPrefs(getContext()).edit()
+ .putBoolean(KEY_THEMED_ICONS, values.getAsBoolean(BOOLEAN_VALUE))
+ .apply();
+ }
+ return 1;
+ }
+ default:
+ return 0;
}
- if (match == null) {
- return 0;
- }
-
- InvariantDeviceProfile.INSTANCE.get(getContext()).setCurrentGrid(getContext(), gridName);
- return 1;
}
@Override
diff --git a/src/com/android/launcher3/touch/ItemClickHandler.java b/src/com/android/launcher3/touch/ItemClickHandler.java
index ce7dc07..b5dcd3a 100644
--- a/src/com/android/launcher3/touch/ItemClickHandler.java
+++ b/src/com/android/launcher3/touch/ItemClickHandler.java
@@ -27,6 +27,7 @@
import android.app.AlertDialog;
import android.app.PendingIntent;
+import android.content.Context;
import android.content.Intent;
import android.content.IntentSender;
import android.content.pm.LauncherApps;
@@ -194,36 +195,43 @@
}
/**
+ * Handles clicking on a disabled shortcut
+ */
+ public static void handleDisabledItemClicked(WorkspaceItemInfo shortcut, Context context) {
+ final int disabledFlags = shortcut.runtimeStatusFlags
+ & WorkspaceItemInfo.FLAG_DISABLED_MASK;
+ if ((disabledFlags
+ & ~FLAG_DISABLED_SUSPENDED
+ & ~FLAG_DISABLED_QUIET_USER) == 0) {
+ // If the app is only disabled because of the above flags, launch activity anyway.
+ // Framework will tell the user why the app is suspended.
+ } else {
+ if (!TextUtils.isEmpty(shortcut.disabledMessage)) {
+ // Use a message specific to this shortcut, if it has one.
+ Toast.makeText(context, shortcut.disabledMessage, Toast.LENGTH_SHORT).show();
+ return;
+ }
+ // Otherwise just use a generic error message.
+ int error = R.string.activity_not_available;
+ if ((shortcut.runtimeStatusFlags & FLAG_DISABLED_SAFEMODE) != 0) {
+ error = R.string.safemode_shortcut_error;
+ } else if ((shortcut.runtimeStatusFlags & FLAG_DISABLED_BY_PUBLISHER) != 0
+ || (shortcut.runtimeStatusFlags & FLAG_DISABLED_LOCKED_USER) != 0) {
+ error = R.string.shortcut_not_available;
+ }
+ Toast.makeText(context, error, Toast.LENGTH_SHORT).show();
+ }
+ }
+
+ /**
* Event handler for an app shortcut click.
*
* @param v The view that was clicked. Must be a tagged with a {@link WorkspaceItemInfo}.
*/
public static void onClickAppShortcut(View v, WorkspaceItemInfo shortcut, Launcher launcher) {
if (shortcut.isDisabled()) {
- final int disabledFlags = shortcut.runtimeStatusFlags
- & WorkspaceItemInfo.FLAG_DISABLED_MASK;
- if ((disabledFlags &
- ~FLAG_DISABLED_SUSPENDED &
- ~FLAG_DISABLED_QUIET_USER) == 0) {
- // If the app is only disabled because of the above flags, launch activity anyway.
- // Framework will tell the user why the app is suspended.
- } else {
- if (!TextUtils.isEmpty(shortcut.disabledMessage)) {
- // Use a message specific to this shortcut, if it has one.
- Toast.makeText(launcher, shortcut.disabledMessage, Toast.LENGTH_SHORT).show();
- return;
- }
- // Otherwise just use a generic error message.
- int error = R.string.activity_not_available;
- if ((shortcut.runtimeStatusFlags & FLAG_DISABLED_SAFEMODE) != 0) {
- error = R.string.safemode_shortcut_error;
- } else if ((shortcut.runtimeStatusFlags & FLAG_DISABLED_BY_PUBLISHER) != 0 ||
- (shortcut.runtimeStatusFlags & FLAG_DISABLED_LOCKED_USER) != 0) {
- error = R.string.shortcut_not_available;
- }
- Toast.makeText(launcher, error, Toast.LENGTH_SHORT).show();
- return;
- }
+ handleDisabledItemClicked(shortcut, launcher);
+ return;
}
// Check for abandoned promise
diff --git a/src/com/android/launcher3/util/Themes.java b/src/com/android/launcher3/util/Themes.java
index 8243dd4..53a584d 100644
--- a/src/com/android/launcher3/util/Themes.java
+++ b/src/com/android/launcher3/util/Themes.java
@@ -32,6 +32,7 @@
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
+import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.icons.GraphicsUtils;
/**
@@ -40,6 +41,8 @@
@SuppressWarnings("NewApi")
public class Themes {
+ public static final String KEY_THEMED_ICONS = "themed_icons";
+
public static int getActivityThemeRes(Context context) {
final int colorHints;
if (Utilities.ATLEAST_P) {
@@ -67,6 +70,13 @@
}
}
+ /**
+ * Returns true if workspace icon theming is enabled
+ */
+ public static boolean isThemedIconEnabled(Context context) {
+ return FeatureFlags.ENABLE_THEMED_ICONS.get()
+ && Utilities.getPrefs(context).getBoolean(KEY_THEMED_ICONS, false);
+ }
public static String getDefaultBodyFont(Context context) {
TypedArray ta = context.obtainStyledAttributes(android.R.style.TextAppearance_DeviceDefault,
diff --git a/src/com/android/launcher3/views/AbstractSlideInView.java b/src/com/android/launcher3/views/AbstractSlideInView.java
index f79313f..92ca8a1 100644
--- a/src/com/android/launcher3/views/AbstractSlideInView.java
+++ b/src/com/android/launcher3/views/AbstractSlideInView.java
@@ -31,17 +31,21 @@
import android.view.animation.Interpolator;
import com.android.launcher3.AbstractFloatingView;
-import com.android.launcher3.Launcher;
import com.android.launcher3.Utilities;
import com.android.launcher3.anim.Interpolators;
import com.android.launcher3.touch.BaseSwipeDetector;
import com.android.launcher3.touch.SingleAxisSwipeDetector;
+import java.util.ArrayList;
+import java.util.List;
+
/**
- * Extension of AbstractFloatingView with common methods for sliding in from bottom
+ * Extension of {@link AbstractFloatingView} with common methods for sliding in from bottom.
+ *
+ * @param <T> Type of ActivityContext inflating this view.
*/
-public abstract class AbstractSlideInView extends AbstractFloatingView
- implements SingleAxisSwipeDetector.Listener {
+public abstract class AbstractSlideInView<T extends Context & ActivityContext>
+ extends AbstractFloatingView implements SingleAxisSwipeDetector.Listener {
protected static final Property<AbstractSlideInView, Float> TRANSLATION_SHIFT =
new Property<AbstractSlideInView, Float>(Float.class, "translationShift") {
@@ -59,7 +63,8 @@
protected static final float TRANSLATION_SHIFT_CLOSED = 1f;
protected static final float TRANSLATION_SHIFT_OPENED = 0f;
- protected final Launcher mLauncher;
+ protected final T mActivityContext;
+
protected final SingleAxisSwipeDetector mSwipeDetector;
protected final ObjectAnimator mOpenCloseAnimator;
@@ -71,10 +76,11 @@
protected float mTranslationShift = TRANSLATION_SHIFT_CLOSED;
protected boolean mNoIntercept;
+ protected List<OnCloseListener> mOnCloseListeners = new ArrayList<>();
public AbstractSlideInView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
- mLauncher = Launcher.getLauncher(context);
+ mActivityContext = ActivityContext.lookupContext(context);
mScrollInterpolator = Interpolators.SCROLL_CUBIC;
mSwipeDetector = new SingleAxisSwipeDetector(context, this,
@@ -88,8 +94,8 @@
announceAccessibilityChanges();
}
});
- int scrimColor = getScrimColor(mLauncher);
- mColorScrim = scrimColor != -1 ? createColorScrim(mLauncher, scrimColor) : null;
+ int scrimColor = getScrimColor(context);
+ mColorScrim = scrimColor != -1 ? createColorScrim(context, scrimColor) : null;
}
protected void attachToContainer() {
@@ -120,8 +126,8 @@
return false;
}
- int directionsToDetectScroll = mSwipeDetector.isIdleState() ?
- SingleAxisSwipeDetector.DIRECTION_NEGATIVE : 0;
+ int directionsToDetectScroll = mSwipeDetector.isIdleState()
+ ? SingleAxisSwipeDetector.DIRECTION_NEGATIVE : 0;
mSwipeDetector.setDetectableScrollConditions(
directionsToDetectScroll, false);
mSwipeDetector.onTouchEvent(ev);
@@ -176,6 +182,11 @@
}
}
+ /** Registers an {@link OnCloseListener}. */
+ public void addOnCloseListener(OnCloseListener listener) {
+ mOnCloseListeners.add(listener);
+ }
+
protected void handleClose(boolean animate, long defaultDuration) {
if (!mIsOpen) {
return;
@@ -210,10 +221,11 @@
if (mColorScrim != null) {
getPopupContainer().removeView(mColorScrim);
}
+ mOnCloseListeners.forEach(OnCloseListener::onSlideInViewClosed);
}
protected BaseDragLayer getPopupContainer() {
- return mLauncher.getDragLayer();
+ return mActivityContext.getDragLayer();
}
protected View createColorScrim(Context context, int bgColor) {
@@ -227,4 +239,15 @@
return view;
}
+
+ /**
+ * Interface to report that the {@link AbstractSlideInView} has closed.
+ */
+ public interface OnCloseListener {
+
+ /**
+ * Called when {@link AbstractSlideInView} closes.
+ */
+ void onSlideInViewClosed();
+ }
}
diff --git a/src/com/android/launcher3/views/FloatingIconView.java b/src/com/android/launcher3/views/FloatingIconView.java
index 81581fa..f973c2b 100644
--- a/src/com/android/launcher3/views/FloatingIconView.java
+++ b/src/com/android/launcher3/views/FloatingIconView.java
@@ -63,7 +63,7 @@
*/
@TargetApi(Build.VERSION_CODES.Q)
public class FloatingIconView extends FrameLayout implements
- Animator.AnimatorListener, OnGlobalLayoutListener {
+ Animator.AnimatorListener, OnGlobalLayoutListener, FloatingView {
private static final String TAG = FloatingIconView.class.getSimpleName();
@@ -443,6 +443,7 @@
mFastFinishRunnable = runnable;
}
+ @Override
public void fastFinish() {
if (mFastFinishRunnable != null) {
mFastFinishRunnable.run();
@@ -475,9 +476,7 @@
@Override
public void onAnimationRepeat(Animator animator) {}
- /**
- * Offsets and updates the position of this view by {@param y}.
- */
+ @Override
public void setPositionOffsetY(float y) {
mIconOffsetY = y;
onGlobalLayout();
diff --git a/src/com/android/launcher3/views/FloatingView.java b/src/com/android/launcher3/views/FloatingView.java
new file mode 100644
index 0000000..ea4fd15
--- /dev/null
+++ b/src/com/android/launcher3/views/FloatingView.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.launcher3.views;
+
+/**
+ * Shared interface for floating views.
+ */
+public interface FloatingView {
+
+ /**
+ * Offsets and updates the position of this view by {@param y}.
+ */
+ void setPositionOffsetY(float y);
+
+ /**
+ * Fast finish the animation.
+ */
+ void fastFinish();
+}
diff --git a/src/com/android/launcher3/views/WorkEduView.java b/src/com/android/launcher3/views/WorkEduView.java
index c8cf627..6be0c23 100644
--- a/src/com/android/launcher3/views/WorkEduView.java
+++ b/src/com/android/launcher3/views/WorkEduView.java
@@ -42,7 +42,7 @@
/**
* On boarding flow for users right after setting up work profile
*/
-public class WorkEduView extends AbstractSlideInView
+public class WorkEduView extends AbstractSlideInView<Launcher>
implements Insettable, StateListener<LauncherState> {
private static final int DEFAULT_CLOSE_DURATION = 200;
@@ -76,14 +76,15 @@
@Override
protected void handleClose(boolean animate) {
- mLauncher.getSharedPrefs().edit().putInt(KEY_WORK_EDU_STEP, mNextWorkEduStep).apply();
+ mActivityContext.getSharedPrefs().edit()
+ .putInt(KEY_WORK_EDU_STEP, mNextWorkEduStep).apply();
handleClose(true, DEFAULT_CLOSE_DURATION);
}
@Override
protected void onCloseComplete() {
super.onCloseComplete();
- mLauncher.getStateManager().removeStateListener(this);
+ mActivityContext.getStateManager().removeStateListener(this);
}
@Override
@@ -116,13 +117,14 @@
animator.addListener(new AnimationSuccessListener() {
@Override
public void onAnimationSuccess(Animator animator) {
- mContentText.setText(mLauncher.getString(R.string.work_profile_edu_work_apps));
+ mContentText.setText(
+ mActivityContext.getString(R.string.work_profile_edu_work_apps));
ObjectAnimator.ofFloat(mContentText, ALPHA, 1).start();
}
});
animator.start();
} else {
- mContentText.setText(mLauncher.getString(R.string.work_profile_edu_work_apps));
+ mContentText.setText(mActivityContext.getString(R.string.work_profile_edu_work_apps));
}
mNextWorkEduStep = WORK_EDU_WORK_APPS;
mProceedButton.setOnClickListener(v -> handleClose(true));
@@ -142,7 +144,7 @@
private void show() {
attachToContainer();
animateOpen();
- mLauncher.getStateManager().addStateListener(this);
+ mActivityContext.getStateManager().addStateListener(this);
}
@Override
@@ -168,7 +170,7 @@
}
private AllAppsPagedView getAllAppsPagedView() {
- View v = mLauncher.getAppsView().getContentView();
+ View v = mActivityContext.getAppsView().getContentView();
return (v instanceof AllAppsPagedView) ? (AllAppsPagedView) v : null;
}
diff --git a/src/com/android/launcher3/widget/AddItemWidgetsBottomSheet.java b/src/com/android/launcher3/widget/AddItemWidgetsBottomSheet.java
new file mode 100644
index 0000000..9e08303
--- /dev/null
+++ b/src/com/android/launcher3/widget/AddItemWidgetsBottomSheet.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.launcher3.widget;
+
+import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN;
+
+import android.animation.PropertyValuesHolder;
+import android.content.Context;
+import android.content.res.Configuration;
+import android.graphics.Rect;
+import android.util.AttributeSet;
+
+import com.android.launcher3.Insettable;
+import com.android.launcher3.dragndrop.AddItemActivity;
+import com.android.launcher3.views.AbstractSlideInView;
+
+/**
+ * Bottom sheet for the pin widget.
+ */
+public class AddItemWidgetsBottomSheet extends AbstractSlideInView<AddItemActivity>
+ implements Insettable {
+
+ private static final int DEFAULT_CLOSE_DURATION = 200;
+
+ private Rect mInsets;
+ private Configuration mCurrentConfiguration;
+
+ public AddItemWidgetsBottomSheet(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public AddItemWidgetsBottomSheet(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ mContent = this;
+ mInsets = new Rect();
+ mCurrentConfiguration = new Configuration(getResources().getConfiguration());
+ animateOpen();
+ }
+
+ @Override
+ protected void onLayout(boolean changed, int l, int t, int r, int b) {
+ super.onLayout(changed, l, t, r, b);
+ setTranslationShift(mTranslationShift);
+ }
+
+ private void animateOpen() {
+ if (mIsOpen || mOpenCloseAnimator.isRunning()) {
+ return;
+ }
+ mIsOpen = true;
+ mOpenCloseAnimator.setValues(
+ PropertyValuesHolder.ofFloat(TRANSLATION_SHIFT, TRANSLATION_SHIFT_OPENED));
+ mOpenCloseAnimator.setInterpolator(FAST_OUT_SLOW_IN);
+ mOpenCloseAnimator.start();
+ }
+
+ @Override
+ protected void handleClose(boolean animate) {
+ handleClose(animate, DEFAULT_CLOSE_DURATION);
+ }
+
+ @Override
+ protected boolean isOfType(@FloatingViewType int type) {
+ return (type & TYPE_PIN_WIDGET_FROM_EXTERNAL_POPUP) != 0;
+ }
+
+ @Override
+ public void setInsets(Rect insets) {
+ // Extend behind left, right, and bottom insets.
+ int leftInset = insets.left - mInsets.left;
+ int rightInset = insets.right - mInsets.right;
+ int bottomInset = insets.bottom - mInsets.bottom;
+ mInsets.set(insets);
+ setPadding(leftInset, getPaddingTop(), rightInset, bottomInset);
+ }
+
+ @Override
+ protected void onConfigurationChanged(Configuration newConfig) {
+ if (mCurrentConfiguration.orientation != newConfig.orientation) {
+ mInsets.setEmpty();
+ }
+ mCurrentConfiguration.updateFrom(newConfig);
+ }
+}
diff --git a/src/com/android/launcher3/widget/BaseWidgetSheet.java b/src/com/android/launcher3/widget/BaseWidgetSheet.java
index a7ecb07..f7e295e 100644
--- a/src/com/android/launcher3/widget/BaseWidgetSheet.java
+++ b/src/com/android/launcher3/widget/BaseWidgetSheet.java
@@ -28,6 +28,7 @@
import com.android.launcher3.DragSource;
import com.android.launcher3.DropTarget.DragObject;
+import com.android.launcher3.Launcher;
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.dragndrop.DragOptions;
@@ -42,11 +43,10 @@
/**
* Base class for various widgets popup
*/
-public abstract class BaseWidgetSheet extends AbstractSlideInView
+public abstract class BaseWidgetSheet extends AbstractSlideInView<Launcher>
implements OnClickListener, OnLongClickListener, DragSource,
PopupDataProvider.PopupDataChangeListener {
-
/* Touch handling related member variables. */
private Toast mWidgetInstructionToast;
@@ -62,13 +62,13 @@
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
- mLauncher.getPopupDataProvider().setChangeListener(this);
+ mActivityContext.getPopupDataProvider().setChangeListener(this);
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
- mLauncher.getPopupDataProvider().setChangeListener(null);
+ mActivityContext.getPopupDataProvider().setChangeListener(null);
}
@Override
@@ -91,7 +91,7 @@
public boolean onLongClick(View v) {
TestLogging.recordEvent(TestProtocol.SEQUENCE_MAIN, "Widgets.onLongClick");
v.cancelLongPress();
- if (!ItemLongClickListener.canStartDrag(mLauncher)) return false;
+ if (!ItemLongClickListener.canStartDrag(mActivityContext)) return false;
if (v instanceof WidgetCell) {
return beginDraggingWidget((WidgetCell) v);
@@ -160,7 +160,7 @@
}
protected SystemUiController getSystemUiController() {
- return mLauncher.getSystemUiController();
+ return mActivityContext.getSystemUiController();
}
/**
diff --git a/src/com/android/launcher3/widget/WidgetsBottomSheet.java b/src/com/android/launcher3/widget/WidgetsBottomSheet.java
index 995ac47..787a2d1 100644
--- a/src/com/android/launcher3/widget/WidgetsBottomSheet.java
+++ b/src/com/android/launcher3/widget/WidgetsBottomSheet.java
@@ -83,7 +83,7 @@
setWillNotDraw(false);
mInsets = new Rect();
mContent = this;
- DeviceProfile deviceProfile = mLauncher.getDeviceProfile();
+ DeviceProfile deviceProfile = mActivityContext.getDeviceProfile();
// Set the max table height to 2 / 3 of the grid height so that the bottom picker won't
// take over the entire view vertically.
mMaxTableHeight = deviceProfile.inv.numRows * 2 / 3 * deviceProfile.cellHeightPx;
@@ -97,7 +97,7 @@
int paddingPx = 2 * getResources().getDimensionPixelOffset(
R.dimen.widget_cell_horizontal_padding);
int maxHorizontalSpan = findViewById(R.id.widgets_table).getMeasuredWidth()
- / (mLauncher.getDeviceProfile().cellWidthPx + paddingPx);
+ / (mActivityContext.getDeviceProfile().cellWidthPx + paddingPx);
if (mMaxHorizontalSpan != maxHorizontalSpan) {
// Ensure the table layout is showing widgets in the right column after measure.
@@ -134,7 +134,7 @@
@Override
public void onWidgetsBound() {
- List<WidgetItem> widgets = mLauncher.getPopupDataProvider().getWidgetsForPackageUser(
+ List<WidgetItem> widgets = mActivityContext.getPopupDataProvider().getWidgetsForPackageUser(
new PackageUserKey(
mOriginalItemInfo.getTargetComponent().getPackageName(),
mOriginalItemInfo.user));
@@ -148,7 +148,7 @@
row.forEach(widgetItem -> {
WidgetCell widget = addItemCell(tableRow);
widget.setPreviewSize(widgetItem.spanX, widgetItem.spanY);
- widget.applyFromCellItem(widgetItem, LauncherAppState.getInstance(mLauncher)
+ widget.applyFromCellItem(widgetItem, LauncherAppState.getInstance(mActivityContext)
.getWidgetCache());
widget.ensurePreview();
widget.setVisibility(View.VISIBLE);
diff --git a/src/com/android/launcher3/widget/picker/SearchAndRecommendationsScrollController.java b/src/com/android/launcher3/widget/picker/SearchAndRecommendationsScrollController.java
index 317fd03..34346ab 100644
--- a/src/com/android/launcher3/widget/picker/SearchAndRecommendationsScrollController.java
+++ b/src/com/android/launcher3/widget/picker/SearchAndRecommendationsScrollController.java
@@ -101,7 +101,7 @@
mCurrentRecyclerView.setOnContentChangeListener(mOnContentChangeListener);
mViewHolder.mHeaderTitle.setTranslationY(0);
mViewHolder.mRecommendedWidgetsTable.setTranslationY(0);
- mViewHolder.mSearchBar.setTranslationY(0);
+ mViewHolder.mSearchBarContainer.setTranslationY(0);
if (mHasWorkProfile) {
mPrimaryWorkTabsView.setTranslationY(0);
@@ -120,7 +120,7 @@
mCollapsibleHeightForRecommendation =
measureHeightWithVerticalMargins(mViewHolder.mHeaderTitle)
+ measureHeightWithVerticalMargins(mViewHolder.mCollapseHandle)
- + measureHeightWithVerticalMargins((View) mViewHolder.mSearchBar)
+ + measureHeightWithVerticalMargins((View) mViewHolder.mSearchBarContainer)
+ measureHeightWithVerticalMargins(mViewHolder.mRecommendedWidgetsTable);
int topContainerHeight = measureHeightWithVerticalMargins(mViewHolder.mContainer);
@@ -243,7 +243,7 @@
if (mCollapsibleHeightForSearch > 0) {
int searchYDisplacement = Math.max(-recyclerViewYOffset, -mCollapsibleHeightForSearch);
- mViewHolder.mSearchBar.setTranslationY(searchYDisplacement);
+ mViewHolder.mSearchBarContainer.setTranslationY(searchYDisplacement);
}
if (mHasWorkProfile && mCollapsibleHeightForTabs > 0) {
@@ -255,7 +255,7 @@
/** Resets any previous view translation. */
public void reset() {
mViewHolder.mHeaderTitle.setTranslationY(0);
- mViewHolder.mSearchBar.setTranslationY(0);
+ mViewHolder.mSearchBarContainer.setTranslationY(0);
if (mHasWorkProfile) {
mPrimaryWorkTabsView.setTranslationY(0);
}
diff --git a/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java b/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java
index 4d8c1ca..e44acc3 100644
--- a/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java
+++ b/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java
@@ -207,7 +207,7 @@
onWidgetsBound();
mSearchAndRecommendationViewHolder.mSearchBar.initialize(
- mLauncher.getPopupDataProvider(), /* searchModeListener= */ this);
+ mActivityContext.getPopupDataProvider(), /* searchModeListener= */ this);
if (!hasSeenEducationTip()) {
addOnLayoutChangeListener(mLayoutChangeListenerToShowTips);
@@ -271,7 +271,7 @@
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
- mLauncher.getAppWidgetHost().addProviderChangeListener(this);
+ mActivityContext.getAppWidgetHost().addProviderChangeListener(this);
notifyWidgetProvidersChanged();
onRecommendedWidgetsBound();
}
@@ -279,7 +279,7 @@
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
- mLauncher.getAppWidgetHost().removeProviderChangeListener(this);
+ mActivityContext.getAppWidgetHost().removeProviderChangeListener(this);
}
@Override
@@ -327,7 +327,7 @@
}
private void doMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- DeviceProfile deviceProfile = mLauncher.getDeviceProfile();
+ DeviceProfile deviceProfile = mActivityContext.getDeviceProfile();
int widthUsed;
if (mInsets.bottom > 0) {
widthUsed = mInsets.left + mInsets.right;
@@ -350,7 +350,7 @@
int previousMaxSpansPerRow = mMaxSpansPerRow;
mMaxSpansPerRow = getMeasuredWidth()
- / (mLauncher.getDeviceProfile().cellWidthPx + mWidgetCellHorizontalPadding);
+ / (mActivityContext.getDeviceProfile().cellWidthPx + mWidgetCellHorizontalPadding);
if (previousMaxSpansPerRow != mMaxSpansPerRow) {
mAdapters.get(AdapterHolder.PRIMARY).mWidgetsListAdapter.setMaxHorizontalSpansPerRow(
@@ -383,7 +383,7 @@
@Override
public void notifyWidgetProvidersChanged() {
- mLauncher.refreshAndBindWidgetsForPackageUser(null);
+ mActivityContext.refreshAndBindWidgetsForPackageUser(null);
}
@Override
@@ -391,7 +391,8 @@
if (mIsInSearchMode) {
return;
}
- List<WidgetsListBaseEntry> allWidgets = mLauncher.getPopupDataProvider().getAllWidgets();
+ List<WidgetsListBaseEntry> allWidgets =
+ mActivityContext.getPopupDataProvider().getAllWidgets();
AdapterHolder primaryUserAdapterHolder = mAdapters.get(AdapterHolder.PRIMARY);
primaryUserAdapterHolder.mWidgetsListAdapter.setWidgets(allWidgets);
@@ -468,12 +469,12 @@
return;
}
List<WidgetItem> recommendedWidgets =
- mLauncher.getPopupDataProvider().getRecommendedWidgets();
+ mActivityContext.getPopupDataProvider().getRecommendedWidgets();
WidgetsRecommendationTableLayout table =
mSearchAndRecommendationViewHolder.mRecommendedWidgetsTable;
if (recommendedWidgets.size() > 0) {
float maxTableHeight =
- (mLauncher.getDeviceProfile().availableHeightPx - mTabsHeight
+ (mActivityContext.getDeviceProfile().availableHeightPx - mTabsHeight
- getHeaderViewHeight()) * RECOMMENDATION_TABLE_HEIGHT_RATIO;
List<ArrayList<WidgetItem>> recommendedWidgetsInTable =
WidgetsTableUtils.groupWidgetItemsIntoTable(recommendedWidgets,
@@ -614,10 +615,11 @@
}
private void showEducationTipOnView(View view) {
- mLauncher.getSharedPrefs().edit().putBoolean(WIDGETS_EDUCATION_TIP_SEEN, true).apply();
+ mActivityContext.getSharedPrefs().edit()
+ .putBoolean(WIDGETS_EDUCATION_TIP_SEEN, true).apply();
int[] coords = new int[2];
view.getLocationOnScreen(coords);
- ArrowTipView arrowTipView = new ArrowTipView(mLauncher);
+ ArrowTipView arrowTipView = new ArrowTipView(mActivityContext);
arrowTipView.showAtLocation(
getContext().getString(R.string.long_press_widget_to_add),
/* arrowXCoord= */coords[0] + view.getWidth() / 2,
@@ -653,7 +655,7 @@
}
private boolean hasSeenEducationTip() {
- return mLauncher.getSharedPrefs().getBoolean(WIDGETS_EDUCATION_TIP_SEEN, false)
+ return mActivityContext.getSharedPrefs().getBoolean(WIDGETS_EDUCATION_TIP_SEEN, false)
|| Utilities.IS_RUNNING_IN_TEST_HARNESS;
}
@@ -711,6 +713,7 @@
final class SearchAndRecommendationViewHolder {
final SearchAndRecommendationsView mContainer;
final View mCollapseHandle;
+ final View mSearchBarContainer;
final WidgetsSearchBar mSearchBar;
final TextView mHeaderTitle;
final WidgetsRecommendationTableLayout mRecommendedWidgetsTable;
@@ -719,6 +722,7 @@
SearchAndRecommendationsView searchAndRecommendationContainer) {
mContainer = searchAndRecommendationContainer;
mCollapseHandle = mContainer.findViewById(R.id.collapse_handle);
+ mSearchBarContainer = mContainer.findViewById(R.id.search_bar_container);
mSearchBar = mContainer.findViewById(R.id.widgets_search_bar);
mHeaderTitle = mContainer.findViewById(R.id.title);
mRecommendedWidgetsTable = mContainer.findViewById(R.id.recommended_widget_table);
diff --git a/src/com/android/launcher3/workprofile/PersonalWorkSlidingTabStrip.java b/src/com/android/launcher3/workprofile/PersonalWorkSlidingTabStrip.java
index b5db8f4..8039fd1 100644
--- a/src/com/android/launcher3/workprofile/PersonalWorkSlidingTabStrip.java
+++ b/src/com/android/launcher3/workprofile/PersonalWorkSlidingTabStrip.java
@@ -29,14 +29,12 @@
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.pageindicators.PageIndicator;
-import com.android.launcher3.util.Themes;
/**
* Supports two indicator colors, dedicated for personal and work tabs.
*/
public class PersonalWorkSlidingTabStrip extends LinearLayout implements PageIndicator {
private final Paint mSelectedIndicatorPaint;
- private final Paint mDividerPaint;
private int mSelectedIndicatorHeight;
private final int mSelectedIndicatorRadius;
@@ -52,7 +50,6 @@
public PersonalWorkSlidingTabStrip(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
- setOrientation(HORIZONTAL);
setWillNotDraw(false);
mSelectedIndicatorHeight =
@@ -62,13 +59,7 @@
R.dimen.all_apps_header_pill_corner_radius);
mSelectedIndicatorPaint = new Paint();
- mSelectedIndicatorPaint.setColor(
- Themes.getAttrColor(context, android.R.attr.colorAccent));
-
- mDividerPaint = new Paint();
- mDividerPaint.setColor(Themes.getAttrColor(context, android.R.attr.colorControlHighlight));
- mDividerPaint.setStrokeWidth(
- getResources().getDimensionPixelSize(R.dimen.all_apps_divider_height));
+ mSelectedIndicatorPaint.setColor(context.getColor(R.color.all_apps_tab_bg));
mIsRtl = Utilities.isRtl(getResources());
}
@@ -121,8 +112,6 @@
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
-
- float y = getHeight() - mDividerPaint.getStrokeWidth();
canvas.drawRoundRect(mIndicatorLeft, getHeight() - mSelectedIndicatorHeight,
mIndicatorRight, getHeight(), mSelectedIndicatorRadius, mSelectedIndicatorRadius,
mSelectedIndicatorPaint);
diff --git a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
index ca463e6..cbd9480 100644
--- a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
+++ b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
@@ -247,12 +247,26 @@
return mDevice;
}
+ private boolean hasSystemUiObject(String resId) {
+ return mDevice.hasObject(By.res(SYSTEMUI_PACKAGE, resId));
+ }
+
@Before
public void setUp() throws Exception {
mLauncher.onTestStart();
- Assert.assertTrue("Keyguard is visible, which is likely caused by a crash in SysUI",
+ Log.d(TAG, "Before disabling battery defender");
+ mDevice.executeShellCommand("setprop vendor.battery.defender.disable 1");
+ Log.d(TAG, "Before enabling stay awake");
+ mDevice.executeShellCommand("settings put global stay_on_while_plugged_in 3");
+ for (int i = 0; i < 10 && hasSystemUiObject("keyguard_status_view"); ++i) {
+ Log.d(TAG, "Before unlocking the phone");
+ mDevice.executeShellCommand("input keyevent 82");
+ mDevice.waitForIdle();
+ }
+ Assert.assertTrue("Keyguard still visible",
TestHelpers.wait(
Until.gone(By.res(SYSTEMUI_PACKAGE, "keyguard_status_view")), 60000));
+ Log.d(TAG, "Keyguard is not visible");
final String launcherPackageName = mDevice.getLauncherPackageName();
try {
diff --git a/tests/src/com/android/launcher3/util/rule/TestStabilityRule.java b/tests/src/com/android/launcher3/util/rule/TestStabilityRule.java
index 61f5e05..0e27b61 100644
--- a/tests/src/com/android/launcher3/util/rule/TestStabilityRule.java
+++ b/tests/src/com/android/launcher3/util/rule/TestStabilityRule.java
@@ -53,8 +53,6 @@
+ ")$");
public static final int LOCAL = 0x1;
- public static final int UNBUNDLED_PRESUBMIT = 0x2;
- public static final int UNBUNDLED_POSTSUBMIT = 0x4;
public static final int PLATFORM_PRESUBMIT = 0x8;
public static final int PLATFORM_POSTSUBMIT = 0x10;
@@ -136,14 +134,6 @@
platformBuildMatcher.group("postsubmit") != null)) {
Log.d(TAG, "LOCAL RUN");
sRunFlavor = LOCAL;
- } else if (launcherBuildMatcher.group("presubmit") != null
- && platformBuildMatcher.group("postsubmit") != null) {
- Log.d(TAG, "UNBUNDLED PRESUBMIT");
- sRunFlavor = UNBUNDLED_PRESUBMIT;
- } else if (launcherBuildMatcher.group("postsubmit") != null
- && platformBuildMatcher.group("postsubmit") != null) {
- Log.d(TAG, "UNBUNDLED POSTSUBMIT");
- sRunFlavor = UNBUNDLED_POSTSUBMIT;
} else if (launcherBuildMatcher.group("platform") != null
&& platformBuildMatcher.group("presubmit") != null) {
Log.d(TAG, "PLATFORM PRESUBMIT");