diff --git a/Android.mk b/Android.mk
index 239eaf6634..a63ab05c28 100644
--- a/Android.mk
+++ b/Android.mk
@@ -185,7 +185,57 @@ LOCAL_JACK_COVERAGE_INCLUDE_FILTER := com.android.launcher3.*
include $(BUILD_PACKAGE)
+#
+# Build rule for Launcher3 Go app with quickstep for Android Go devices.
+#
+include $(CLEAR_VARS)
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_STATIC_JAVA_LIBRARIES := \
+ android-support-v4 \
+ android-support-v7-recyclerview \
+ android-support-dynamic-animation \
+ libSharedSystemUI
+
+LOCAL_SRC_FILES := \
+ $(call all-java-files-under, src) \
+ $(call all-java-files-under, quickstep/src) \
+ $(call all-java-files-under, go/src_flags) \
+ $(call all-proto-files-under, protos) \
+ $(call all-proto-files-under, proto_overrides)
+
+LOCAL_RESOURCE_DIR := \
+ $(LOCAL_PATH)/quickstep/res \
+ $(LOCAL_PATH)/go/res \
+ $(LOCAL_PATH)/res \
+ prebuilts/sdk/current/support/v7/recyclerview/res \
+
+LOCAL_PROGUARD_ENABLED := disabled
+
+LOCAL_PROTOC_OPTIMIZE_TYPE := nano
+LOCAL_PROTOC_FLAGS := --proto_path=$(LOCAL_PATH)/protos/ --proto_path=$(LOCAL_PATH)/proto_overrides/
+LOCAL_PROTO_JAVA_OUTPUT_PARAMS := enum_style=java
+
+LOCAL_AAPT_FLAGS := \
+ --auto-add-overlay \
+ --extra-packages android.support.v7.recyclerview \
+
+LOCAL_SDK_VERSION := system_current
+LOCAL_MIN_SDK_VERSION := 26
+LOCAL_PACKAGE_NAME := Launcher3QuickStepGo
+LOCAL_PRIVILEGED_MODULE := true
+LOCAL_OVERRIDES_PACKAGES := Home Launcher2 Launcher3
+
+LOCAL_FULL_LIBS_MANIFEST_FILES := \
+ $(LOCAL_PATH)/go/AndroidManifest.xml \
+ $(LOCAL_PATH)/AndroidManifest.xml \
+ $(LOCAL_PATH)/AndroidManifest-common.xml
+
+LOCAL_MANIFEST_FILE := quickstep/AndroidManifest.xml
+LOCAL_JACK_COVERAGE_INCLUDE_FILTER := com.android.launcher3.*
+
+include $(BUILD_PACKAGE)
# ==================================================
diff --git a/proguard.flags b/proguard.flags
index e9f6db462e..555d13e44c 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -120,6 +120,12 @@
*;
}
+# Discovery bounce animation
+-keep class com.android.launcher3.allapps.DiscoveryBounce$VerticalProgressWrapper {
+ public void setProgress(float);
+ public float getProgress();
+}
+
# BUG(70852369): Surpress additional warnings after changing from Proguard to R8
-dontwarn android.app.**
-dontwarn android.view.**
diff --git a/quickstep/res/layout/task.xml b/quickstep/res/layout/task.xml
index 429f3a28ea..f163872161 100644
--- a/quickstep/res/layout/task.xml
+++ b/quickstep/res/layout/task.xml
@@ -13,9 +13,11 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-
\ No newline at end of file
diff --git a/quickstep/res/values-af/strings.xml b/quickstep/res/values-af/strings.xml
index b33456d31c..8ae493fb6e 100644
--- a/quickstep/res/values-af/strings.xml
+++ b/quickstep/res/values-af/strings.xml
@@ -25,6 +25,5 @@
"Geen onlangse items nie"
"Maak toe"
"Vee alles uit"
-
-
+ "Onlangse programme"
diff --git a/quickstep/res/values-am/strings.xml b/quickstep/res/values-am/strings.xml
index 2f303c078b..4ca0c67979 100644
--- a/quickstep/res/values-am/strings.xml
+++ b/quickstep/res/values-am/strings.xml
@@ -25,6 +25,5 @@
"ምንም የቅርብ ጊዜ ንጥሎች የሉም"
"ዝጋ"
"ሁሉንም አጽዳ"
-
-
+ "የቅርብ ጊዜ መተግበሪያዎች"
diff --git a/quickstep/res/values-ar/strings.xml b/quickstep/res/values-ar/strings.xml
index e22bef47e5..c04b618699 100644
--- a/quickstep/res/values-ar/strings.xml
+++ b/quickstep/res/values-ar/strings.xml
@@ -25,6 +25,5 @@
"ليست هناك عناصر تم استخدامها مؤخرًا"
"إغلاق"
"محو الكل"
-
-
+ "التطبيقات التي تمّ استخدامها مؤخرًا"
diff --git a/quickstep/res/values-as/strings.xml b/quickstep/res/values-as/strings.xml
index 7294f142dd..812a24649a 100644
--- a/quickstep/res/values-as/strings.xml
+++ b/quickstep/res/values-as/strings.xml
@@ -25,6 +25,5 @@
"কোনো শেহতীয়া বস্তু নাই"
"বন্ধ কৰক"
"সকলো মচক"
-
-
+ "শেহতীয়া এপসমূহ"
diff --git a/quickstep/res/values-az/strings.xml b/quickstep/res/values-az/strings.xml
index 4c2f8ec717..832ed8c5f6 100644
--- a/quickstep/res/values-az/strings.xml
+++ b/quickstep/res/values-az/strings.xml
@@ -25,6 +25,5 @@
"Son elementlər yoxdur"
"Bağlayın"
"Hamısını silin"
-
-
+ "Son tətbiqlər"
diff --git a/quickstep/res/values-b+sr+Latn/strings.xml b/quickstep/res/values-b+sr+Latn/strings.xml
index bf66aef80e..fc4c8c0d08 100644
--- a/quickstep/res/values-b+sr+Latn/strings.xml
+++ b/quickstep/res/values-b+sr+Latn/strings.xml
@@ -25,6 +25,5 @@
"Nema nedavnih stavki"
"Zatvori"
"Obriši sve"
-
-
+ "Nedavne aplikacije"
diff --git a/quickstep/res/values-be/strings.xml b/quickstep/res/values-be/strings.xml
index 48ed4c579b..c5d03d47a5 100644
--- a/quickstep/res/values-be/strings.xml
+++ b/quickstep/res/values-be/strings.xml
@@ -25,6 +25,5 @@
"Няма новых элементаў"
"Закрыць"
"Ачысціць усё"
-
-
+ "Нядаўнія праграмы"
diff --git a/quickstep/res/values-bg/strings.xml b/quickstep/res/values-bg/strings.xml
index 30308ad0ca..2672b83653 100644
--- a/quickstep/res/values-bg/strings.xml
+++ b/quickstep/res/values-bg/strings.xml
@@ -25,6 +25,5 @@
"Няма скорошни елементи"
"Затваряне"
"Изчистване на всички"
-
-
+ "Скорошни приложения"
diff --git a/quickstep/res/values-bn/strings.xml b/quickstep/res/values-bn/strings.xml
index 80eb639056..0a824c2dd1 100644
--- a/quickstep/res/values-bn/strings.xml
+++ b/quickstep/res/values-bn/strings.xml
@@ -25,6 +25,5 @@
"কোনো সাম্প্রতিক আইটেম নেই"
"বন্ধ করুন"
"সবকিছু খালি করুন"
-
-
+ "সম্প্রতি ব্যবহৃত অ্যাপ"
diff --git a/quickstep/res/values-bs/strings.xml b/quickstep/res/values-bs/strings.xml
index 201f46144b..6bf38eba15 100644
--- a/quickstep/res/values-bs/strings.xml
+++ b/quickstep/res/values-bs/strings.xml
@@ -25,6 +25,5 @@
"Nema nedavnih stavki"
"Zatvaranje"
"Obriši sve"
-
-
+ "Nedavne aplikacije"
diff --git a/quickstep/res/values-ca/strings.xml b/quickstep/res/values-ca/strings.xml
index c6b93e3712..2d51703ae4 100644
--- a/quickstep/res/values-ca/strings.xml
+++ b/quickstep/res/values-ca/strings.xml
@@ -25,6 +25,5 @@
"No hi ha cap element recent"
"Tanca"
"Esborra-ho tot"
-
-
+ "Aplicacions recents"
diff --git a/quickstep/res/values-cs/strings.xml b/quickstep/res/values-cs/strings.xml
index 023244c554..a178df08b4 100644
--- a/quickstep/res/values-cs/strings.xml
+++ b/quickstep/res/values-cs/strings.xml
@@ -25,6 +25,5 @@
"Žádné nedávné položky"
"Zavřít"
"Vymazat vše"
-
-
+ "Poslední aplikace"
diff --git a/quickstep/res/values-da/strings.xml b/quickstep/res/values-da/strings.xml
index 5d1e763732..d0d629f5a1 100644
--- a/quickstep/res/values-da/strings.xml
+++ b/quickstep/res/values-da/strings.xml
@@ -25,6 +25,5 @@
"Ingen nye elementer"
"Luk"
"Ryd alt"
-
-
+ "Seneste apps"
diff --git a/quickstep/res/values-de/strings.xml b/quickstep/res/values-de/strings.xml
index cf2f1940ac..aee8b85b8c 100644
--- a/quickstep/res/values-de/strings.xml
+++ b/quickstep/res/values-de/strings.xml
@@ -25,6 +25,5 @@
"Keine kürzlich verwendeten Elemente"
"Schließen"
"Alle Apps schließen"
-
-
+ "Zuletzt aktive Apps"
diff --git a/quickstep/res/values-el/strings.xml b/quickstep/res/values-el/strings.xml
index 9cf05763d6..7364b82823 100644
--- a/quickstep/res/values-el/strings.xml
+++ b/quickstep/res/values-el/strings.xml
@@ -25,6 +25,5 @@
"Δεν υπάρχουν πρόσφατα στοιχεία"
"Κλείσιμο"
"Διαγραφή όλων"
-
-
+ "Πρόσφατες εφαρμογές"
diff --git a/quickstep/res/values-en-rAU/strings.xml b/quickstep/res/values-en-rAU/strings.xml
index 61d031b5d0..d0dc1e8cb8 100644
--- a/quickstep/res/values-en-rAU/strings.xml
+++ b/quickstep/res/values-en-rAU/strings.xml
@@ -25,4 +25,5 @@
"No recent items"
"Close"
"Clear all"
+ "Recent apps"
diff --git a/quickstep/res/values-en-rGB/strings.xml b/quickstep/res/values-en-rGB/strings.xml
index 61d031b5d0..d0dc1e8cb8 100644
--- a/quickstep/res/values-en-rGB/strings.xml
+++ b/quickstep/res/values-en-rGB/strings.xml
@@ -25,4 +25,5 @@
"No recent items"
"Close"
"Clear all"
+ "Recent apps"
diff --git a/quickstep/res/values-en-rIN/strings.xml b/quickstep/res/values-en-rIN/strings.xml
index 61d031b5d0..d0dc1e8cb8 100644
--- a/quickstep/res/values-en-rIN/strings.xml
+++ b/quickstep/res/values-en-rIN/strings.xml
@@ -25,4 +25,5 @@
"No recent items"
"Close"
"Clear all"
+ "Recent apps"
diff --git a/quickstep/res/values-es-rUS/strings.xml b/quickstep/res/values-es-rUS/strings.xml
index 320892abae..83e9d96aa1 100644
--- a/quickstep/res/values-es-rUS/strings.xml
+++ b/quickstep/res/values-es-rUS/strings.xml
@@ -25,6 +25,5 @@
"No hay elementos recientes"
"Cerrar"
"Borrar todo"
-
-
+ "Apps recientes"
diff --git a/quickstep/res/values-es/strings.xml b/quickstep/res/values-es/strings.xml
index abccec881b..e076df56ef 100644
--- a/quickstep/res/values-es/strings.xml
+++ b/quickstep/res/values-es/strings.xml
@@ -25,6 +25,5 @@
"No hay elementos recientes"
"Cerrar"
"Borrar todo"
-
-
+ "Aplicaciones recientes"
diff --git a/quickstep/res/values-et/strings.xml b/quickstep/res/values-et/strings.xml
index 5143406ce1..85de9c0ab7 100644
--- a/quickstep/res/values-et/strings.xml
+++ b/quickstep/res/values-et/strings.xml
@@ -25,6 +25,5 @@
"Hiljutisi üksusi pole"
"Sule"
"Sule kõik"
-
-
+ "Hiljutised rakendused"
diff --git a/quickstep/res/values-eu/strings.xml b/quickstep/res/values-eu/strings.xml
index 879aa28ceb..60943ccc4f 100644
--- a/quickstep/res/values-eu/strings.xml
+++ b/quickstep/res/values-eu/strings.xml
@@ -25,6 +25,5 @@
"Ez dago azkenaldi honetako ezer"
"Itxi"
"Garbitu guztiak"
-
-
+ "Azken aplikazioak"
diff --git a/quickstep/res/values-fa/strings.xml b/quickstep/res/values-fa/strings.xml
index b76e9a5656..4a30daa30c 100644
--- a/quickstep/res/values-fa/strings.xml
+++ b/quickstep/res/values-fa/strings.xml
@@ -25,6 +25,5 @@
"بدون موارد اخیر"
"بستن"
"پاک کردن همه"
-
-
+ "برنامههای اخیر"
diff --git a/quickstep/res/values-fi/strings.xml b/quickstep/res/values-fi/strings.xml
index bbfaa11e10..8f4135001f 100644
--- a/quickstep/res/values-fi/strings.xml
+++ b/quickstep/res/values-fi/strings.xml
@@ -25,6 +25,5 @@
"Ei viimeaikaisia kohteita"
"Sulje"
"Poista kaikki"
-
-
+ "Viimeisimmät sovellukset"
diff --git a/quickstep/res/values-fr-rCA/strings.xml b/quickstep/res/values-fr-rCA/strings.xml
index 7cad9fca95..7177996415 100644
--- a/quickstep/res/values-fr-rCA/strings.xml
+++ b/quickstep/res/values-fr-rCA/strings.xml
@@ -25,6 +25,5 @@
"Aucun élément récent"
"Fermer"
"Tout effacer"
-
-
+ "Applications récentes"
diff --git a/quickstep/res/values-fr/strings.xml b/quickstep/res/values-fr/strings.xml
index 078ab2b5cd..0deb00bc35 100644
--- a/quickstep/res/values-fr/strings.xml
+++ b/quickstep/res/values-fr/strings.xml
@@ -25,6 +25,5 @@
"Aucun élément récent"
"Fermer"
"Tout effacer"
-
-
+ "Applications récentes"
diff --git a/quickstep/res/values-gl/strings.xml b/quickstep/res/values-gl/strings.xml
index 549d804771..8c217eb7bb 100644
--- a/quickstep/res/values-gl/strings.xml
+++ b/quickstep/res/values-gl/strings.xml
@@ -25,6 +25,5 @@
"Non hai elementos recentes"
"Pecha a aplicación"
"Borrar todo"
-
-
+ "Aplicacións recentes"
diff --git a/quickstep/res/values-gu/strings.xml b/quickstep/res/values-gu/strings.xml
index 27235f2bcf..8b9a538ed1 100644
--- a/quickstep/res/values-gu/strings.xml
+++ b/quickstep/res/values-gu/strings.xml
@@ -25,6 +25,5 @@
"તાજેતરની કોઈ આઇટમ નથી"
"બંધ કરો"
"બધું સાફ કરો"
-
-
+ "તાજેતરની ઍપ"
diff --git a/quickstep/res/values-hi/strings.xml b/quickstep/res/values-hi/strings.xml
index 46b404f529..83c31e78da 100644
--- a/quickstep/res/values-hi/strings.xml
+++ b/quickstep/res/values-hi/strings.xml
@@ -25,6 +25,5 @@
"हाल ही में इस्तेमाल किया गया कोई ऐप्लिकेशन नहीं है"
"बंद करें"
"सभी ऐप्लिकेशन बंद करें"
-
-
+ "हाल ही में इस्तेमाल किए गए एेप्लिकेशन"
diff --git a/quickstep/res/values-hr/strings.xml b/quickstep/res/values-hr/strings.xml
index b8682608f2..baa8d85acb 100644
--- a/quickstep/res/values-hr/strings.xml
+++ b/quickstep/res/values-hr/strings.xml
@@ -25,6 +25,5 @@
"Nema nedavnih stavki"
"Zatvori"
"Izbriši sve"
-
-
+ "Nedavne aplikacije"
diff --git a/quickstep/res/values-hu/strings.xml b/quickstep/res/values-hu/strings.xml
index 60cd6a1ddc..d971374774 100644
--- a/quickstep/res/values-hu/strings.xml
+++ b/quickstep/res/values-hu/strings.xml
@@ -25,6 +25,5 @@
"Nincsenek mostanában használt elemek"
"Bezárás"
"Összes törlése"
-
-
+ "Legutóbbi alkalmazások"
diff --git a/quickstep/res/values-hy/strings.xml b/quickstep/res/values-hy/strings.xml
index c908263b6d..b4b9b98095 100644
--- a/quickstep/res/values-hy/strings.xml
+++ b/quickstep/res/values-hy/strings.xml
@@ -25,6 +25,5 @@
"Վերջին տարրեր չկան"
"Փակել"
"Փակել բոլորը"
-
-
+ "Վերջին օգտագործած հավելվածները"
diff --git a/quickstep/res/values-in/strings.xml b/quickstep/res/values-in/strings.xml
index ff6267c9b3..787c14338e 100644
--- a/quickstep/res/values-in/strings.xml
+++ b/quickstep/res/values-in/strings.xml
@@ -25,6 +25,5 @@
"Tidak ada item yang baru dibuka"
"Tutup"
"Hapus semua"
-
-
+ "Aplikasi baru-baru ini"
diff --git a/quickstep/res/values-is/strings.xml b/quickstep/res/values-is/strings.xml
index bbb460729c..1aface0c90 100644
--- a/quickstep/res/values-is/strings.xml
+++ b/quickstep/res/values-is/strings.xml
@@ -25,6 +25,5 @@
"Engin nýleg atriði"
"Loka"
"Hreinsa allt"
-
-
+ "Nýleg forrit"
diff --git a/quickstep/res/values-it/strings.xml b/quickstep/res/values-it/strings.xml
index 6175a4720c..192ec44c72 100644
--- a/quickstep/res/values-it/strings.xml
+++ b/quickstep/res/values-it/strings.xml
@@ -25,6 +25,5 @@
"Nessun elemento recente"
"Chiudi"
"Cancella tutto"
-
-
+ "App recenti"
diff --git a/quickstep/res/values-iw/strings.xml b/quickstep/res/values-iw/strings.xml
index 9afb842e32..64c35ec116 100644
--- a/quickstep/res/values-iw/strings.xml
+++ b/quickstep/res/values-iw/strings.xml
@@ -25,6 +25,5 @@
"אין פריטים אחרונים"
"סגירה"
"ניקוי הכול"
-
-
+ "אפליקציות אחרונות"
diff --git a/quickstep/res/values-ja/strings.xml b/quickstep/res/values-ja/strings.xml
index e478d4acc1..558112cded 100644
--- a/quickstep/res/values-ja/strings.xml
+++ b/quickstep/res/values-ja/strings.xml
@@ -25,6 +25,5 @@
"最近のアイテムはありません"
"閉じる"
"すべてクリア"
-
-
+ "最近使ったアプリ"
diff --git a/quickstep/res/values-ka/strings.xml b/quickstep/res/values-ka/strings.xml
index 3d9726c790..5f061debb8 100644
--- a/quickstep/res/values-ka/strings.xml
+++ b/quickstep/res/values-ka/strings.xml
@@ -25,6 +25,5 @@
"ბოლოს გამოყენებული ერთეულები არ არის"
"დახურვა"
"ყველას გასუფთავება"
-
-
+ "ბოლოდროინდელი აპები"
diff --git a/quickstep/res/values-kk/strings.xml b/quickstep/res/values-kk/strings.xml
index 80cab46bbd..3e72130f1f 100644
--- a/quickstep/res/values-kk/strings.xml
+++ b/quickstep/res/values-kk/strings.xml
@@ -25,6 +25,5 @@
"Соңғы элементтер жоқ"
"Жабу"
"Барлығын өшіру"
-
-
+ "Соңғы пайдаланылған қолданбалар"
diff --git a/quickstep/res/values-km/strings.xml b/quickstep/res/values-km/strings.xml
index 36a9ad98db..6ae948258b 100644
--- a/quickstep/res/values-km/strings.xml
+++ b/quickstep/res/values-km/strings.xml
@@ -25,6 +25,5 @@
"មិនមានធាតុថ្មីៗទេ"
"បិទ"
"សម្អាតទាំងអស់"
-
-
+ "កម្មវិធីថ្មីៗ"
diff --git a/quickstep/res/values-kn/strings.xml b/quickstep/res/values-kn/strings.xml
index 314638cab2..591418b9c2 100644
--- a/quickstep/res/values-kn/strings.xml
+++ b/quickstep/res/values-kn/strings.xml
@@ -25,6 +25,5 @@
"ಯಾವುದೇ ಇತ್ತೀಚಿನ ಐಟಂಗಳಿಲ್ಲ"
"ಮುಚ್ಚಿ"
"ಎಲ್ಲವನ್ನೂ ತೆರವುಗೊಳಿಸಿ"
-
-
+ "ಇತ್ತೀಚಿನ ಅಪ್ಲಿಕೇಶನ್ಗಳು"
diff --git a/quickstep/res/values-ko/strings.xml b/quickstep/res/values-ko/strings.xml
index 557ee4a01c..5b1ecbd2e7 100644
--- a/quickstep/res/values-ko/strings.xml
+++ b/quickstep/res/values-ko/strings.xml
@@ -25,6 +25,5 @@
"최근 항목이 없습니다."
"닫기"
"모두 삭제"
-
-
+ "최근 앱"
diff --git a/quickstep/res/values-ky/strings.xml b/quickstep/res/values-ky/strings.xml
index 1575af6506..9f84037f7b 100644
--- a/quickstep/res/values-ky/strings.xml
+++ b/quickstep/res/values-ky/strings.xml
@@ -25,6 +25,5 @@
"Акыркы колдонмолор жок"
"Жабуу"
"Баарын тазалоо"
-
-
+ "Акыркы колдонмолор"
diff --git a/quickstep/res/values-lo/strings.xml b/quickstep/res/values-lo/strings.xml
index 3e332be0b2..ed1cb6e849 100644
--- a/quickstep/res/values-lo/strings.xml
+++ b/quickstep/res/values-lo/strings.xml
@@ -25,6 +25,5 @@
"ບໍ່ມີລາຍການຫຼ້າສຸດ"
"ປິດ"
"ລຶບລ້າງທັງໝົດ"
-
-
+ "ແອັບຫຼ້າສຸດ"
diff --git a/quickstep/res/values-lt/strings.xml b/quickstep/res/values-lt/strings.xml
index 4dd2680230..c16fc56bbd 100644
--- a/quickstep/res/values-lt/strings.xml
+++ b/quickstep/res/values-lt/strings.xml
@@ -25,6 +25,5 @@
"Nėra jokių naujausių elementų"
"Uždaryti"
"Išvalyti viską"
-
-
+ "Naujausios programos"
diff --git a/quickstep/res/values-lv/strings.xml b/quickstep/res/values-lv/strings.xml
index 7eb385fa8d..2dee41c43a 100644
--- a/quickstep/res/values-lv/strings.xml
+++ b/quickstep/res/values-lv/strings.xml
@@ -25,6 +25,5 @@
"Nav nesenu vienumu."
"Aizvērt"
"Notīrīt visu"
-
-
+ "Pēdējās izmantotās lietotnes"
diff --git a/quickstep/res/values-mk/strings.xml b/quickstep/res/values-mk/strings.xml
index 9e959d3170..ff16cea8cb 100644
--- a/quickstep/res/values-mk/strings.xml
+++ b/quickstep/res/values-mk/strings.xml
@@ -25,6 +25,5 @@
"Нема неодамнешни ставки"
"Затвори"
"Исчисти ги сите"
-
-
+ "Неодамнешни апликации"
diff --git a/quickstep/res/values-ml/strings.xml b/quickstep/res/values-ml/strings.xml
index 1d7b927a9c..624aded2a3 100644
--- a/quickstep/res/values-ml/strings.xml
+++ b/quickstep/res/values-ml/strings.xml
@@ -25,6 +25,5 @@
"സമീപകാല ഇനങ്ങൾ ഒന്നുമില്ല"
"അവസാനിപ്പിക്കുക"
"എല്ലാം മായ്ക്കുക"
-
-
+ "സമീപകാല ആപ്പുകൾ"
diff --git a/quickstep/res/values-mn/strings.xml b/quickstep/res/values-mn/strings.xml
index 5031388f96..f9021252bd 100644
--- a/quickstep/res/values-mn/strings.xml
+++ b/quickstep/res/values-mn/strings.xml
@@ -25,6 +25,5 @@
"Сүүлийн үеийн зүйл алга"
"Хаах"
"Бүгдийг устгах"
-
-
+ "Саяхны аппууд"
diff --git a/quickstep/res/values-mr/strings.xml b/quickstep/res/values-mr/strings.xml
index 939963e46e..7a669dd647 100644
--- a/quickstep/res/values-mr/strings.xml
+++ b/quickstep/res/values-mr/strings.xml
@@ -25,6 +25,5 @@
"कोणतेही अलीकडील आयटम नाहीत"
"बंद"
"सर्व साफ करा"
-
-
+ "अलीकडील अॅप्स"
diff --git a/quickstep/res/values-ms/strings.xml b/quickstep/res/values-ms/strings.xml
index 0e93bf6c1a..699586373c 100644
--- a/quickstep/res/values-ms/strings.xml
+++ b/quickstep/res/values-ms/strings.xml
@@ -25,6 +25,5 @@
"Tiada item terbaharu"
"Tutup"
"Kosongkan semua"
-
-
+ "Apl terbaharu"
diff --git a/quickstep/res/values-my/strings.xml b/quickstep/res/values-my/strings.xml
index ebffc3c3b4..ae6dc7d0a0 100644
--- a/quickstep/res/values-my/strings.xml
+++ b/quickstep/res/values-my/strings.xml
@@ -25,6 +25,5 @@
"မကြာမီကဖွင့်ထားသည်များ မရှိပါ"
"ပိတ်ရန်"
"အားလုံးကို ရှင်းရန်"
-
-
+ "လတ်တလောသုံး အက်ပ်များ"
diff --git a/quickstep/res/values-nb/strings.xml b/quickstep/res/values-nb/strings.xml
index 97870b15cc..cb8ee10f8e 100644
--- a/quickstep/res/values-nb/strings.xml
+++ b/quickstep/res/values-nb/strings.xml
@@ -25,6 +25,5 @@
"Ingen nylige elementer"
"Lukk"
"Fjern alt"
-
-
+ "Nylige apper"
diff --git a/quickstep/res/values-ne/strings.xml b/quickstep/res/values-ne/strings.xml
index c9a6c6b894..4efae7b080 100644
--- a/quickstep/res/values-ne/strings.xml
+++ b/quickstep/res/values-ne/strings.xml
@@ -25,6 +25,5 @@
"हालसालैको कुनै पनि वस्तु छैन"
"बन्द गर्नुहोस्"
"सबै खाली गर्नुहोस्"
-
-
+ "हालसालैका अनुप्रयोगहरू"
diff --git a/quickstep/res/values-nl/strings.xml b/quickstep/res/values-nl/strings.xml
index e3acf0dc36..8ef2a5d5ce 100644
--- a/quickstep/res/values-nl/strings.xml
+++ b/quickstep/res/values-nl/strings.xml
@@ -25,6 +25,5 @@
"Geen recente items"
"Sluiten"
"Alles wissen"
-
-
+ "Recente apps"
diff --git a/quickstep/res/values-or/strings.xml b/quickstep/res/values-or/strings.xml
index 5e5e420ff6..6895ef5f5f 100644
--- a/quickstep/res/values-or/strings.xml
+++ b/quickstep/res/values-or/strings.xml
@@ -25,6 +25,5 @@
"କୌଣସି ସାମ୍ପ୍ରତିକ ଆଇଟମ୍ ନାହିଁ"
"ବନ୍ଦ କରନ୍ତୁ"
"ସବୁ ଖାଲି କରନ୍ତୁ"
-
-
+ "ସାମ୍ପ୍ରତିକ ଆପ୍"
diff --git a/quickstep/res/values-pa/strings.xml b/quickstep/res/values-pa/strings.xml
index fec9f03fbe..4159c30b3f 100644
--- a/quickstep/res/values-pa/strings.xml
+++ b/quickstep/res/values-pa/strings.xml
@@ -25,6 +25,5 @@
"ਕੋਈ ਹਾਲੀਆ ਆਈਟਮਾਂ ਨਹੀਂ"
"ਬੰਦ ਕਰੋ"
"ਸਭ ਕਲੀਅਰ ਕਰੋ"
-
-
+ "ਹਾਲੀਆ ਐਪਾਂ"
diff --git a/quickstep/res/values-pl/strings.xml b/quickstep/res/values-pl/strings.xml
index 54196e8465..cf15abd171 100644
--- a/quickstep/res/values-pl/strings.xml
+++ b/quickstep/res/values-pl/strings.xml
@@ -25,6 +25,5 @@
"Brak ostatnich elementów"
"Zamknij"
"Wyczyść wszystko"
-
-
+ "Ostatnie aplikacje"
diff --git a/quickstep/res/values-pt-rPT/strings.xml b/quickstep/res/values-pt-rPT/strings.xml
index afc6295373..36c7e3c455 100644
--- a/quickstep/res/values-pt-rPT/strings.xml
+++ b/quickstep/res/values-pt-rPT/strings.xml
@@ -25,6 +25,5 @@
"Nenhum item recente"
"Fechar"
"Limpar tudo"
-
-
+ "Aplicações recentes"
diff --git a/quickstep/res/values-pt/strings.xml b/quickstep/res/values-pt/strings.xml
index 9e43cd7c0a..41f53f0e98 100644
--- a/quickstep/res/values-pt/strings.xml
+++ b/quickstep/res/values-pt/strings.xml
@@ -25,6 +25,5 @@
"Nenhum item recente"
"Fechar"
"Limpar tudo"
-
-
+ "Apps recentes"
diff --git a/quickstep/res/values-ro/strings.xml b/quickstep/res/values-ro/strings.xml
index a8889d4b4a..032d886fb1 100644
--- a/quickstep/res/values-ro/strings.xml
+++ b/quickstep/res/values-ro/strings.xml
@@ -25,4 +25,5 @@
"Niciun element recent"
"Închideți"
"Ștergeți tot"
+ "Aplicații recente"
diff --git a/quickstep/res/values-ru/strings.xml b/quickstep/res/values-ru/strings.xml
index 832aa0aa19..6a218fc6b8 100644
--- a/quickstep/res/values-ru/strings.xml
+++ b/quickstep/res/values-ru/strings.xml
@@ -25,6 +25,5 @@
"Здесь пока ничего нет."
"Закрыть"
"Очистить все"
-
-
+ "Недавние приложения"
diff --git a/quickstep/res/values-si/strings.xml b/quickstep/res/values-si/strings.xml
index 61bb8ba81c..c01211ac51 100644
--- a/quickstep/res/values-si/strings.xml
+++ b/quickstep/res/values-si/strings.xml
@@ -25,4 +25,5 @@
"මෑත අයිතම නැත"
"වසන්න"
"සියල්ල හිස් කරන්න"
+ "මෑත යෙදුම්"
diff --git a/quickstep/res/values-sk/strings.xml b/quickstep/res/values-sk/strings.xml
index da4585bf1d..2cd394208e 100644
--- a/quickstep/res/values-sk/strings.xml
+++ b/quickstep/res/values-sk/strings.xml
@@ -25,6 +25,5 @@
"Žiadne nedávne položky"
"Zavrieť"
"Vymazať všetko"
-
-
+ "Nedávne aplikácie"
diff --git a/quickstep/res/values-sl/strings.xml b/quickstep/res/values-sl/strings.xml
index 6a25e9d834..06eb95d863 100644
--- a/quickstep/res/values-sl/strings.xml
+++ b/quickstep/res/values-sl/strings.xml
@@ -25,6 +25,5 @@
"Ni nedavnih elementov"
"Zapri"
"Počisti vse"
-
-
+ "Nedavne aplikacije"
diff --git a/quickstep/res/values-sq/strings.xml b/quickstep/res/values-sq/strings.xml
index 521b8c75cc..00231e1340 100644
--- a/quickstep/res/values-sq/strings.xml
+++ b/quickstep/res/values-sq/strings.xml
@@ -25,6 +25,5 @@
"Nuk ka asnjë artikull të fundit"
"Mbyll"
"Pastroji të gjitha"
-
-
+ "Aplikacionet e fundit"
diff --git a/quickstep/res/values-sr/strings.xml b/quickstep/res/values-sr/strings.xml
index 054cda5945..0077ee244c 100644
--- a/quickstep/res/values-sr/strings.xml
+++ b/quickstep/res/values-sr/strings.xml
@@ -25,6 +25,5 @@
"Нема недавних ставки"
"Затвори"
"Обриши све"
-
-
+ "Недавне апликације"
diff --git a/quickstep/res/values-sv/strings.xml b/quickstep/res/values-sv/strings.xml
index 1a0ecc13e1..f05d79f2af 100644
--- a/quickstep/res/values-sv/strings.xml
+++ b/quickstep/res/values-sv/strings.xml
@@ -25,6 +25,5 @@
"Listan med de senaste åtgärderna är tom"
"Stäng"
"Rensa alla"
-
-
+ "Senaste apparna"
diff --git a/quickstep/res/values-sw/strings.xml b/quickstep/res/values-sw/strings.xml
index be26e8bc66..e6ce953dbd 100644
--- a/quickstep/res/values-sw/strings.xml
+++ b/quickstep/res/values-sw/strings.xml
@@ -25,6 +25,5 @@
"Hakuna vipengee vya hivi karibuni"
"Funga"
"Ondoa zote"
-
-
+ "Programu za hivi karibuni"
diff --git a/quickstep/res/values-ta/strings.xml b/quickstep/res/values-ta/strings.xml
index 886b017a8f..19518e1810 100644
--- a/quickstep/res/values-ta/strings.xml
+++ b/quickstep/res/values-ta/strings.xml
@@ -25,6 +25,5 @@
"சமீபத்தியவை எதுவுமில்லை"
"மூடும்"
"எல்லாம் அழி"
-
-
+ "சமீபத்திய ஆப்ஸ்"
diff --git a/quickstep/res/values-te/strings.xml b/quickstep/res/values-te/strings.xml
index a0a818cf61..4c0e5ac563 100644
--- a/quickstep/res/values-te/strings.xml
+++ b/quickstep/res/values-te/strings.xml
@@ -25,6 +25,5 @@
"ఇటీవలి అంశాలు ఏవీ లేవు"
"మూసివేయండి"
"అన్నీ తీసివేయండి"
-
-
+ "ఇటీవలి యాప్లు"
diff --git a/quickstep/res/values-th/strings.xml b/quickstep/res/values-th/strings.xml
index 5a162b729d..8dfda248c3 100644
--- a/quickstep/res/values-th/strings.xml
+++ b/quickstep/res/values-th/strings.xml
@@ -25,6 +25,5 @@
"ไม่มีรายการล่าสุด"
"ปิด"
"ล้างทั้งหมด"
-
-
+ "แอปล่าสุด"
diff --git a/quickstep/res/values-tl/strings.xml b/quickstep/res/values-tl/strings.xml
index af7ff97fa7..ab3cac9dc2 100644
--- a/quickstep/res/values-tl/strings.xml
+++ b/quickstep/res/values-tl/strings.xml
@@ -25,6 +25,5 @@
"Walang kamakailang item"
"Isara"
"I-clear lahat"
-
-
+ "Mga kamakailang app"
diff --git a/quickstep/res/values-tr/strings.xml b/quickstep/res/values-tr/strings.xml
index 760a61ffd5..9693413034 100644
--- a/quickstep/res/values-tr/strings.xml
+++ b/quickstep/res/values-tr/strings.xml
@@ -25,6 +25,5 @@
"Yeni öğe yok"
"Kapat"
"Tümünü temizle"
-
-
+ "Son uygulamalar"
diff --git a/quickstep/res/values-uk/strings.xml b/quickstep/res/values-uk/strings.xml
index 41babaa879..2afcb31865 100644
--- a/quickstep/res/values-uk/strings.xml
+++ b/quickstep/res/values-uk/strings.xml
@@ -25,6 +25,5 @@
"Немає нещодавніх додатків"
"Закрити"
"Очистити все"
-
-
+ "Нещодавні додатки"
diff --git a/quickstep/res/values-ur/strings.xml b/quickstep/res/values-ur/strings.xml
index 9dd7b8d33c..f493a2f64d 100644
--- a/quickstep/res/values-ur/strings.xml
+++ b/quickstep/res/values-ur/strings.xml
@@ -25,6 +25,5 @@
"کوئی حالیہ آئٹم نہیں"
"بند کریں"
"سبھی کو صاف کریں"
-
-
+ "حالیہ ایپس"
diff --git a/quickstep/res/values-uz/strings.xml b/quickstep/res/values-uz/strings.xml
index c78f000ca5..4911925984 100644
--- a/quickstep/res/values-uz/strings.xml
+++ b/quickstep/res/values-uz/strings.xml
@@ -25,6 +25,5 @@
"Yaqinda ishlatilgan ilovalar yo‘q"
"Yopish"
"Hammasini tozalash"
-
-
+ "Yaqinda ishlatilgan ilovalar"
diff --git a/quickstep/res/values-vi/strings.xml b/quickstep/res/values-vi/strings.xml
index 4b1d1c0257..406faf5f8c 100644
--- a/quickstep/res/values-vi/strings.xml
+++ b/quickstep/res/values-vi/strings.xml
@@ -25,6 +25,5 @@
"Không có mục gần đây nào"
"Đóng"
"Xóa tất cả"
-
-
+ "Ứng dụng gần đây"
diff --git a/quickstep/res/values-zh-rCN/strings.xml b/quickstep/res/values-zh-rCN/strings.xml
index 17cf6c31a1..71ac114979 100644
--- a/quickstep/res/values-zh-rCN/strings.xml
+++ b/quickstep/res/values-zh-rCN/strings.xml
@@ -25,6 +25,5 @@
"近期没有任何内容"
"关闭"
"全部清除"
-
-
+ "最近用过的应用"
diff --git a/quickstep/res/values-zh-rHK/strings.xml b/quickstep/res/values-zh-rHK/strings.xml
index 1203cf01fc..ab29a91bfe 100644
--- a/quickstep/res/values-zh-rHK/strings.xml
+++ b/quickstep/res/values-zh-rHK/strings.xml
@@ -25,6 +25,5 @@
"最近沒有任何項目"
"關閉"
"全部清除"
-
-
+ "最近使用的應用程式"
diff --git a/quickstep/res/values-zh-rTW/strings.xml b/quickstep/res/values-zh-rTW/strings.xml
index ed708b4950..1a9448c59f 100644
--- a/quickstep/res/values-zh-rTW/strings.xml
+++ b/quickstep/res/values-zh-rTW/strings.xml
@@ -25,6 +25,5 @@
"最近沒有任何項目"
"關閉"
"全部清除"
-
-
+ "最近使用的應用程式"
diff --git a/quickstep/res/values-zu/strings.xml b/quickstep/res/values-zu/strings.xml
index 1aa34b6b6d..3d4f37250a 100644
--- a/quickstep/res/values-zu/strings.xml
+++ b/quickstep/res/values-zu/strings.xml
@@ -25,6 +25,5 @@
"Azikho izinto zakamuva"
"Vala"
"Sula konke"
-
-
+ "Izinhlelo zokusebenza zakamuva"
diff --git a/quickstep/res/values/dimens.xml b/quickstep/res/values/dimens.xml
index ad5f767be0..ed18bf5e3a 100644
--- a/quickstep/res/values/dimens.xml
+++ b/quickstep/res/values/dimens.xml
@@ -21,6 +21,7 @@
12dp
2dp
10dp
+ 20dp
diff --git a/quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java b/quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java
index 2e31ef239e..6703bb546e 100644
--- a/quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java
+++ b/quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java
@@ -184,7 +184,8 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag
// before our internal listeners.
mLauncher.getStateManager().setCurrentAnimation(anim);
- anim.play(getIconAnimator(v));
+ Rect windowTargetBounds = getWindowTargetBounds(targetCompats);
+ anim.play(getIconAnimator(v, windowTargetBounds));
if (launcherClosing) {
Pair launcherContentAnimator =
getLauncherContentAnimator(true /* isAppOpening */);
@@ -196,7 +197,7 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag
}
});
}
- anim.play(getOpeningWindowAnimators(v, targetCompats));
+ anim.play(getOpeningWindowAnimators(v, targetCompats, windowTargetBounds));
}
if (launcherClosing) {
@@ -213,7 +214,26 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag
return ActivityOptionsCompat.makeRemoteAnimation(new RemoteAnimationAdapterCompat(
runner, duration, statusBarTransitionDelay));
}
- return getDefaultActivityLaunchOptions(launcher, v);
+ return super.getActivityLaunchOptions(launcher, v);
+ }
+
+ /**
+ * Return the window bounds of the opening target.
+ * In multiwindow mode, we need to get the final size of the opening app window target to help
+ * figure out where the floating view should animate to.
+ */
+ private Rect getWindowTargetBounds(RemoteAnimationTargetCompat[] targets) {
+ Rect bounds = new Rect(0, 0, mDeviceProfile.widthPx, mDeviceProfile.heightPx);
+ if (mLauncher.isInMultiWindowModeCompat()) {
+ for (RemoteAnimationTargetCompat target : targets) {
+ if (target.mode == MODE_OPENING) {
+ bounds.set(target.sourceContainerBounds);
+ bounds.offsetTo(target.position.x, target.position.y);
+ return bounds;
+ }
+ }
+ }
+ return bounds;
}
public void setRemoteAnimationProvider(RemoteAnimationProvider animationProvider) {
@@ -382,7 +402,7 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag
/**
* @return Animator that controls the icon used to launch the target.
*/
- private AnimatorSet getIconAnimator(View v) {
+ private AnimatorSet getIconAnimator(View v, Rect windowTargetBounds) {
final boolean isBubbleTextView = v instanceof BubbleTextView;
mFloatingView = new View(mLauncher);
if (isBubbleTextView && v.getTag() instanceof ItemInfoWithIcon ) {
@@ -418,7 +438,7 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag
viewLocationLeft += rect.left;
viewLocationTop += rect.top;
int viewLocationStart = mIsRtl
- ? mDeviceProfile.widthPx - rect.right
+ ? windowTargetBounds.width() - rect.right
: viewLocationLeft;
LayoutParams lp = new LayoutParams(rect.width(), rect.height());
lp.ignoreInsets = true;
@@ -438,12 +458,15 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag
v.setVisibility(View.INVISIBLE);
AnimatorSet appIconAnimatorSet = new AnimatorSet();
- // Animate the app icon to the center
- float centerX = mDeviceProfile.widthPx / 2;
- float centerY = mDeviceProfile.heightPx / 2;
+ int[] dragLayerBounds = new int[2];
+ mDragLayer.getLocationOnScreen(dragLayerBounds);
+
+ // Animate the app icon to the center of the window bounds in screen coordinates.
+ float centerX = windowTargetBounds.centerX() - dragLayerBounds[0];
+ float centerY = windowTargetBounds.centerY() - dragLayerBounds[1];
float xPosition = mIsRtl
- ? mDeviceProfile.widthPx - lp.getMarginStart() - rect.width()
+ ? windowTargetBounds.width() - lp.getMarginStart() - rect.width()
: lp.getMarginStart();
float dX = centerX - xPosition - (lp.width / 2);
float dY = centerY - lp.topMargin - (lp.height / 2);
@@ -469,8 +492,8 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag
// Scale the app icon to take up the entire screen. This simplifies the math when
// animating the app window position / scale.
- float maxScaleX = mDeviceProfile.widthPx / (float) rect.width();
- float maxScaleY = mDeviceProfile.heightPx / (float) rect.height();
+ float maxScaleX = windowTargetBounds.width() / (float) rect.width();
+ float maxScaleY = windowTargetBounds.height() / (float) rect.height();
float scale = Math.max(maxScaleX, maxScaleY);
ObjectAnimator scaleAnim = ObjectAnimator
.ofFloat(mFloatingView, SCALE_PROPERTY, startScale, scale);
@@ -505,7 +528,8 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag
/**
* @return Animator that controls the window of the opening targets.
*/
- private ValueAnimator getOpeningWindowAnimators(View v, RemoteAnimationTargetCompat[] targets) {
+ private ValueAnimator getOpeningWindowAnimators(View v, RemoteAnimationTargetCompat[] targets,
+ Rect windowTargetBounds) {
Rect bounds = new Rect();
if (v.getParent() instanceof DeepShortcutView) {
// Deep shortcut views have their icon drawn in a separate view.
@@ -544,31 +568,35 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag
float iconHeight = bounds.height() * mFloatingView.getScaleY();
// Scale the app window to match the icon size.
- float scaleX = iconWidth / mDeviceProfile.widthPx;
- float scaleY = iconHeight / mDeviceProfile.heightPx;
+ float scaleX = iconWidth / windowTargetBounds.width();
+ float scaleY = iconHeight / windowTargetBounds.height();
float scale = Math.min(1f, Math.min(scaleX, scaleY));
matrix.setScale(scale, scale);
// Position the scaled window on top of the icon
- int deviceWidth = mDeviceProfile.widthPx;
- int deviceHeight = mDeviceProfile.heightPx;
- float scaledWindowWidth = deviceWidth * scale;
- float scaledWindowHeight = deviceHeight * scale;
+ int windowWidth = windowTargetBounds.width();
+ int windowHeight = windowTargetBounds.height();
+ float scaledWindowWidth = windowWidth * scale;
+ float scaledWindowHeight = windowHeight * scale;
float offsetX = (scaledWindowWidth - iconWidth) / 2;
float offsetY = (scaledWindowHeight - iconHeight) / 2;
- mFloatingView.getLocationInWindow(floatingViewBounds);
+ if (mLauncher.isInMultiWindowModeCompat()) {
+ mFloatingView.getLocationOnScreen(floatingViewBounds);
+ } else {
+ mFloatingView.getLocationInWindow(floatingViewBounds);
+ }
float transX0 = floatingViewBounds[0] - offsetX;
float transY0 = floatingViewBounds[1] - offsetY;
matrix.postTranslate(transX0, transY0);
// Animate the window crop so that it starts off as a square, and then reveals
// horizontally.
- float cropHeight = deviceHeight * easePercent + deviceWidth * (1 - easePercent);
- float initialTop = (deviceHeight - deviceWidth) / 2f;
+ float cropHeight = windowHeight * easePercent + windowWidth * (1 - easePercent);
+ float initialTop = (windowHeight - windowWidth) / 2f;
crop.left = 0;
crop.top = (int) (initialTop * (1 - easePercent));
- crop.right = deviceWidth;
+ crop.right = windowWidth;
crop.bottom = (int) (crop.top + cropHeight);
TransactionCompat t = new TransactionCompat();
@@ -579,10 +607,6 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag
for (RemoteAnimationTargetCompat target : targets) {
if (target.mode == MODE_OPENING) {
t.setAlpha(target.leash, mAlpha.value);
-
- // TODO: This isn't correct at the beginning of the animation, but better
- // than nothing.
- matrix.postTranslate(target.position.x, target.position.y);
t.setMatrix(target.leash, matrix);
t.setWindowCrop(target.leash, crop);
t.deferTransactionUntil(target.leash, surface, getNextFrameNumber(surface));
diff --git a/quickstep/src/com/android/launcher3/uioverrides/AllAppsState.java b/quickstep/src/com/android/launcher3/uioverrides/AllAppsState.java
index d86ba6aa6c..1eaa8bc92c 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/AllAppsState.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/AllAppsState.java
@@ -18,8 +18,6 @@ package com.android.launcher3.uioverrides;
import static com.android.launcher3.LauncherAnimUtils.ALL_APPS_TRANSITION_MS;
import static com.android.launcher3.anim.Interpolators.DEACCEL_2;
-import android.view.View;
-
import com.android.launcher3.AbstractFloatingView;
import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherState;
@@ -61,11 +59,6 @@ public class AllAppsState extends LauncherState {
return 0f;
}
- @Override
- public View getFinalFocus(Launcher launcher) {
- return launcher.getAppsView();
- }
-
@Override
public float[] getWorkspaceScaleAndTranslation(Launcher launcher) {
float[] scaleAndTranslation = LauncherState.OVERVIEW.getWorkspaceScaleAndTranslation(
diff --git a/quickstep/src/com/android/launcher3/uioverrides/BackButtonAlphaHandler.java b/quickstep/src/com/android/launcher3/uioverrides/BackButtonAlphaHandler.java
new file mode 100644
index 0000000000..2e6dcc0e77
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/uioverrides/BackButtonAlphaHandler.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2018 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.uioverrides;
+
+import android.animation.ValueAnimator;
+
+import com.android.launcher3.Launcher;
+import com.android.launcher3.LauncherState;
+import com.android.launcher3.LauncherStateManager;
+import com.android.launcher3.anim.AnimatorSetBuilder;
+import com.android.quickstep.OverviewInteractionState;
+
+public class BackButtonAlphaHandler implements LauncherStateManager.StateHandler {
+
+ private static final String TAG = "BackButtonAlphaHandler";
+
+ private final Launcher mLauncher;
+ private final OverviewInteractionState mOverviewInteractionState;
+
+ public BackButtonAlphaHandler(Launcher launcher) {
+ mLauncher = launcher;
+ mOverviewInteractionState = OverviewInteractionState.getInstance(mLauncher);
+ }
+
+ @Override
+ public void setState(LauncherState state) {
+ UiFactory.onLauncherStateOrFocusChanged(mLauncher);
+ }
+
+ @Override
+ public void setStateWithAnimation(LauncherState toState,
+ AnimatorSetBuilder builder, LauncherStateManager.AnimationConfig config) {
+ if (!config.playNonAtomicComponent()) {
+ return;
+ }
+ float fromAlpha = mOverviewInteractionState.getBackButtonAlpha();
+ float toAlpha = toState.hideBackButton ? 0 : 1;
+ if (Float.compare(fromAlpha, toAlpha) != 0) {
+ ValueAnimator anim = ValueAnimator.ofFloat(fromAlpha, toAlpha);
+ anim.setDuration(config.duration);
+ anim.addUpdateListener(valueAnimator -> {
+ final float alpha = (float) valueAnimator.getAnimatedValue();
+ mOverviewInteractionState.setBackButtonAlpha(alpha, false);
+ });
+ builder.play(anim);
+ }
+ }
+}
diff --git a/quickstep/src/com/android/launcher3/uioverrides/FastOverviewState.java b/quickstep/src/com/android/launcher3/uioverrides/FastOverviewState.java
index a11625a346..43d982230b 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/FastOverviewState.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/FastOverviewState.java
@@ -15,7 +15,13 @@
*/
package com.android.launcher3.uioverrides;
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.Rect;
+
+import com.android.launcher3.DeviceProfile;
import com.android.launcher3.Launcher;
+import com.android.launcher3.R;
import com.android.quickstep.QuickScrubController;
import com.android.quickstep.views.RecentsView;
@@ -24,6 +30,12 @@ import com.android.quickstep.views.RecentsView;
*/
public class FastOverviewState extends OverviewState {
+ private static final float MAX_PREVIEW_SCALE_UP = 1.3f;
+ /**
+ * Vertical transition of the task previews relative to the full container.
+ */
+ public static final float OVERVIEW_TRANSLATION_FACTOR = 0.5f;
+
private static final int STATE_FLAGS = FLAG_DISABLE_RESTORE | FLAG_DISABLE_INTERACTION
| FLAG_OVERVIEW_UI | FLAG_HIDE_BACK_BUTTON | FLAG_DISABLE_ACCESSIBILITY;
@@ -45,6 +57,23 @@ public class FastOverviewState extends OverviewState {
@Override
public float[] getOverviewScaleAndTranslationYFactor(Launcher launcher) {
- return new float[] {1f, 0.5f};
+ RecentsView recentsView = launcher.getOverviewPanel();
+ recentsView.getTaskSize(sTempRect);
+
+ return new float[] {getOverviewScale(launcher.getDeviceProfile(), sTempRect, launcher),
+ OVERVIEW_TRANSLATION_FACTOR};
+ }
+
+ public static float getOverviewScale(DeviceProfile dp, Rect taskRect, Context context) {
+ if (dp.isVerticalBarLayout()) {
+ return 1f;
+ }
+
+ Resources res = context.getResources();
+ float usedHeight = taskRect.height() + res.getDimension(R.dimen.task_thumbnail_top_margin);
+ float usedWidth = taskRect.width() + 2 * (res.getDimension(R.dimen.recents_page_spacing)
+ + res.getDimension(R.dimen.quickscrub_adjacent_visible_width));
+ return Math.min(Math.min(dp.availableHeightPx / usedHeight,
+ dp.availableWidthPx / usedWidth), MAX_PREVIEW_SCALE_UP);
}
}
diff --git a/quickstep/src/com/android/launcher3/uioverrides/LandscapeEdgeSwipeController.java b/quickstep/src/com/android/launcher3/uioverrides/LandscapeEdgeSwipeController.java
index 68773b4188..6d1061990b 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/LandscapeEdgeSwipeController.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/LandscapeEdgeSwipeController.java
@@ -72,7 +72,7 @@ public class LandscapeEdgeSwipeController extends AbstractStateChangeTouchContro
@Override
protected void onSwipeInteractionCompleted(LauncherState targetState, int logAction) {
super.onSwipeInteractionCompleted(targetState, logAction);
- if (mFromState == NORMAL && targetState == OVERVIEW) {
+ if (mStartState == NORMAL && targetState == OVERVIEW) {
RecentsModel.getInstance(mLauncher).onOverviewShown(true, TAG);
}
}
diff --git a/quickstep/src/com/android/launcher3/uioverrides/OverviewState.java b/quickstep/src/com/android/launcher3/uioverrides/OverviewState.java
index 3a49294c51..9169ffbc1e 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/OverviewState.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/OverviewState.java
@@ -83,11 +83,6 @@ public class OverviewState extends LauncherState {
DiscoveryBounce.showForOverviewIfNeeded(launcher);
}
- @Override
- public View getFinalFocus(Launcher launcher) {
- return launcher.getOverviewPanel();
- }
-
public PageAlphaProvider getWorkspacePageAlphaProvider(Launcher launcher) {
return new PageAlphaProvider(DEACCEL_2) {
@Override
@@ -100,9 +95,9 @@ public class OverviewState extends LauncherState {
@Override
public int getVisibleElements(Launcher launcher) {
if (launcher.getDeviceProfile().isVerticalBarLayout()) {
- return 0;
+ return VERTICAL_SWIPE_INDICATOR;
} else {
- return HOTSEAT_SEARCH_BOX |
+ return HOTSEAT_SEARCH_BOX | VERTICAL_SWIPE_INDICATOR |
(launcher.getAppsView().getFloatingHeaderView().hasVisibleContent()
? ALL_APPS_HEADER_EXTRA : HOTSEAT_ICONS);
}
diff --git a/quickstep/src/com/android/launcher3/uioverrides/PortraitStatesTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/PortraitStatesTouchController.java
index 987f952baf..3fb7cd4802 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/PortraitStatesTouchController.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/PortraitStatesTouchController.java
@@ -202,7 +202,7 @@ public class PortraitStatesTouchController extends AbstractStateChangeTouchContr
@Override
protected void onSwipeInteractionCompleted(LauncherState targetState, int logAction) {
super.onSwipeInteractionCompleted(targetState, logAction);
- if (mFromState == NORMAL && targetState == OVERVIEW) {
+ if (mStartState == NORMAL && targetState == OVERVIEW) {
RecentsModel.getInstance(mLauncher).onOverviewShown(true, TAG);
}
}
diff --git a/quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.java b/quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.java
index e43b24a6af..e3aabd6c87 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.java
@@ -15,6 +15,7 @@
*/
package com.android.launcher3.uioverrides;
+import static com.android.launcher3.LauncherAnimUtils.SCALE_PROPERTY;
import static com.android.launcher3.LauncherState.FAST_OVERVIEW;
import static com.android.launcher3.LauncherState.OVERVIEW;
import static com.android.launcher3.anim.AnimatorSetBuilder.ANIM_OVERVIEW_FADE;
@@ -24,7 +25,6 @@ import static com.android.launcher3.anim.Interpolators.LINEAR;
import static com.android.quickstep.QuickScrubController.QUICK_SCRUB_START_INTERPOLATOR;
import static com.android.quickstep.QuickScrubController.QUICK_SCRUB_TRANSLATION_Y_FACTOR;
import static com.android.quickstep.views.LauncherRecentsView.TRANSLATION_Y_FACTOR;
-import static com.android.quickstep.views.RecentsView.ADJACENT_SCALE;
import static com.android.quickstep.views.RecentsViewContainer.CONTENT_ALPHA;
import android.animation.ValueAnimator;
@@ -59,7 +59,7 @@ public class RecentsViewStateController implements StateHandler {
public void setState(LauncherState state) {
mRecentsViewContainer.setContentAlpha(state.overviewUi ? 1 : 0);
float[] scaleTranslationYFactor = state.getOverviewScaleAndTranslationYFactor(mLauncher);
- mRecentsView.setAdjacentScale(scaleTranslationYFactor[0]);
+ SCALE_PROPERTY.set(mRecentsView, scaleTranslationYFactor[0]);
mRecentsView.setTranslationYFactor(scaleTranslationYFactor[1]);
if (state.overviewUi) {
mRecentsView.updateEmptyMessage();
@@ -77,7 +77,7 @@ public class RecentsViewStateController implements StateHandler {
PropertySetter setter = config.getPropertySetter(builder);
float[] scaleTranslationYFactor = toState.getOverviewScaleAndTranslationYFactor(mLauncher);
Interpolator scaleInterpolator = builder.getInterpolator(ANIM_OVERVIEW_SCALE, LINEAR);
- setter.setFloat(mRecentsView, ADJACENT_SCALE, scaleTranslationYFactor[0], scaleInterpolator);
+ setter.setFloat(mRecentsView, SCALE_PROPERTY, scaleTranslationYFactor[0], scaleInterpolator);
Interpolator transYInterpolator = scaleInterpolator;
if (mLauncher.getStateManager().getState() == OVERVIEW && toState == FAST_OVERVIEW) {
transYInterpolator = Interpolators.clampToProgress(QUICK_SCRUB_START_INTERPOLATOR, 0,
diff --git a/quickstep/src/com/android/launcher3/uioverrides/UiFactory.java b/quickstep/src/com/android/launcher3/uioverrides/UiFactory.java
index b371677f39..d0c7b21172 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/UiFactory.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/UiFactory.java
@@ -19,6 +19,7 @@ package com.android.launcher3.uioverrides;
import static android.view.View.VISIBLE;
import static com.android.launcher3.AbstractFloatingView.TYPE_ALL;
import static com.android.launcher3.AbstractFloatingView.TYPE_HIDE_BACK_BUTTON;
+import static com.android.launcher3.LauncherAnimUtils.SCALE_PROPERTY;
import static com.android.launcher3.LauncherState.ALL_APPS;
import static com.android.launcher3.LauncherState.NORMAL;
import static com.android.launcher3.LauncherState.OVERVIEW;
@@ -78,11 +79,13 @@ public class UiFactory {
}
public static StateHandler[] getStateHandler(Launcher launcher) {
- return new StateHandler[] {
- launcher.getAllAppsController(), launcher.getWorkspace(),
- new RecentsViewStateController(launcher)};
+ return new StateHandler[] {launcher.getAllAppsController(), launcher.getWorkspace(),
+ new RecentsViewStateController(launcher), new BackButtonAlphaHandler(launcher)};
}
+ /**
+ * Sets the back button visibility based on the current state/window focus.
+ */
public static void onLauncherStateOrFocusChanged(Launcher launcher) {
boolean shouldBackButtonBeHidden = launcher != null
&& launcher.getStateManager().getState().hideBackButton
@@ -96,10 +99,6 @@ public class UiFactory {
.setBackButtonAlpha(shouldBackButtonBeHidden ? 0 : 1, true /* animate */);
}
- public static void setBackButtonAlpha(Launcher launcher, float alpha, boolean animate) {
- OverviewInteractionState.getInstance(launcher).setBackButtonAlpha(alpha,animate);
- }
-
public static void resetOverview(Launcher launcher) {
RecentsView recents = launcher.getOverviewPanel();
recents.reset();
@@ -209,7 +208,7 @@ public class UiFactory {
public static void prepareToShowOverview(Launcher launcher) {
RecentsView overview = launcher.getOverviewPanel();
if (overview.getVisibility() != VISIBLE || overview.getContentAlpha() == 0) {
- overview.setAdjacentScale(1.33f);
+ SCALE_PROPERTY.set(overview, 1.33f);
}
}
diff --git a/quickstep/src/com/android/quickstep/ActivityControlHelper.java b/quickstep/src/com/android/quickstep/ActivityControlHelper.java
index ae0affee04..e202c574ad 100644
--- a/quickstep/src/com/android/quickstep/ActivityControlHelper.java
+++ b/quickstep/src/com/android/quickstep/ActivityControlHelper.java
@@ -20,6 +20,8 @@ import static com.android.launcher3.LauncherState.FAST_OVERVIEW;
import static com.android.launcher3.LauncherState.OVERVIEW;
import static com.android.launcher3.allapps.AllAppsTransitionController.ALL_APPS_PROGRESS;
import static com.android.launcher3.anim.Interpolators.LINEAR;
+import static com.android.quickstep.TouchConsumer.INTERACTION_NORMAL;
+import static com.android.quickstep.TouchConsumer.INTERACTION_QUICK_SCRUB;
import static com.android.systemui.shared.system.NavigationBarCompat.HIT_TARGET_BACK;
import static com.android.systemui.shared.system.NavigationBarCompat.HIT_TARGET_ROTATION;
@@ -48,9 +50,12 @@ import com.android.launcher3.allapps.AllAppsTransitionController;
import com.android.launcher3.allapps.DiscoveryBounce;
import com.android.launcher3.anim.AnimatorPlaybackController;
import com.android.launcher3.dragndrop.DragLayer;
+import com.android.launcher3.uioverrides.FastOverviewState;
import com.android.launcher3.userevent.nano.LauncherLogProto;
import com.android.launcher3.util.MultiValueAlpha.AlphaProperty;
+import com.android.quickstep.TouchConsumer.InteractionType;
import com.android.quickstep.util.LayoutUtils;
+import com.android.quickstep.util.TransformedRect;
import com.android.quickstep.util.RemoteAnimationProvider;
import com.android.quickstep.util.RemoteAnimationTargetSet;
import com.android.quickstep.views.LauncherLayoutListener;
@@ -83,7 +88,8 @@ public interface ActivityControlHelper {
void onTransitionCancelled(T activity, boolean activityVisible);
- int getSwipeUpDestinationAndLength(DeviceProfile dp, Context context, Rect outRect);
+ int getSwipeUpDestinationAndLength(DeviceProfile dp, Context context,
+ @InteractionType int interactionType, TransformedRect outRect);
void onSwipeUpComplete(T activity);
@@ -147,8 +153,8 @@ public interface ActivityControlHelper {
@Override
public float getTranslationYForQuickScrub(Launcher activity) {
LauncherRecentsView recentsView = activity.getOverviewPanel();
- float transYFactor = FAST_OVERVIEW.getOverviewScaleAndTranslationYFactor(activity)[1];
- return recentsView.computeTranslationYForFactor(transYFactor);
+ return recentsView.computeTranslationYForFactor(
+ FastOverviewState.OVERVIEW_TRANSLATION_FACTOR);
}
@Override
@@ -157,14 +163,18 @@ public interface ActivityControlHelper {
}
@Override
- public int getSwipeUpDestinationAndLength(DeviceProfile dp, Context context, Rect outRect) {
- LayoutUtils.calculateLauncherTaskSize(context, dp, outRect);
+ public int getSwipeUpDestinationAndLength(DeviceProfile dp, Context context,
+ @InteractionType int interactionType, TransformedRect outRect) {
+ LayoutUtils.calculateLauncherTaskSize(context, dp, outRect.rect);
+ if (interactionType == INTERACTION_QUICK_SCRUB) {
+ outRect.scale = FastOverviewState.getOverviewScale(dp, outRect.rect, context);
+ }
if (dp.isVerticalBarLayout()) {
Rect targetInsets = dp.getInsets();
int hotseatInset = dp.isSeascape() ? targetInsets.left : targetInsets.right;
return dp.hotseatBarSizePx + dp.hotseatBarSidePaddingPx + hotseatInset;
} else {
- return dp.heightPx - outRect.bottom;
+ return dp.heightPx - outRect.rect.bottom;
}
}
@@ -204,9 +214,10 @@ public interface ActivityControlHelper {
return new AnimationFactory() {
@Override
- public void createActivityController(long transitionLength) {
+ public void createActivityController(long transitionLength,
+ @InteractionType int interactionType) {
createActivityControllerInternal(activity, activityVisible, startState,
- transitionLength, callback);
+ transitionLength, interactionType, callback);
}
@Override
@@ -218,13 +229,16 @@ public interface ActivityControlHelper {
private void createActivityControllerInternal(Launcher activity, boolean wasVisible,
LauncherState startState, long transitionLength,
+ @InteractionType int interactionType,
Consumer callback) {
+ LauncherState endState = interactionType == INTERACTION_QUICK_SCRUB
+ ? FAST_OVERVIEW : OVERVIEW;
if (wasVisible) {
DeviceProfile dp = activity.getDeviceProfile();
long accuracy = 2 * Math.max(dp.widthPx, dp.heightPx);
activity.getStateManager().goToState(startState, false);
callback.accept(activity.getStateManager()
- .createAnimationToNewWorkspace(OVERVIEW, accuracy));
+ .createAnimationToNewWorkspace(endState, accuracy));
return;
}
@@ -238,7 +252,7 @@ public interface ActivityControlHelper {
float scrollRange = Math.max(controller.getShiftRange(), 1);
float progressDelta = (transitionLength / scrollRange);
- float endProgress = OVERVIEW.getVerticalProgress(activity);
+ float endProgress = endState.getVerticalProgress(activity);
float startProgress = endProgress + progressDelta;
ObjectAnimator shiftAnim = ObjectAnimator.ofFloat(
controller, ALL_APPS_PROGRESS, startProgress, endProgress);
@@ -381,14 +395,15 @@ public interface ActivityControlHelper {
}
@Override
- public int getSwipeUpDestinationAndLength(DeviceProfile dp, Context context, Rect outRect) {
- LayoutUtils.calculateFallbackTaskSize(context, dp, outRect);
+ public int getSwipeUpDestinationAndLength(DeviceProfile dp, Context context,
+ @InteractionType int interactionType, TransformedRect outRect) {
+ LayoutUtils.calculateFallbackTaskSize(context, dp, outRect.rect);
if (dp.isVerticalBarLayout()) {
Rect targetInsets = dp.getInsets();
int hotseatInset = dp.isSeascape() ? targetInsets.left : targetInsets.right;
return dp.hotseatBarSizePx + dp.hotseatBarSidePaddingPx + hotseatInset;
} else {
- return dp.heightPx - outRect.bottom;
+ return dp.heightPx - outRect.rect.bottom;
}
}
@@ -401,7 +416,7 @@ public interface ActivityControlHelper {
public AnimationFactory prepareRecentsUI(RecentsActivity activity, boolean activityVisible,
Consumer callback) {
if (activityVisible) {
- return (transitionLength) -> { };
+ return (transitionLength, interactionType) -> { };
}
RecentsViewContainer rv = activity.getOverviewPanelContainer();
@@ -418,11 +433,12 @@ public interface ActivityControlHelper {
rv.setContentAlpha(1);
}
createActivityController(getSwipeUpDestinationAndLength(
- activity.getDeviceProfile(), activity, new Rect()));
+ activity.getDeviceProfile(), activity, INTERACTION_NORMAL,
+ new TransformedRect()), INTERACTION_NORMAL);
}
@Override
- public void createActivityController(long transitionLength) {
+ public void createActivityController(long transitionLength, int interactionType) {
if (!isAnimatingHome) {
return;
}
@@ -543,7 +559,7 @@ public interface ActivityControlHelper {
default void onRemoteAnimationReceived(RemoteAnimationTargetSet targets) { }
- void createActivityController(long transitionLength);
+ void createActivityController(long transitionLength, @InteractionType int interactionType);
default void onTransitionCancelled() { }
}
diff --git a/quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java b/quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java
index 23738fb257..9ba3328319 100644
--- a/quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java
+++ b/quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java
@@ -265,12 +265,10 @@ public class OtherActivityTouchConsumer extends ContextWrapper implements TouchC
if (Looper.myLooper() != Looper.getMainLooper()) {
startActivity.run();
- if (!mIsDeferredDownTarget) {
- try {
- drawWaitLock.await(LAUNCHER_DRAW_TIMEOUT_MS, TimeUnit.MILLISECONDS);
- } catch (Exception e) {
- // We have waited long enough for launcher to draw
- }
+ try {
+ drawWaitLock.await(LAUNCHER_DRAW_TIMEOUT_MS, TimeUnit.MILLISECONDS);
+ } catch (Exception e) {
+ // We have waited long enough for launcher to draw
}
} else {
// We should almost always get touch-town on background thread. This is an edge case
@@ -326,10 +324,10 @@ public class OtherActivityTouchConsumer extends ContextWrapper implements TouchC
mPassedInitialSlop = true;
}
- notifyGestureStarted();
if (mInteractionHandler != null) {
mInteractionHandler.updateInteractionType(interactionType);
}
+ notifyGestureStarted();
}
@Override
diff --git a/quickstep/src/com/android/quickstep/OverviewCommandHelper.java b/quickstep/src/com/android/quickstep/OverviewCommandHelper.java
index 7b29323835..41a45501d0 100644
--- a/quickstep/src/com/android/quickstep/OverviewCommandHelper.java
+++ b/quickstep/src/com/android/quickstep/OverviewCommandHelper.java
@@ -21,6 +21,7 @@ import static android.content.Intent.ACTION_PACKAGE_REMOVED;
import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN;
import static com.android.launcher3.anim.Interpolators.TOUCH_RESPONSE_INTERPOLATOR;
+import static com.android.quickstep.TouchConsumer.INTERACTION_NORMAL;
import static com.android.systemui.shared.system.ActivityManagerWrapper
.CLOSE_SYSTEM_WINDOWS_REASON_RECENTS;
import static com.android.systemui.shared.system.PackageManagerWrapper
@@ -59,6 +60,7 @@ import com.android.quickstep.ActivityControlHelper.AnimationFactory;
import com.android.quickstep.ActivityControlHelper.FallbackActivityControllerHelper;
import com.android.quickstep.ActivityControlHelper.LauncherActivityControllerHelper;
import com.android.quickstep.util.ClipAnimationHelper;
+import com.android.quickstep.util.TransformedRect;
import com.android.quickstep.util.RemoteAnimationTargetSet;
import com.android.quickstep.views.RecentsView;
import com.android.systemui.shared.system.ActivityManagerWrapper;
@@ -282,7 +284,7 @@ public class OverviewCommandHelper {
});
factory.onRemoteAnimationReceived(null);
if (wasVisible) {
- factory.createActivityController(RECENTS_LAUNCH_DURATION);
+ factory.createActivityController(RECENTS_LAUNCH_DURATION, INTERACTION_NORMAL);
}
mActivity = activity;
mRecentsView = mActivity.getOverviewPanel();
@@ -342,9 +344,9 @@ public class OverviewCommandHelper {
loc[0] + rootView.getWidth(), loc[1] + rootView.getHeight());
clipHelper.updateSource(homeBounds, runningTaskTarget);
- Rect targetRect = new Rect();
- mHelper.getSwipeUpDestinationAndLength(
- mActivity.getDeviceProfile(), mActivity, targetRect);
+ TransformedRect targetRect = new TransformedRect();
+ mHelper.getSwipeUpDestinationAndLength(mActivity.getDeviceProfile(), mActivity,
+ INTERACTION_NORMAL, targetRect);
clipHelper.updateTargetRect(targetRect);
clipHelper.prepareAnimation(false /* isOpening */);
diff --git a/quickstep/src/com/android/quickstep/OverviewInteractionState.java b/quickstep/src/com/android/quickstep/OverviewInteractionState.java
index d60574676e..922a7ff295 100644
--- a/quickstep/src/com/android/quickstep/OverviewInteractionState.java
+++ b/quickstep/src/com/android/quickstep/OverviewInteractionState.java
@@ -91,6 +91,7 @@ public class OverviewInteractionState {
// These are updated on the background thread
private ISystemUiProxy mISystemUiProxy;
private boolean mSwipeUpEnabled = true;
+ private float mBackButtonAlpha = 1;
private Runnable mOnSwipeUpSettingChangedListener;
@@ -117,7 +118,14 @@ public class OverviewInteractionState {
return mSwipeUpEnabled;
}
+ public float getBackButtonAlpha() {
+ return mBackButtonAlpha;
+ }
+
public void setBackButtonAlpha(float alpha, boolean animate) {
+ if (!mSwipeUpEnabled) {
+ alpha = 1;
+ }
mUiHandler.removeMessages(MSG_SET_BACK_BUTTON_ALPHA);
mUiHandler.obtainMessage(MSG_SET_BACK_BUTTON_ALPHA, animate ? 1 : 0, 0, alpha)
.sendToTarget();
@@ -128,6 +136,9 @@ public class OverviewInteractionState {
}
private boolean handleUiMessage(Message msg) {
+ if (msg.what == MSG_SET_BACK_BUTTON_ALPHA) {
+ mBackButtonAlpha = (float) msg.obj;
+ }
mBgHandler.obtainMessage(msg.what, msg.arg1, msg.arg2, msg.obj).sendToTarget();
return true;
}
diff --git a/quickstep/src/com/android/quickstep/QuickScrubController.java b/quickstep/src/com/android/quickstep/QuickScrubController.java
index abb479dea7..8e1a3d5d8a 100644
--- a/quickstep/src/com/android/quickstep/QuickScrubController.java
+++ b/quickstep/src/com/android/quickstep/QuickScrubController.java
@@ -49,7 +49,7 @@ public class QuickScrubController implements OnAlarmListener {
* Snap to a new page when crossing these thresholds. The first and last auto-advance.
*/
private static final float[] QUICK_SCRUB_THRESHOLDS = new float[] {
- 0.04f, 0.27f, 0.50f, 0.73f, 0.96f
+ 0.05f, 0.20f, 0.35f, 0.50f, 0.65f, 0.80f, 0.95f
};
private static final String TAG = "QuickScrubController";
diff --git a/quickstep/src/com/android/quickstep/RecentsActivity.java b/quickstep/src/com/android/quickstep/RecentsActivity.java
index b472d611ae..3adb290bb8 100644
--- a/quickstep/src/com/android/quickstep/RecentsActivity.java
+++ b/quickstep/src/com/android/quickstep/RecentsActivity.java
@@ -176,8 +176,8 @@ public class RecentsActivity extends BaseDraggingActivity {
}
@Override
- public ActivityOptions getActivityLaunchOptions(final View v, boolean useDefaultLaunchOptions) {
- if (useDefaultLaunchOptions || !(v instanceof TaskView)) {
+ public ActivityOptions getActivityLaunchOptions(final View v) {
+ if (!(v instanceof TaskView)) {
return null;
}
diff --git a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
index 84b2176488..191c237f68 100644
--- a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
+++ b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
@@ -65,6 +65,7 @@ import com.android.quickstep.ActivityControlHelper.AnimationFactory;
import com.android.quickstep.ActivityControlHelper.LayoutListener;
import com.android.quickstep.TouchConsumer.InteractionType;
import com.android.quickstep.util.ClipAnimationHelper;
+import com.android.quickstep.util.TransformedRect;
import com.android.quickstep.util.RemoteAnimationTargetSet;
import com.android.quickstep.views.RecentsView;
import com.android.quickstep.views.TaskView;
@@ -181,7 +182,7 @@ public class WindowTransformSwipeHandler {
private LayoutListener mLayoutListener;
private RecentsView mRecentsView;
private QuickScrubController mQuickScrubController;
- private AnimationFactory mAnimationFactory = (t) -> { };
+ private AnimationFactory mAnimationFactory = (t, i) -> { };
private Runnable mLauncherDrawnCallback;
@@ -272,8 +273,8 @@ public class WindowTransformSwipeHandler {
| STATE_SCALED_CONTROLLER_APP,
this::notifyTransitionCancelled);
- mStateCallback.addCallback(STATE_LAUNCHER_STARTED | STATE_QUICK_SCRUB_START,
- this::onQuickScrubStart);
+ mStateCallback.addCallback(STATE_LAUNCHER_STARTED | STATE_QUICK_SCRUB_START
+ | STATE_APP_CONTROLLER_RECEIVED, this::onQuickScrubStart);
mStateCallback.addCallback(STATE_LAUNCHER_STARTED | STATE_QUICK_SCRUB_START
| STATE_SCALED_CONTROLLER_RECENTS, this::onFinishedTransitionToQuickScrub);
mStateCallback.addCallback(STATE_LAUNCHER_STARTED | STATE_CURRENT_TASK_FINISHED
@@ -302,9 +303,9 @@ public class WindowTransformSwipeHandler {
private void initTransitionEndpoints(DeviceProfile dp) {
mDp = dp;
- Rect tempRect = new Rect();
+ TransformedRect tempRect = new TransformedRect();
mTransitionDragLength = mActivityControlHelper
- .getSwipeUpDestinationAndLength(dp, mContext, tempRect);
+ .getSwipeUpDestinationAndLength(dp, mContext, mInteractionType, tempRect);
mClipAnimationHelper.updateTargetRect(tempRect);
}
@@ -488,7 +489,7 @@ public class WindowTransformSwipeHandler {
*/
public void buildAnimationController() {
initTransitionEndpoints(mActivity.getDeviceProfile());
- mAnimationFactory.createActivityController(mTransitionDragLength);
+ mAnimationFactory.createActivityController(mTransitionDragLength, mInteractionType);
}
private void onAnimatorPlaybackControllerCreated(AnimatorPlaybackController anim) {
@@ -793,13 +794,16 @@ public class WindowTransformSwipeHandler {
int scrollForFirstTask = mRecentsView.getScrollForPage(0);
int scrollForSecondTask = mRecentsView.getChildCount() > 1
? mRecentsView.getScrollForPage(1) : scrollForFirstTask;
- int offsetFromFirstTask = scrollForFirstTask - scrollForSecondTask;
- final float interpolation;
- if (mRecentsView.getWidth() == 0) {
- interpolation = scrollForSecondTask == scrollForFirstTask ? 0 : 1;
- } else {
- interpolation = (float) offsetFromFirstTask / (mRecentsView.getWidth() / 2);
- }
+ float offsetFromFirstTask = scrollForFirstTask - scrollForSecondTask;
+
+ TransformedRect tempRect = new TransformedRect();
+ mActivityControlHelper
+ .getSwipeUpDestinationAndLength(mDp, mContext, mInteractionType, tempRect);
+ float distanceToReachEdge = mDp.widthPx / 2 + tempRect.rect.width() / 2 +
+ mContext.getResources().getDimensionPixelSize(R.dimen.recents_page_spacing);
+ float interpolation = Math.min(1,
+ Math.abs(offsetFromFirstTask) / distanceToReachEdge);
+
mClipAnimationHelper.offsetTarget(
firstTask.getCurveScaleForInterpolation(interpolation), offsetFromFirstTask,
mActivityControlHelper.getTranslationYForQuickScrub(mActivity),
diff --git a/quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java b/quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java
index 9e2de33954..c5d74c7d93 100644
--- a/quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java
+++ b/quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java
@@ -20,8 +20,10 @@ import android.graphics.Canvas;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.View;
+import android.view.accessibility.AccessibilityNodeInfo;
import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.R;
import com.android.quickstep.RecentsActivity;
import com.android.quickstep.util.LayoutUtils;
import com.android.quickstep.views.RecentsView;
@@ -71,4 +73,21 @@ public class FallbackRecentsView extends RecentsView {
// Just use the activity task size for multi-window as well.
return false;
}
+
+ @Override
+ public void addTaskAccessibilityActionsExtra(AccessibilityNodeInfo info) {
+ info.addAction(
+ new AccessibilityNodeInfo.AccessibilityAction(
+ R.string.recents_clear_all,
+ getContext().getText(R.string.recents_clear_all)));
+ }
+
+ @Override
+ public boolean performTaskAccessibilityActionExtra(int action) {
+ if (action == R.string.recents_clear_all) {
+ dismissAllTasks();
+ return true;
+ }
+ return false;
+ }
}
diff --git a/quickstep/src/com/android/quickstep/util/ClipAnimationHelper.java b/quickstep/src/com/android/quickstep/util/ClipAnimationHelper.java
index 8c7f104a64..a654482f97 100644
--- a/quickstep/src/com/android/quickstep/util/ClipAnimationHelper.java
+++ b/quickstep/src/com/android/quickstep/util/ClipAnimationHelper.java
@@ -80,6 +80,7 @@ public class ClipAnimationHelper {
private final RectF mTmpRectF = new RectF();
private float mTargetScale = 1f;
+ private float mOffsetScale = 1f;
private Interpolator mInterpolator = LINEAR;
// We translate y slightly faster than the rest of the animation for quick scrub.
private Interpolator mOffsetYInterpolator = LINEAR;
@@ -106,11 +107,13 @@ public class ClipAnimationHelper {
updateSourceStack(target);
}
- public void updateTargetRect(Rect targetRect) {
+ public void updateTargetRect(TransformedRect targetRect) {
+ mOffsetScale = targetRect.scale;
mSourceRect.set(mSourceInsets.left, mSourceInsets.top,
mSourceStackBounds.width() - mSourceInsets.right,
mSourceStackBounds.height() - mSourceInsets.bottom);
- mTargetRect.set(targetRect);
+ mTargetRect.set(targetRect.rect);
+ Utilities.scaleRectFAboutCenter(mTargetRect, targetRect.scale);
mTargetRect.offset(mHomeStackBounds.left - mSourceStackBounds.left,
mHomeStackBounds.top - mSourceStackBounds.top);
@@ -145,7 +148,8 @@ public class ClipAnimationHelper {
synchronized (mTargetOffset) {
// Stay lined up with the center of the target, since it moves for quick scrub.
- currentRect.offset(mTargetOffset.x * progress, mTargetOffset.y * offsetYProgress);
+ currentRect.offset(mTargetOffset.x * mOffsetScale * progress,
+ mTargetOffset.y * offsetYProgress);
}
mClipRect.left = (int) (mSourceWindowClipInsets.left * progress);
@@ -219,16 +223,20 @@ public class ClipAnimationHelper {
mSourceInsets.set(activity.getDeviceProfile().getInsets());
}
- Rect targetRect = new Rect();
- dl.getDescendantRectRelativeToSelf(ttv, targetRect);
+ TransformedRect targetRect = new TransformedRect();
+ dl.getDescendantRectRelativeToSelf(ttv, targetRect.rect);
updateTargetRect(targetRect);
- // Transform the clip relative to the target rect.
- float scale = mTargetRect.width() / mSourceRect.width();
- mSourceWindowClipInsets.left = mSourceWindowClipInsets.left * scale;
- mSourceWindowClipInsets.top = mSourceWindowClipInsets.top * scale;
- mSourceWindowClipInsets.right = mSourceWindowClipInsets.right * scale;
- mSourceWindowClipInsets.bottom = mSourceWindowClipInsets.bottom * scale;
+ if (target == null) {
+ // Transform the clip relative to the target rect. Only do this in the case where we
+ // aren't applying the insets to the app windows (where the clip should be in target app
+ // space)
+ float scale = mTargetRect.width() / mSourceRect.width();
+ mSourceWindowClipInsets.left = mSourceWindowClipInsets.left * scale;
+ mSourceWindowClipInsets.top = mSourceWindowClipInsets.top * scale;
+ mSourceWindowClipInsets.right = mSourceWindowClipInsets.right * scale;
+ mSourceWindowClipInsets.bottom = mSourceWindowClipInsets.bottom * scale;
+ }
}
private void updateStackBoundsToMultiWindowTaskSize(BaseDraggingActivity activity) {
diff --git a/quickstep/src/com/android/quickstep/util/TransformedRect.java b/quickstep/src/com/android/quickstep/util/TransformedRect.java
new file mode 100644
index 0000000000..79f11e405b
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/util/TransformedRect.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2018 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 android.graphics.Rect;
+
+/**
+ * A wrapper around {@link Rect} with additional transformation properties
+ */
+public class TransformedRect {
+
+ public final Rect rect = new Rect();
+ public float scale = 1;
+
+ public void set(TransformedRect transformedRect) {
+ rect.set(transformedRect.rect);
+ scale = transformedRect.scale;
+ }
+}
diff --git a/quickstep/src/com/android/quickstep/views/ClearAllButton.java b/quickstep/src/com/android/quickstep/views/ClearAllButton.java
index d5c43a0f56..25e3dc6c14 100644
--- a/quickstep/src/com/android/quickstep/views/ClearAllButton.java
+++ b/quickstep/src/com/android/quickstep/views/ClearAllButton.java
@@ -19,6 +19,7 @@ package com.android.quickstep.views;
import static android.view.accessibility.AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS;
import android.content.Context;
+import android.graphics.Rect;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
@@ -43,4 +44,12 @@ public class ClearAllButton extends Button {
}
return res;
}
+
+ @Override
+ protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
+ super.onFocusChanged(focused, direction, previouslyFocusedRect);
+ if (focused) {
+ mRecentsView.revealClearAllButton();
+ }
+ }
}
diff --git a/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java b/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java
index 950f7fb997..5aca4f3263 100644
--- a/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java
+++ b/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java
@@ -35,6 +35,9 @@ import android.view.ViewDebug;
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherState;
+import com.android.launcher3.R;
+import com.android.launcher3.anim.Interpolators;
+import com.android.launcher3.views.ScrimView;
import com.android.quickstep.OverviewInteractionState;
import com.android.quickstep.util.ClipAnimationHelper;
import com.android.quickstep.util.LayoutUtils;
@@ -136,6 +139,12 @@ public class LauncherRecentsView extends RecentsView {
}
anim.play(ObjectAnimator.ofFloat(
mActivity.getAllAppsController(), ALL_APPS_PROGRESS, allAppsProgressOffscreen));
+
+ ObjectAnimator dragHandleAnim = ObjectAnimator.ofInt(
+ mActivity.findViewById(R.id.scrim_view), ScrimView.DRAG_HANDLE_ALPHA, 0);
+ dragHandleAnim.setInterpolator(Interpolators.ACCEL_2);
+ anim.play(dragHandleAnim);
+
return anim;
}
@@ -150,7 +159,7 @@ public class LauncherRecentsView extends RecentsView {
mActivity.getStateManager().goToState(NORMAL, false /* animate */);
} else {
LauncherState state = mActivity.getStateManager().getState();
- mActivity.getAllAppsController().setProgress(state.getVerticalProgress(mActivity));
+ mActivity.getAllAppsController().setState(state);
}
super.onTaskLaunched(success);
}
diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java
index a6da89f205..dee15d0d7b 100644
--- a/quickstep/src/com/android/quickstep/views/RecentsView.java
+++ b/quickstep/src/com/android/quickstep/views/RecentsView.java
@@ -41,18 +41,21 @@ import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Handler;
import android.os.UserHandle;
+import android.support.annotation.Nullable;
import android.text.Layout;
import android.text.StaticLayout;
import android.text.TextPaint;
import android.util.ArraySet;
import android.util.AttributeSet;
-import android.util.FloatProperty;
import android.util.SparseBooleanArray;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewDebug;
+import android.view.accessibility.AccessibilityEvent;
+import android.view.accessibility.AccessibilityNodeInfo;
+import android.widget.ListView;
import com.android.launcher3.BaseActivity;
import com.android.launcher3.DeviceProfile;
@@ -96,19 +99,6 @@ public abstract class RecentsView extends PagedView impl
private final Rect mTempRect = new Rect();
- public static final FloatProperty ADJACENT_SCALE =
- new FloatProperty("adjacentScale") {
- @Override
- public void setValue(RecentsView recentsView, float v) {
- recentsView.setAdjacentScale(v);
- }
-
- @Override
- public Float get(RecentsView recentsView) {
- return recentsView.mAdjacentScale;
- }
- };
- public static final boolean FLIP_RECENTS = true;
private static final int DISMISS_TASK_DURATION = 300;
// The threshold at which we update the SystemUI flags when animating from the task into the app
private static final float UPDATE_SYSUI_FLAGS_THRESHOLD = 0.6f;
@@ -119,6 +109,7 @@ public abstract class RecentsView extends PagedView impl
private final QuickScrubController mQuickScrubController;
private final float mFastFlingVelocity;
private final RecentsModel mModel;
+ private final int mTaskTopMargin;
private final ScrollState mScrollState = new ScrollState();
// Keeps track of the previously known visible tasks for purposes of loading/unloading task data
@@ -229,8 +220,6 @@ public abstract class RecentsView extends PagedView impl
@ViewDebug.ExportedProperty(category = "launcher")
private float mContentAlpha = 1;
- @ViewDebug.ExportedProperty(category = "launcher")
- private float mAdjacentScale = 1;
// Keeps track of task views whose visual state should not be reset
private ArraySet mIgnoreResetTaskViews = new ArraySet<>();
@@ -266,11 +255,10 @@ public abstract class RecentsView extends PagedView impl
mQuickScrubController = new QuickScrubController(mActivity, this);
mModel = RecentsModel.getInstance(context);
- mIsRtl = Utilities.isRtl(getResources());
- if (FLIP_RECENTS) {
- mIsRtl = !mIsRtl;
- }
+ mIsRtl = !Utilities.isRtl(getResources());
setLayoutDirection(mIsRtl ? View.LAYOUT_DIRECTION_RTL : View.LAYOUT_DIRECTION_LTR);
+ mTaskTopMargin = getResources()
+ .getDimensionPixelSize(R.dimen.task_thumbnail_top_margin);
mEmptyIcon = context.getDrawable(R.drawable.ic_empty_recents);
mEmptyIcon.setCallback(this);
@@ -283,6 +271,7 @@ public abstract class RecentsView extends PagedView impl
.getDimensionPixelSize(R.dimen.recents_empty_message_text_padding);
setWillNotDraw(false);
updateEmptyMessage();
+ setFocusable(false);
}
public boolean isRtl() {
@@ -518,8 +507,7 @@ public abstract class RecentsView extends PagedView impl
DeviceProfile dp = mActivity.getDeviceProfile();
getTaskSize(dp, mTempRect);
- mTempRect.top -= getResources()
- .getDimensionPixelSize(R.dimen.task_thumbnail_top_margin);
+ mTempRect.top -= mTaskTopMargin;
setPadding(mTempRect.left - mInsets.left, mTempRect.top - mInsets.top,
dp.availableWidthPx + mInsets.left - mTempRect.right,
dp.availableHeightPx + mInsets.top - mTempRect.bottom);
@@ -581,6 +569,11 @@ public abstract class RecentsView extends PagedView impl
* and unloads the associated task data for tasks that are no longer visible.
*/
public void loadVisibleTaskData() {
+ if (!mOverviewStateEnabled) {
+ // Skip loading visible task data if we've already left the overview state
+ return;
+ }
+
RecentsTaskLoader loader = mModel.getRecentsTaskLoader();
int centerPageIndex = getPageNearestToCenterOfScreen();
int lower = Math.max(0, centerPageIndex - 2);
@@ -927,21 +920,16 @@ public abstract class RecentsView extends PagedView impl
set.play(anim);
}
- private void snapToPageRelative(int delta) {
+ private boolean snapToPageRelative(int delta, boolean cycle) {
if (getPageCount() == 0) {
- return;
+ return false;
}
- snapToPage((getNextPage() + getPageCount() + delta) % getPageCount());
- }
-
- @Override
- public void onVisibilityAggregated(boolean isVisible) {
- super.onVisibilityAggregated(isVisible);
- if (isVisible && !isFocused()) {
- // Having focus, even in touch mode, keeps us from losing [Alt+]Tab by preventing
- // switching to keyboard mode.
- requestFocus();
+ final int newPageUnbound = getNextPage() + delta;
+ if (!cycle && (newPageUnbound < 0 || newPageUnbound >= getChildCount())) {
+ return false;
}
+ snapToPage((newPageUnbound + getPageCount()) % getPageCount());
+ return true;
}
private void runDismissAnimation(PendingAnimation pendingAnim) {
@@ -967,14 +955,12 @@ public abstract class RecentsView extends PagedView impl
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_TAB:
- snapToPageRelative(event.isShiftPressed() ? -1 : 1);
- return true;
+ return snapToPageRelative(event.isShiftPressed() ? -1 : 1,
+ event.isAltPressed() /* cycle */);
case KeyEvent.KEYCODE_DPAD_RIGHT:
- snapToPageRelative(mIsRtl ? -1 : 1);
- return true;
+ return snapToPageRelative(mIsRtl ? -1 : 1, false /* cycle */);
case KeyEvent.KEYCODE_DPAD_LEFT:
- snapToPageRelative(mIsRtl ? 1 : -1);
- return true;
+ return snapToPageRelative(mIsRtl ? 1 : -1, false /* cycle */);
case KeyEvent.KEYCODE_DEL:
case KeyEvent.KEYCODE_FORWARD_DEL:
dismissTask((TaskView) getChildAt(getNextPage()), true /*animateTaskView*/,
@@ -992,8 +978,22 @@ public abstract class RecentsView extends PagedView impl
return super.dispatchKeyEvent(event);
}
- public void snapToTaskAfterNext() {
- snapToPageRelative(1);
+ @Override
+ protected void onFocusChanged(boolean gainFocus, int direction,
+ @Nullable Rect previouslyFocusedRect) {
+ super.onFocusChanged(gainFocus, direction, previouslyFocusedRect);
+ if (gainFocus && getChildCount() > 0) {
+ switch (direction) {
+ case FOCUS_FORWARD:
+ setCurrentPage(0);
+ break;
+ case FOCUS_BACKWARD:
+ case FOCUS_RIGHT:
+ case FOCUS_LEFT:
+ setCurrentPage(getChildCount() - 1);
+ break;
+ }
+ }
}
public float getContentAlpha() {
@@ -1016,36 +1016,7 @@ public abstract class RecentsView extends PagedView impl
updateClearAllButtonAlpha();
}
- public void setAdjacentScale(float adjacentScale) {
- if (mAdjacentScale == adjacentScale) {
- return;
- }
- mAdjacentScale = adjacentScale;
- TaskView currTask = getPageAt(mCurrentPage);
- if (currTask == null) {
- return;
- }
- currTask.setZoomScale(mAdjacentScale);
-
- if (mCurrentPage - 1 >= 0) {
- TaskView adjacentTask = getPageAt(mCurrentPage - 1);
- float[] scaleAndTranslation = getAdjacentScaleAndTranslation(currTask, adjacentTask,
- mAdjacentScale, 0);
- adjacentTask.setZoomScale(scaleAndTranslation[0]);
- adjacentTask.setTranslationX(-scaleAndTranslation[1]);
- adjacentTask.setTranslationY(scaleAndTranslation[2]);
- }
- if (mCurrentPage + 1 < getChildCount()) {
- TaskView adjacentTask = getPageAt(mCurrentPage + 1);
- float[] scaleAndTranslation = getAdjacentScaleAndTranslation(currTask, adjacentTask,
- mAdjacentScale, 0);
- adjacentTask.setZoomScale(scaleAndTranslation[0]);
- adjacentTask.setTranslationX(scaleAndTranslation[1]);
- adjacentTask.setTranslationY(scaleAndTranslation[2]);
- }
- }
-
- private float[] getAdjacentScaleAndTranslation(TaskView currTask, TaskView adjacentTask,
+ private float[] getAdjacentScaleAndTranslation(TaskView currTask,
float currTaskToScale, float currTaskToTranslationY) {
float displacement = currTask.getWidth() * (currTaskToScale - currTask.getCurveScale());
sTempFloatArray[0] = currTaskToScale;
@@ -1058,7 +1029,6 @@ public abstract class RecentsView extends PagedView impl
public void onViewAdded(View child) {
super.onViewAdded(child);
child.setAlpha(mContentAlpha);
- setAdjacentScale(mAdjacentScale);
onChildViewsChanged();
}
@@ -1084,6 +1054,12 @@ public abstract class RecentsView extends PagedView impl
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
updateEmptyStateUi(changed);
+
+ // Set the pivot points to match the task preview center
+ setPivotY(((mInsets.top + getPaddingTop() + mTaskTopMargin)
+ + (getHeight() - mInsets.bottom - getPaddingBottom())) / 2);
+ setPivotX(((mInsets.left + getPaddingLeft())
+ + (getWidth() - mInsets.right - getPaddingRight())) / 2);
}
private void updateEmptyStateUi(boolean sizeChanged) {
@@ -1154,14 +1130,14 @@ public abstract class RecentsView extends PagedView impl
if (taskIndex - 1 >= 0) {
TaskView adjacentTask = getPageAt(taskIndex - 1);
float[] scaleAndTranslation = getAdjacentScaleAndTranslation(centerTask,
- adjacentTask, toScale, toTranslationY);
+ toScale, toTranslationY);
scaleAndTranslation[1] = -scaleAndTranslation[1];
anim.play(createAnimForChild(adjacentTask, scaleAndTranslation));
}
if (taskIndex + 1 < getPageCount()) {
TaskView adjacentTask = getPageAt(taskIndex + 1);
float[] scaleAndTranslation = getAdjacentScaleAndTranslation(centerTask,
- adjacentTask, toScale, toTranslationY);
+ toScale, toTranslationY);
anim.play(createAnimForChild(adjacentTask, scaleAndTranslation));
}
} else {
@@ -1300,25 +1276,59 @@ public abstract class RecentsView extends PagedView impl
private void onChildViewsChanged() {
final int childCount = getChildCount();
mClearAllButton.setVisibility(childCount == 0 ? INVISIBLE : VISIBLE);
+ setFocusable(childCount != 0);
}
public void revealClearAllButton() {
+ setCurrentPage(getChildCount() - 1); // Loads tasks info if needed.
scrollTo(mIsRtl ? 0 : computeMaxScrollX(), 0);
}
@Override
public void addChildrenForAccessibility(ArrayList outChildren) {
- if (FLIP_RECENTS) {
- for (int i = getChildCount() - 1; i >= 0; --i) {
- outChildren.add(getChildAt(i));
- }
- } else {
- super.addChildrenForAccessibility(outChildren);
+ for (int i = getChildCount() - 1; i >= 0; --i) {
+ outChildren.add(getChildAt(i));
}
}
+ @Override
+ public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
+ super.onInitializeAccessibilityNodeInfo(info);
+
+ final AccessibilityNodeInfo.CollectionInfo
+ collectionInfo = AccessibilityNodeInfo.CollectionInfo.obtain(
+ 1, getChildCount(), false,
+ AccessibilityNodeInfo.CollectionInfo.SELECTION_MODE_NONE);
+ info.setCollectionInfo(collectionInfo);
+ }
+
+ @Override
+ public void onInitializeAccessibilityEvent(AccessibilityEvent event) {
+ super.onInitializeAccessibilityEvent(event);
+
+ if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_SCROLLED) {
+ final int visiblePageNumber = getChildCount() - getCurrentPage() - 1;
+ event.setFromIndex(visiblePageNumber);
+ event.setToIndex(visiblePageNumber);
+ event.setItemCount(getChildCount());
+ }
+ }
+
+ @Override
+ public CharSequence getAccessibilityClassName() {
+ // To hear position-in-list related feedback from Talkback.
+ return ListView.class.getName();
+ }
+
@Override
protected boolean isPageOrderFlipped() {
- return FLIP_RECENTS;
+ return true;
+ }
+
+ public void addTaskAccessibilityActionsExtra(AccessibilityNodeInfo info) {
+ }
+
+ public boolean performTaskAccessibilityActionExtra(int action) {
+ return false;
}
}
diff --git a/quickstep/src/com/android/quickstep/views/RecentsViewContainer.java b/quickstep/src/com/android/quickstep/views/RecentsViewContainer.java
index 429432b2fa..31c8b64480 100644
--- a/quickstep/src/com/android/quickstep/views/RecentsViewContainer.java
+++ b/quickstep/src/com/android/quickstep/views/RecentsViewContainer.java
@@ -23,12 +23,14 @@ import android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.util.FloatProperty;
-import android.view.Gravity;
import android.view.MotionEvent;
+import android.view.View;
import com.android.launcher3.InsettableFrameLayout;
import com.android.launcher3.R;
+import java.util.ArrayList;
+
public class RecentsViewContainer extends InsettableFrameLayout {
public static final FloatProperty CONTENT_ALPHA =
new FloatProperty("contentAlpha") {
@@ -64,14 +66,18 @@ public class RecentsViewContainer extends InsettableFrameLayout {
});
mRecentsView = findViewById(R.id.overview_panel);
- final InsettableFrameLayout.LayoutParams params =
- (InsettableFrameLayout.LayoutParams) mClearAllButton.getLayoutParams();
- params.gravity = Gravity.TOP | (RecentsView.FLIP_RECENTS ? Gravity.START : Gravity.END);
- mClearAllButton.setLayoutParams(params);
mClearAllButton.forceHasOverlappingRendering(false);
mRecentsView.setClearAllButton(mClearAllButton);
mClearAllButton.setRecentsView(mRecentsView);
+
+ if (mRecentsView.isRtl()) {
+ mClearAllButton.setNextFocusRightId(mRecentsView.getId());
+ mRecentsView.setNextFocusLeftId(mClearAllButton.getId());
+ } else {
+ mClearAllButton.setNextFocusLeftId(mRecentsView.getId());
+ mRecentsView.setNextFocusRightId(mClearAllButton.getId());
+ }
}
@Override
@@ -104,4 +110,18 @@ public class RecentsViewContainer extends InsettableFrameLayout {
mRecentsView.setContentAlpha(alpha);
setVisibility(alpha > 0 ? VISIBLE : GONE);
}
+
+ @Override
+ public void addFocusables(ArrayList views, int direction, int focusableMode) {
+ if (mRecentsView.getChildCount() > 0) {
+ // Carousel is first in tab order.
+ views.add(mRecentsView);
+ views.add(mClearAllButton);
+ }
+ }
+
+ public boolean requestFocus(int direction, Rect previouslyFocusedRect) {
+ return mRecentsView.requestFocus(direction, previouslyFocusedRect) ||
+ super.requestFocus(direction, previouslyFocusedRect);
+ }
}
\ No newline at end of file
diff --git a/quickstep/src/com/android/quickstep/views/ShelfScrimView.java b/quickstep/src/com/android/quickstep/views/ShelfScrimView.java
index 24afd4868e..aca8351a06 100644
--- a/quickstep/src/com/android/quickstep/views/ShelfScrimView.java
+++ b/quickstep/src/com/android/quickstep/views/ShelfScrimView.java
@@ -153,15 +153,6 @@ public class ShelfScrimView extends ScrimView {
}
}
- @Override
- protected void updateDragHandleAlpha() {
- if (mDrawingFlatColor) {
- super.updateDragHandleAlpha();
- } else if (mDragHandle != null) {
- mDragHandle.setAlpha(255);
- }
- }
-
@Override
protected void onDraw(Canvas canvas) {
float translate = drawBackground(canvas);
diff --git a/quickstep/src/com/android/quickstep/views/TaskView.java b/quickstep/src/com/android/quickstep/views/TaskView.java
index 82aa45a18c..5413a13199 100644
--- a/quickstep/src/com/android/quickstep/views/TaskView.java
+++ b/quickstep/src/com/android/quickstep/views/TaskView.java
@@ -17,6 +17,7 @@
package com.android.quickstep.views;
import static android.widget.Toast.LENGTH_SHORT;
+
import static com.android.quickstep.views.TaskThumbnailView.DIM_ALPHA_MULTIPLIER;
import android.animation.Animator;
@@ -116,7 +117,7 @@ public class TaskView extends FrameLayout implements TaskCallbacks, PageCallback
}
launchTask(true /* animate */);
BaseActivity.fromContext(context).getUserEventDispatcher().logTaskLaunchOrDismiss(
- Touch.TAP, Direction.NONE, ((RecentsView) getParent()).indexOfChild(this),
+ Touch.TAP, Direction.NONE, getRecentsView().indexOfChild(this),
TaskUtils.getComponentKeyForTask(getTask().key));
});
setOutlineProvider(new TaskOutlineProvider(getResources()));
@@ -168,7 +169,7 @@ public class TaskView extends FrameLayout implements TaskCallbacks, PageCallback
final ActivityOptions opts;
if (animate) {
opts = BaseDraggingActivity.fromContext(getContext())
- .getActivityLaunchOptions(this, false);
+ .getActivityLaunchOptions(this);
} else {
opts = ActivityOptions.makeCustomAnimation(getContext(), 0, 0);
}
@@ -318,12 +319,21 @@ public class TaskView extends FrameLayout implements TaskCallbacks, PageCallback
context.getText(menuOption.labelResId)));
}
}
+
+ final RecentsView recentsView = getRecentsView();
+ recentsView.addTaskAccessibilityActionsExtra(info);
+
+ final AccessibilityNodeInfo.CollectionItemInfo itemInfo =
+ AccessibilityNodeInfo.CollectionItemInfo.obtain(
+ 0, 1, recentsView.getChildCount() - recentsView.indexOfChild(this) - 1, 1,
+ false);
+ info.setCollectionItemInfo(itemInfo);
}
@Override
public boolean performAccessibilityAction(int action, Bundle arguments) {
if (action == R.string.accessibility_close_task) {
- ((RecentsView) getParent()).dismissTask(this, true /*animateTaskView*/,
+ getRecentsView().dismissTask(this, true /*animateTaskView*/,
true /*removeTask*/);
return true;
}
@@ -339,9 +349,15 @@ public class TaskView extends FrameLayout implements TaskCallbacks, PageCallback
}
}
+ if (getRecentsView().performTaskAccessibilityActionExtra(action)) return true;
+
return super.performAccessibilityAction(action, arguments);
}
+ private RecentsView getRecentsView() {
+ return (RecentsView) getParent();
+ }
+
public void notifyTaskLaunchFailed(String tag) {
String msg = "Failed to launch task";
if (mTask != null) {
diff --git a/res/layout/all_apps.xml b/res/layout/all_apps.xml
index 5e7b117c43..02d793e1c0 100644
--- a/res/layout/all_apps.xml
+++ b/res/layout/all_apps.xml
@@ -23,8 +23,7 @@
android:layout_height="match_parent"
android:clipChildren="true"
android:clipToPadding="false"
- android:focusable="true"
- android:focusableInTouchMode="true"
+ android:focusable="false"
android:saveEnabled="false" >
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 87924e79b3..35539e3608 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -108,6 +108,8 @@
"%1$s laai tans af, %2$s voltooid"
"%1$s wag tans om te installeer"
"%1$s-legstukke"
+ "Legstukkelys"
+ "Legstukkelys is toegemaak"
"Voeg by tuisskerm"
"Skuif item hierheen"
"Item is by tuisskerm gevoeg"
@@ -130,8 +132,7 @@
"Verminder hoogte"
"Legstukgrootte is verander na breedte %1$s hoogte %2$s"
"Kortpaaie"
-
-
+ "Kortpaaie en kennisgewings"
"Maak toe"
"Kennisgewing is toegemaak"
"Persoonlik"
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 46647c62d9..921fbd9162 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -108,6 +108,8 @@
"%1$s በመውረድ ላይ፣ %2$s ተጠናቋል"
"%1$s ለመጫን በመጠበቅ ላይ"
"%1$s ንዑስ ፕሮግራሞች"
+ "የመግብሮች ዝርዝር"
+ "የመግብሮች ዝርዝር ተዘግቷል"
"ወደ መነሻ ማያ ገጽ ያክሉ"
"ንጥልን ወደዚህ ውሰድ"
"ወደ መነሻ ማያ ገጽ ንጥል ታክሏል"
@@ -130,8 +132,7 @@
"ቁመት ይቀንሱ"
"የመግብር መጠን ወደ ስፋት %1$s ቁመት %2$s ተለውጧል"
"አቋራጮች"
-
-
+ "አቋራጮች እና ማሳወቂያዎች"
"አሰናብት"
"ማሳወቂያ ተሰናብቷል"
"የግል"
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index c094c3ad8b..ecf32d4f77 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -112,6 +112,8 @@
"جارٍ تنزيل %1$s، اكتمل %2$s"
"%1$s في انتظار التثبيت"
"أدوات %1$s"
+ "قائمة الأدوات"
+ "تم إغلاق قائمة الأدوات."
"إضافة إلى الشاشة الرئيسية"
"نقل العنصر إلى هنا"
"تمت إضافة العنصر إلى الشاشة الرئيسية"
@@ -134,8 +136,7 @@
"تقليل الارتفاع"
"تم تغيير حجم الأداة إلى العرض %1$s والارتفاع %2$s"
"الاختصارات"
-
-
+ "الاختصارات والإشعارات"
"تجاهل"
"تم تجاهل الإشعار"
"شخصية"
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index 41deec31ec..5c896e4f24 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -108,6 +108,10 @@
"%1$s ডাউনল\'ড কৰি থকা হৈছে, %2$s সম্পূৰ্ণ হ\'ল"
"%1$s ইনষ্টল হোৱালৈ অপেক্ষা কৰি থকা হৈছে"
"%1$s ৱিজেট"
+
+
+
+
"গৃহ স্ক্ৰীণত যোগ কৰক"
"বস্তুটো ইয়ালৈ স্থানান্তৰ কৰক"
"বস্তুটো গৃহ স্ক্ৰীণত যোগ কৰা হ\'ল"
@@ -130,8 +134,7 @@
"উচ্চতা হ্ৰাস কৰক"
"ৱিজেটৰ আকাৰ সলনি কৰি প্ৰস্থ %1$s আৰু উচ্চতা %2$s কৰা হ\'ল"
"শ্বৰ্টকাটসমূহ"
-
-
+ "শ্বৰ্টকাট আৰু জাননীসমূহ"
"অগ্ৰাহ্য কৰক"
"জাননী অগ্ৰাহ্য কৰা হৈছে"
"ব্যক্তিগত"
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index dd0f022a1b..3b36f37b25 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -108,6 +108,8 @@
"%1$s endirilir, %2$s tamamlandı"
"%1$s yüklənmək üçün gözləyir"
"%1$s vidcetləri"
+ "Vidcet siyahısı"
+ "Vidcet siyahısı bağlandı"
"Əsas ekrana əlavə edin"
"Elementi bura köçürün"
"Element əsas ekrana əlavə edildi"
@@ -130,8 +132,7 @@
"Hündürlüyü azaldın"
"Vidcetin eni %1$s hündürlüyü %2$s kimi ölçüləndirildi"
"Qısa yollar"
-
-
+ "Qısayol və bildirişlər"
"Rədd edin"
"Bildiriş rədd edildi"
"Şəxsi"
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 9a2062f84f..3fb8bf50c5 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -109,6 +109,8 @@
"%1$s se preuzima, završeno je %2$s"
"%1$s čeka na instaliranje"
"Vidžeti za %1$s"
+ "Lista vidžeta"
+ "Lista vidžeta je zatvorena"
"Dodaj na početni ekran"
"Premesti stavku ovde"
"Stavka je dodata na početni ekran"
@@ -131,8 +133,7 @@
"Smanji visinu"
"Veličina vidžeta je promenjena na širinu %1$s i visinu %2$s"
"Prečice"
-
-
+ "Prečice i obaveštenja"
"Odbaci"
"Obaveštenje je odbačeno"
"Lične"
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index ea312e7b18..59a8f1fa2b 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -110,6 +110,8 @@
"Ідзе спампоўка %1$s, %2$s завершана"
"%1$s чакае ўсталёўкі"
"Віджэты %1$s"
+ "Спіс віджэтаў"
+ "Спіс віджэтаў закрыты"
"Дадаць на Галоўны экран"
"Перамясціць элемент сюды"
"Элемент дададзены на галоўны экран"
@@ -132,8 +134,7 @@
"Паменшыць вышыню"
"Памеры віджэта зменены на: шырыня %1$s, вышыня %2$s"
"Ярлыкі"
-
-
+ "Ярлыкі і апавяшчэнні"
"Адхіліць"
"Апавяшчэнне адхілена"
"Асабістыя"
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 92000496d7..47825f6bd0 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -108,6 +108,8 @@
"%1$s се изтегля. Завършено: %2$s"
"%1$s изчаква инсталиране"
"Приспособления за %1$s"
+ "Списък с приспособления"
+ "Списъкът с приспособления е затворен"
"Добавяне към началния екран"
"Преместване на елемента тук"
"Елементът е добавен към началния екран"
@@ -130,8 +132,7 @@
"Намаляване на височината"
"Приспособлението е преоразмерено към ширина %1$s и височина %2$s"
"Преки пътища"
-
-
+ "Преки пътища и известия"
"Отхвърляне"
"Известието е отхвърлено"
"Лични"
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index b11fae9ad9..651f400ef6 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -108,6 +108,10 @@
"%1$s ডাউনলোড হচ্ছে %2$s সম্পন্ন হয়েছে"
"%1$s ইনস্টলের অপেক্ষায় রয়েছে"
"%1$s উইজেট"
+
+
+
+
"হোম স্ক্রীনে যোগ করুন"
"এখানে আইটেম সরান"
"হোম স্ক্রীনে আইটেম যোগ করা হয়েছে"
@@ -130,8 +134,7 @@
"উচ্চতা কমান"
"উইজেটের আকার প্রস্থ %1$s উচ্চতা %2$s তে পরিবর্তন করা হয়েছে"
"শর্টকাট"
-
-
+ "শর্টকাট এবং বিজ্ঞপ্তি"
"খারিজ করুন"
"বিজ্ঞপ্তি খারিজ করা হয়েছে"
"ব্যক্তিগত"
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 94d3ca0676..848176df02 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -109,6 +109,8 @@
"%1$s se preuzima, završeno %2$s"
"%1$s čeka da se instalira"
"Vidžeti za aplikaciju %1$s"
+ "Spisak vidžeta"
+ "Spisak vidžeta je zatvoren"
"Dodaj na početni ekran"
"Premjesti stavku ovdje"
"Stavka je dodana na Početni ekran."
@@ -131,8 +133,7 @@
"Smanji visinu"
"Veličina vidžeta je promijenjena na širinu %1$s visinu %2$s"
"Prečice"
-
-
+ "Prečice i obavještenja"
"Odbaci"
"Obavještenje je odbačeno"
"Lične"
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 2364e722e0..27f9c3132a 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -108,6 +108,8 @@
"S\'està baixant %1$s, %2$s completat"
"S\'està esperant per instal·lar %1$s"
"Widgets de: %1$s"
+ "Llista de widgets"
+ "S\'ha tancat la llista de widgets"
"Afegeix a la pantalla d\'inici"
"Mou l\'element aquí"
"S\'ha afegit l\'element a la pantalla d\'inici"
@@ -130,8 +132,7 @@
"Redueix l\'alçada"
"S\'ha canviat la mida del widget a l\'amplada %1$s i l\'alçada %2$s"
"Dreceres"
-
-
+ "Dreceres i notificacions"
"Ignora"
"S\'ha ignorat la notificació"
"Personal"
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index f84e437c1c..48adf44be5 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -110,6 +110,8 @@
"Stahování aplikace %1$s (dokončeno %2$s)"
"Instalace aplikace %1$s čeká na zahájení"
"Widgety %1$s"
+ "Seznam widgetů"
+ "Seznam widgetů zavřen"
"Přidat na plochu"
"Přesunout položku sem"
"Položka byla přidána na plochu"
@@ -132,8 +134,7 @@
"Snížit výšku"
"Velikost widgetu upravena: šířka %1$s, výška %2$s"
"Zkratky"
-
-
+ "Zkratky a oznámení"
"Zavřít"
"Oznámení bylo zavřeno"
"Osobní"
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 1d6984c757..d141ad9ff9 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -108,6 +108,8 @@
"%1$s downloades. %2$s er gennemført"
"%1$s venter på at installere"
"%1$s-widgets"
+ "Liste med widgets"
+ "Listen med widgets blev lukket"
"Føj til startskærm"
"Flyt elementet hertil"
"Elementet er føjet til startskærmen"
@@ -130,8 +132,7 @@
"Reducer højden"
"Størrelsen for widgetten er ændret til bredde %1$s og højde %2$s"
"Genveje"
-
-
+ "Genveje og underretninger"
"Afvis"
"Underretningen blev afvist"
"Personlige"
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index af07f1c8f0..c309a55689 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -108,6 +108,8 @@
"%1$s wird heruntergeladen, %2$s abgeschlossen"
"Warten auf Installation von %1$s"
"%1$s-Widgets"
+ "Widgetliste"
+ "Widgetliste geschlossen"
"Zum Startbildschirm hinzufügen"
"Element hierhin verschieben"
"Element zum Startbildschirm hinzugefügt"
@@ -130,8 +132,7 @@
"Höhe verringern"
"Größe des Widgets zu Breite %1$s und Höhe %2$s geändert"
"Verknüpfungen"
-
-
+ "Verknüpfungen und Benachrichtigungen"
"Schließen"
"Benachrichtigung geschlossen"
"Privat"
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 3de0aaf5ac..3208fcbd10 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -108,6 +108,8 @@
"Λήψη %1$s, ολοκληρώθηκε %2$s"
"%1$s σε αναμονή για εγκατάσταση"
"Γραφικά στοιχεία %1$s"
+ "Λίστα γραφικών στοιχείων"
+ "Η λίστα γραφικών στοιχείων έκλεισε"
"Προσθήκη στην αρχική οθόνη"
"Μετακίνηση στοιχείου εδώ"
"Το στοιχείο προστέθηκε στην αρχική οθόνη"
@@ -130,8 +132,7 @@
"Μείωση του ύψους"
"Έγινε προσαρμογή του μεγέθους του γραφικού στοιχείου σε %1$s πλάτος και %2$s ύψος"
"Συντομεύσεις"
-
-
+ "Συντομεύσεις και ειδοποιήσεις"
"Παράβλεψη"
"Η ειδοποίηση παραβλέφθηκε"
"Προσωπικές"
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index cca8e859da..245ee43580 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -108,6 +108,8 @@
"%1$s downloading, %2$s complete"
"%1$s waiting to install"
"%1$s widgets"
+ "Widgets list"
+ "Widgets list closed"
"Add to Home screen"
"Move item here"
"Item added to home screen"
@@ -130,8 +132,7 @@
"Decrease height"
"Widget re-sized to width %1$s height %2$s"
"Short cuts"
- "%1$d shortcuts for %2$s"
- "%1$d shortcuts and %2$d notifications for %3$s"
+ "Shortcuts and notifications"
"Dismiss"
"Notification dismissed"
"Personal"
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index cca8e859da..245ee43580 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -108,6 +108,8 @@
"%1$s downloading, %2$s complete"
"%1$s waiting to install"
"%1$s widgets"
+ "Widgets list"
+ "Widgets list closed"
"Add to Home screen"
"Move item here"
"Item added to home screen"
@@ -130,8 +132,7 @@
"Decrease height"
"Widget re-sized to width %1$s height %2$s"
"Short cuts"
- "%1$d shortcuts for %2$s"
- "%1$d shortcuts and %2$d notifications for %3$s"
+ "Shortcuts and notifications"
"Dismiss"
"Notification dismissed"
"Personal"
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index cca8e859da..245ee43580 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -108,6 +108,8 @@
"%1$s downloading, %2$s complete"
"%1$s waiting to install"
"%1$s widgets"
+ "Widgets list"
+ "Widgets list closed"
"Add to Home screen"
"Move item here"
"Item added to home screen"
@@ -130,8 +132,7 @@
"Decrease height"
"Widget re-sized to width %1$s height %2$s"
"Short cuts"
- "%1$d shortcuts for %2$s"
- "%1$d shortcuts and %2$d notifications for %3$s"
+ "Shortcuts and notifications"
"Dismiss"
"Notification dismissed"
"Personal"
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index f991da7f86..368e4ba633 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -108,6 +108,8 @@
"Se completó el %2$s de la descarga de %1$s"
"Instalación de %1$s en espera"
"Widgets de %1$s"
+ "Lista de widgets"
+ "Se cerró la lista de widgets"
"Agregar a la pantalla principal"
"Mover elemento aquí"
"Se agregó el elemento a la pantalla principal."
@@ -130,8 +132,7 @@
"Reducir la altura"
"Se cambió la dimensión del widget a %1$s de ancho y %2$s de alto."
"Accesos directos"
-
-
+ "Accesos directos y notificaciones"
"Descartar"
"Se descartó la notificación"
"Personales"
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 1dbe8e904d..0829533282 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -108,6 +108,8 @@
"Descargando %1$s (%2$s completado)"
"Esperando para instalar %1$s"
"Widgets de %1$s"
+ "Lista de widgets"
+ "Lista de widgets cerrada"
"Añadir a la pantalla de inicio"
"Mover elemento aquí"
"Elemento añadido a la pantalla de inicio"
@@ -130,8 +132,7 @@
"Reducir altura"
"Se ha modificado el tamaño del widget a %1$s de ancho y %2$s de alto"
"Accesos directos"
-
-
+ "Accesos directos y notificaciones"
"Ignorar"
"Notificación ignorada"
"Personal"
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 94b0103e61..1e5caa6427 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -108,6 +108,8 @@
"Rakenduse %1$s allalaadimine, %2$s on valmis"
"%1$s on installimise ootel"
"Teenuse %1$s vidinad"
+ "Vidinate loend"
+ "Vidinate loend on suletud"
"Lisa avaekraanile"
"Teisalda üksus siia"
"Üksus lisati avaekraanile"
@@ -130,8 +132,7 @@
"Vähenda kõrgust"
"Vidina suurust muudeti. Laius: %1$s. Kõrgus: %2$s"
"Otseteed"
-
-
+ "Otseteed ja märguanded"
"Loobu"
"Märguandest loobuti"
"Isiklik"
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index a13c49325a..b69228a294 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -108,6 +108,8 @@
"%1$s deskargatzen, %2$s osatuta"
"%1$s instalatzeko zain"
"%1$s widgetak"
+ "Widget-zerrenda"
+ "Itxi da widget-zerrenda"
"Gehitu hasierako pantailan"
"Ekarri elementua hona"
"Gehitu da elementua hasierako pantailan"
@@ -130,8 +132,7 @@
"Txikitu altuera"
"Aldatu da widgetaren tamaina. Zabalera: %1$s. Altuera: %2$s."
"Lasterbideak"
-
-
+ "Lasterbideak eta jakinarazpenak"
"Baztertu"
"Baztertu egin da jakinarazpena"
"Pertsonalak"
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index da12ebe7b3..aa06188f21 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -108,6 +108,8 @@
"درحال بارگیری %1$s، %2$s کامل شد"
"%1$s درانتظار نصب"
"ابزارکهای %1$s"
+ "فهرست ابزارکها"
+ "فهرست ابزارکها بسته شد"
"افزودن به صفحه اصلی"
"انتقال مورد به اینجا"
"مورد به صفحه اصلی اضافه شد"
@@ -130,8 +132,7 @@
"کاهش ارتفاع"
"اندازه ابزارک به عرض %1$s ارتفاع %2$s تغییر کرد"
"میانبرها"
-
-
+ "میانبرها و اعلانها"
"رد کردن"
"اعلان رد شد"
"شخصی"
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 96214d30ad..4b361ac3c4 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -108,6 +108,8 @@
"%1$s latautuu, valmiina %2$s"
"%1$s odottaa asennusta"
"Widgetit: %1$s"
+ "Widget-luettelo"
+ "Widget-luettelo suljettu"
"Lisää aloitusnäytölle"
"Siirrä kohde tänne"
"Kohde lisättiin aloitusnäytölle."
@@ -130,8 +132,7 @@
"Vähennä korkeutta"
"Widgetin kokoa muutettiin. Sen leveys on nyt %1$s ja korkeus %2$s."
"Pikakuvakkeet"
-
-
+ "Pikakuvakkeet ja ilmoitukset"
"Hylkää"
"Ilmoitus hylätty"
"Henkilökohtaiset"
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index aebb42df2f..29b003e081 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -108,6 +108,8 @@
"Téléchargement de %1$s : %2$s"
"%1$s en attente d\'installation"
"Widgets pour %1$s"
+ "Liste des widgets"
+ "Liste des widgets fermée"
"Ajouter à l\'écran d\'accueil"
"Déplacer l\'élément ici"
"Élément ajouté à l\'écran d\'accueil"
@@ -130,8 +132,7 @@
"Diminuer la hauteur"
"Le widget a été redimensionné (largeur : %1$s, hauteur : %2$s)"
"Raccourcis"
-
-
+ "Raccourcis et notifications"
"Ignorer"
"Notification ignorée"
"Personnel"
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 6c5c120690..d47ab427ca 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -108,6 +108,8 @@
"%1$s en cours de téléchargement, %2$s effectué(s)"
"%1$s en attente d\'installation"
"Widgets %1$s"
+ "Liste des widgets"
+ "La liste des widgets est fermée"
"Ajouter à l\'écran d\'accueil"
"Déplacer l\'élément ici"
"L\'élément a bien été ajouté à l\'écran d\'accueil."
@@ -130,8 +132,7 @@
"Diminuer la hauteur"
"Le widget a bien été redimensionné (largeur : %1$s, hauteur : %2$s)."
"Raccourcis"
-
-
+ "Raccourcis et notifications"
"Ignorer"
"Notification ignorée"
"Personnelles"
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 4dd7ae71b1..b94d693511 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -108,6 +108,8 @@
"Descargando %1$s (%2$s completado)"
"Esperando para instalar %1$s"
"Widgets de: %1$s"
+ "Lista de widgets"
+ "Pechouse a lista de widgets"
"Engadir á pantalla de inicio"
"Mover elemento aquí"
"Engadiuse o elemento á pantalla de inicio"
@@ -130,8 +132,7 @@
"Reducir altura"
"Cambiouse o tamaño do widget polo ancho %1$s e a altura %2$s"
"Atallos"
-
-
+ "Atallos e notificacións"
"Ignorar"
"Ignorouse a notificación"
"Persoal"
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index aa0b3af1f0..6468d8b753 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -108,6 +108,10 @@
"%1$s ડાઉનલોડ કરી રહ્યાં છે, %2$s પૂર્ણ"
"%1$s, ઇન્સ્ટૉલ થવાની રાહ જોઈ રહ્યું છે"
"%1$s વિજેટ"
+
+
+
+
"હોમ સ્ક્રીન પર ઉમેરો"
"આઇટમ અહીં ખસેડો"
"હોમ સ્ક્રીનમાં આઇટમ ઉમેરી"
@@ -130,8 +134,7 @@
"ઊંચાઈ ઘટાડો"
"વિજેટનો આકાર બદલીને %1$s પહોળાઈ %2$s ઊંચાઈ કર્યો"
"શૉર્ટકટ્સ"
-
-
+ "શૉર્ટકટ અને નોટિફિકેશનો"
"છોડી દો"
"સૂચના છોડી દીધી"
"મનગમતી ઍપ"
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 1b47fcbbea..1b5ce26794 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -108,6 +108,10 @@
"%1$s डाउनलोड हो रहा है, %2$s पूर्ण"
"%1$s के इंस्टॉल होने की प्रतीक्षा की जा रही है"
"%1$s विजेट"
+
+
+
+
"होम स्क्रीन में जोड़ें"
"आइटम यहां ले जाएं"
"होम स्क्रीन में आइटम जोड़ा गया"
@@ -130,8 +134,7 @@
"ऊंचाई घटाएं"
"विजेट का आकार बदलकर उसकी चौड़ाई %1$s और ऊंचाई %2$s कर दी गई"
"शॉर्टकट"
-
-
+ "शॉर्टकट और सूचनाएं"
"खारिज करें"
"सूचना को खारिज किया गया"
"निजी ऐप"
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 077da67e25..ea340d68a7 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -109,6 +109,8 @@
"Preuzimanje aplikacije %1$s, dovršeno %2$s"
"Čekanje na instaliranje aplikacije %1$s"
"%1$s widgeti"
+ "Popis widgeta"
+ "Popis widgeta zatvoren"
"Dodavanje na početni zaslon"
"Premjesti stavku ovdje"
"Stavka je dodana na početni zaslon"
@@ -131,8 +133,7 @@
"Smanjenje visine"
"Širina widgeta promijenjena je na %1$s, a visina na %2$s"
"Prečaci"
-
-
+ "Prečaci i obavijesti"
"Odbaci"
"Obavijest je odbačena"
"Osobno"
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 797bde44ad..7b8738186e 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -108,6 +108,8 @@
"A(z) %1$s letöltése, %2$s kész"
"A(z) %1$s telepítésre vár"
"%1$s-modulok"
+ "Widgetlista"
+ "Widgetlista bezárva"
"Hozzáadás a kezdőképernyőhöz"
"Elem áthelyezése ide"
"Elem hozzáadva a kezdőképernyőhöz"
@@ -130,8 +132,7 @@
"Magasság csökkentése"
"Modul átméretezve %1$s szélességre és %2$s magasságra"
"Gyorsparancsok"
-
-
+ "Parancsikonok és értesítések"
"Elvetés"
"Értesítés elvetve"
"Személyes"
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 79210f3a77..2b4a38bd7b 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -108,6 +108,8 @@
"%1$s–ի ներբեռնում (%2$s)"
"%1$s-ի տեղադրման սպասում"
"%1$s վիջեթներ"
+ "Վիջեթների ցանկ"
+ "Վիջեթների ցանկը փակվեց"
"Ավելացնել Հիմնական էկրանին"
"Տեղափոխել տարրն այստեղ"
"Տարրն ավելացվեց հիմնական էկրանին"
@@ -130,8 +132,7 @@
"Նվազեցնել բարձրությունը"
"Վիջեթի լայնությունը փոխվել է %1$s-ի, իսկ բարձրությունը՝ %2$s-ի"
"Դյուրանցումներ"
-
-
+ "Դյուրանցումներ և ծանուցումներ"
"Անտեսել"
"Ծանուցումը մերժված է"
"Անձնական"
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 6e8f46a2cd..78ffc96845 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -108,6 +108,8 @@
"%1$s sedang didownload, %2$s selesai"
"%1$s menunggu dipasang"
"Widget %1$s"
+ "Daftar widget"
+ "Daftar widget ditutup"
"Tambahkan ke Layar Utama"
"Pindahkan item ke sini"
"Item ditambahkan ke layar utama"
@@ -130,8 +132,7 @@
"Kurangi tinggi"
"Widget diubah ukurannya menjadi lebar %1$s tinggi %2$s"
"Pintasan"
-
-
+ "Pintasan dan notifikasi"
"Tutup"
"Notifikasi ditutup"
"Pribadi"
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index 49843b668c..04842e4f4b 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -108,6 +108,8 @@
"%1$s í niðurhali, %2$s lokið"
"%1$s bíður uppsetningar"
"%1$s-græjur"
+ "Græjulisti"
+ "Græjulista lokað"
"Bæta á heimaskjá"
"Færa atriði hingað"
"Atriði bætt á heimaskjáinn"
@@ -130,8 +132,7 @@
"Minnka hæð"
"Stærð græju breytt í %1$s á breidd og %2$s á hæð"
"Flýtileiðir"
-
-
+ "Flýtileiðir og tilkynningar"
"Hunsa"
"Tilkynningu lokað"
"Persónulegt"
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 5fc68a51b5..28a8f93564 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -108,6 +108,8 @@
"Download di %1$s in corso, %2$s completato"
"%1$s in attesa di installazione"
"Widget di %1$s"
+ "Elenco di widget"
+ "Elenco di widget chiuso"
"Aggiungi a schermata Home"
"Sposta elemento qui"
"Elemento aggiunto alla schermata Home"
@@ -130,8 +132,7 @@
"Riduci altezza"
"Widget ridimensionato a larghezza %1$s, altezza %2$s"
"Scorciatoie"
-
-
+ "Scorciatoie e notifiche"
"Ignora"
"Notifica ignorata"
"Personali"
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 806aeefb5c..d4302c66c3 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -110,6 +110,8 @@
"מוריד את %1$s, %2$s הושלמו"
"מחכה להתקנה של %1$s"
"ווידג\'טים של %1$s"
+ "רשימת ווידג\'טים"
+ "רשימת הווידג\'טים נסגרה"
"הוסף למסך דף הבית"
"העבר את הפריט לכאן"
"הפריט הועבר אל מסך דף הבית"
@@ -132,8 +134,7 @@
"הקטן גובה"
"גודל הווידג\'ט שונה - רוחב %1$s גובה %2$s"
"קיצורי דרך"
-
-
+ "קיצורי דרך והודעות"
"סגור"
"ההודעה נסגרה"
"אישיות"
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index baa59ab94e..2598d1839e 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -108,6 +108,8 @@
"%1$sをダウンロード中、%2$s完了"
"%1$sのインストール待ち"
"%1$sのウィジェット"
+ "ウィジェット リスト"
+ "ウィジェット リストを閉じました"
"ホーム画面に追加"
"アイテムをここに移動"
"アイテムをホーム画面に追加しました"
@@ -130,8 +132,7 @@
"高さを低くする"
"ウィジェットのサイズを幅%1$s、高さ%2$sに変更しました"
"ショートカット"
-
-
+ "ショートカットと通知"
"表示しない"
"通知を非表示にしました"
"個人用"
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index 64c8573e12..3bdbab7423 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -108,6 +108,8 @@
"მიმდინარეობს %1$s-ის ჩამოტვირთვა, %2$s დასრულდა"
"%1$s ელოდება ინსტალაციას"
"%1$s-ის ვიჯეტები"
+ "ვიჯეტების სია"
+ "ვიჯეტების სია დაიხურა"
"მთავარ ეკრანზე დამატება"
"ერთეულის გადაადგილება აქ"
"ერთეული დაემატა მთავარ ეკრანს"
@@ -130,8 +132,7 @@
"სიმაღლის შემცირება"
"ვიჯეტის ზომები შეიცვალა: სიგანე %1$s სიმაღლე %2$s"
"მალსახმობები"
-
-
+ "მალსახმობები და შეტყობინებები"
"დახურვა"
"შეტყობინება დაიხურა"
"პირადი"
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index 2ad595458d..98afcccfe0 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -108,6 +108,8 @@
"%1$s жүктелуде, %2$s аяқталды"
"%1$s орнату күтілуде"
"%1$s виджеті"
+ "Виджеттер тізімі"
+ "Видджеттер тізімі жабылды"
"Негізгі экранға қосу"
"Элементті мұнда жылжыту"
"Элемент негізгі экранға қосылды"
@@ -130,8 +132,7 @@
"Биіктігін азайту"
"Виджет өлшемінің ені %1$s, биіктігі %2$s болып өзгертілді"
"Таңбашалар"
-
-
+ "Таңбашалар мен хабарландырулар"
"Бас тарту"
"Хабарландырудан бас тартылды"
"Жеке"
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index e3659c99ff..ba8d775a62 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -108,6 +108,8 @@
"កំពុងដោនឡូត %1$s បានបញ្ចប់ %2$s"
"%1$s កំពុងរង់ចាំការដំឡើង"
"ធាតុក្រាហ្វិក %1$s"
+ "បញ្ជីធាតុក្រាហ្វិក"
+ "បានបិទបញ្ជីធាតុក្រាហ្វិក"
"បន្ថែមទៅអេក្រង់ដើម"
"ផ្លាស់ធាតុមកទីនេះ"
"ធាតុដែលត្រូវបានបន្ថែមទៅអេក្រង់ដើម"
@@ -130,8 +132,7 @@
"បន្ថយកម្ពស់"
"ធាតុក្រាហ្វិកដែលបានប្តូរទំហំទៅទទឹងប្រវែង %1$s កម្ពស់ប្រវែង %2$s"
"ផ្លូវកាត់"
-
-
+ "ផ្លូវកាត់ និងការជូនដំណឹង"
"បដិសេធ"
"បានបដិសេធការជូនដំណឹង"
"ផ្ទាល់ខ្លួន"
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index 7a68378d2a..e73ff39da0 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -108,6 +108,10 @@
"%1$s ಡೌನ್ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ, %2$s ಪೂರ್ಣಗೊಂಡಿದೆ"
"%1$s ಸ್ಥಾಪಿಸಲು ಕಾಯಲಾಗುತ್ತಿದೆ"
"%1$s ವಿಜೆಟ್ಗಳು"
+
+
+
+
"ಮುಖಪುಟಕ್ಕೆ ಸೇರಿಸು"
"ಐಟಂ ಇಲ್ಲಿಗೆ ಸರಿಸಿ"
"ಮುಖಪುಟ ಪರದೆಗೆ ಐಟಂ ಸೇರಿಸಲಾಗಿದೆ"
@@ -130,8 +134,7 @@
"ಎತ್ತರವನ್ನು ಕಡಿಮೆ ಮಾಡಿ"
"ವಿಜೆಟ್ ಅನ್ನು %1$s ಅಗಲ %2$s ಎತ್ತರಕ್ಕೆ ಮರುಗಾತ್ರಗೊಳಿಸಲಾಗಿದೆ"
"ಶಾರ್ಟ್ಕಟ್ಗಳು"
-
-
+ "ಶಾರ್ಟ್ಕಟ್ಗಳು ಮತ್ತು ಅಧಿಸೂಚನೆಗಳು"
"ವಜಾಗೊಳಿಸಿ"
"ಅಧಿಸೂಚನೆಯನ್ನು ವಜಾಗೊಳಿಸಲಾಗಿದೆ"
"ವೈಯಕ್ತಿಕ"
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 4a6f3faa10..5e68b1733e 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -108,6 +108,8 @@
"%1$s 다운로드 중, %2$s 완료"
"%1$s 설치 대기 중"
"%1$s 위젯"
+ "위젯 목록"
+ "위젯 목록 닫힘"
"홈 화면에 추가"
"여기에 항목을 이동"
"홈 화면에 항목 추가됨"
@@ -130,8 +132,7 @@
"높이 줄이기"
"폭 %1$s, 높이 %2$s로 위젯 크기 조정됨"
"바로가기"
-
-
+ "바로가기 및 알림"
"닫기"
"알림이 해제되었습니다."
"개인"
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index ce0dc3f866..da7813e741 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -108,6 +108,8 @@
"%1$s жүктөлүп алынууда, %2$s аяктады"
"%1$s орнотулушу күтүлүүдө"
"%1$s виджеттери"
+ "Виджеттердин тизмеси"
+ "Виджеттердин тизмеси жабык"
"Башкы экранга кошуу"
"Бул нерсени бул жерге жылдыруу"
"Башкы экранга кошулду"
@@ -130,8 +132,7 @@
"Жапыздатуу"
"Виджеттин кеңдиги %1$s бийиктиги %2$s болду"
"Кыска жолдор"
-
-
+ "Кыска жолдор жана билдирмелер"
"Этибарга албоо"
"Эскертме көз жаздымда калтырылды"
"Жеке колдонмолор"
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index a195eaf97f..d0d127f996 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -108,6 +108,8 @@
"%1$s ກຳລັງດາວໂຫຼດ, %2$s ສຳເລັດ"
"%1$s ກຳລັງລໍຖ້າຕິດຕັ້ງ"
"ວິດເຈັດ %1$s"
+ "ລາຍຊື່ວິດເຈັດ"
+ "ປິດລາຍຊື່ວິດເຈັດແລ້ວ"
"ເພີ່ມໃສ່ໜ້າຈໍຫຼັກ"
"Move item here"
"ເພີ່ມລາຍການໃສ່ໜ້າຈໍຫຼັກແລ້ວ"
@@ -130,8 +132,7 @@
"ຫຼຸດລວງສູງລົງ"
"ປ່ຽນຂະໜາດວິດເຈັດເປັນລວງກ້ວາງ %1$s ລວງສູງ %2$s ແລ້ວ"
"ທາງລັດ"
-
-
+ "ປຸ່ມລັດ ແລະ ການແຈ້ງເຕືອນ"
"ປິດໄວ້"
"ປິດການແຈ້ງເຕືອນແລ້ວ"
"ສ່ວນຕົວ"
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index ac8684c012..c323fd838f 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -110,6 +110,8 @@
"Atsisiunčiama programa „%1$s“, %2$s baigta"
"Laukiama, kol bus įdiegta programa „%1$s“"
"„%1$s“ valdikliai"
+ "Valdiklių sąrašas"
+ "Valdiklių sąrašas uždarytas"
"Pridėti prie pagrind. ekrano"
"Perkelti elementą čia"
"Elementas pridėtas prie pagrindinio ekrano"
@@ -132,8 +134,7 @@
"Sumažinti aukštį"
"Valdiklio dydis pakeistas: plotis – %1$s, aukštis – %2$s"
"Spartieji klavišai"
-
-
+ "Spartieji klavišai ir pranešimai"
"Atsisakyti"
"Pranešimo atsisakyta"
"Asmeninės"
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 0ed4093184..be03811c9a 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -109,6 +109,8 @@
"Lietotnes %1$s lejupielāde (%2$s pabeigti)"
"Notiek %1$s instalēšana"
"%1$s logrīki"
+ "Logrīku saraksts"
+ "Logrīku saraksts aizvērts"
"Pievienot sākuma ekrānam"
"Pārvietot vienumu šeit"
"Vienums pievienots sākuma ekrānam"
@@ -131,8 +133,7 @@
"Samazināt augstumu"
"Logrīka lielums mainīts — platums: %1$s, augstums: %2$s."
"Saīsnes"
-
-
+ "Saīsnes un paziņojumi"
"Nerādīt"
"Paziņojums netiek rādīts"
"Personīgās lietotnes"
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 3a033153e4..e5dd02776b 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -108,6 +108,8 @@
"Се презема %1$s, %2$s завршено"
"%1$s чека да се инсталира"
"Виџети за %1$s"
+ "Список со виџети"
+ "Списокот со виџети е затворен"
"Додај на Почетен екран"
"Премести ја ставката овде"
"Ставката е додадена на почетниот екран"
@@ -130,8 +132,7 @@
"Намали висина"
"Големината на виџетот е променета на ширина %1$s висина %2$s"
"Кратенки"
-
-
+ "Кратенки и известувања"
"Отфрли"
"Известувањето е отфрлено"
"Лично"
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index 7ad2803df9..d6a2fd1a92 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -108,6 +108,10 @@
"%1$s ഡൗൺലോഡ് ചെയ്യുന്നു, %2$s പൂർത്തിയായി"
"ഇൻസ്റ്റാൾ ചെയ്യാൻ %1$s കാക്കുന്നു"
"%1$s വിജറ്റുകൾ"
+
+
+
+
"ഹോം സ്ക്രീനിൽ ചേർക്കുക"
"ഇനം ഇവിടേക്ക് നീക്കുക"
"ഹോം സ്ക്രീനിൽ ഇനം ചേർത്തു"
@@ -130,8 +134,7 @@
"ഉയരം കുറയ്ക്കുക"
"വീതി %1$s ഉയരം %2$s-ലേക്ക് വിഡ്ജെറ്റിന്റെ വലുപ്പം മാറ്റി"
"കുറുക്കുവഴികൾ"
-
-
+ "കുറുക്കുവഴികളും അറിയിപ്പുകളും"
"നിരസിക്കുക"
"അറിയിപ്പ് നിരസിച്ചു"
"വ്യക്തിപരം"
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index 3dcc49542b..9fbb1e51e4 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -108,6 +108,8 @@
"%1$s-г татаж байна, %2$s татсан"
"%1$s нь суулгахыг хүлээж байна"
"%1$s жижиг хэрэгсэл"
+ "Жижиг хэрэгслийн жагсаалт"
+ "Жижиг хэрэгслийн жагсаалтыг хаасан"
"Нүүр дэлгэц нэмэх"
"Энд байршуулах"
"Нүүр дэлгэцэнд нэмсэн зүйл"
@@ -130,8 +132,7 @@
"Намсгах"
"Виджэтийн өргөн %1$s, өндөр %2$s болсон"
"Товчлол"
-
-
+ "Товчлол болон мэдэгдэл"
"Хаах"
"Мэдэгдлийг хаасан"
"Хувийн"
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index 7b9aebd8a8..a297e06491 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -108,6 +108,8 @@
"%1$s डाउनलोड होत आहे , %2$s पूर्ण झाले"
"%1$s इंस्टॉल करण्याची प्रतिक्षा करत आहे"
"%1$s विजेट"
+ "विजेट सूची"
+ "विजेट सूची बंद केली"
"होम स्क्रीनवर जोडा"
"आयटम येथे हलवा"
"आयटम मुख्य स्क्रीनवर जोडला"
@@ -130,8 +132,7 @@
"उंची कमी करा"
"विजेटचा आकार रुंदी %1$s उंची %2$s मध्ये बदलला"
"शॉर्टकट"
-
-
+ "शॉर्टकट आणि सूचना"
"डिसमिस करा"
"सूचना डिसमिस केली"
"वैयक्तिक"
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index ea178b89d7..71047fbc50 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -108,6 +108,8 @@
"%1$s memuat turun, %2$s selesai"
"%1$s menunggu untuk dipasang"
"Widget %1$s"
+ "Senarai widget"
+ "Senarai widget ditutup"
"Tambahkan pada Skrin Utama"
"Alihkan item ke sini"
"Item ditambahkan pada skrin utama"
@@ -130,8 +132,7 @@
"Kurangkan ketinggian"
"Saiz widget diubah menjadi %1$s lebar %2$s tinggi"
"Pintasan"
-
-
+ "Pintasan dan pemberitahuan"
"Ketepikan"
"Pemberitahuan diketepikan"
"Peribadi"
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index 315ebf5700..6c261853a4 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -108,6 +108,8 @@
"%1$s ဒေါင်းလုဒ်လုပ်နေသည်၊ %2$s ပြီးပါပြီ"
"%1$s ကိုထည့်သွင်းရန်စောင့်နေသည်"
"%1$s ဝိဂျက်များ"
+ "ဝိဂျက်စာရင်း"
+ "ဝိဂျက်စာရင်းကို ပိတ်ထားသည်"
"ပင်မမျက်နှာစာသို့ ထည့်ပါ"
"၎င်းအား ဤသို့ ရွှေ့ပါ"
"ပင်မ ဖန်မျက်နှာပြင်သို့ ထည့်ပြီး၏"
@@ -130,8 +132,7 @@
"အမြင့်အား လျှော့ပါ"
"Widget အား အကျယ် %1$s အမြင့် %2$s အရွယ်အစားပြန်လည်ချိန်ညှိပြီး၏"
"ဖြတ်လမ်းများ"
-
-
+ "ဖြတ်လမ်းလင့်ခ်နှင့် အကြောင်းကြားချက်များ"
"ပယ်ရန်"
"အသိပေးချက်ကို ဖယ်ထုတ်ပြီးပါပြီ"
"ကိုယ်ပိုင်"
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index d5beead867..67a912b08a 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -108,6 +108,8 @@
"Laster ned %1$s, %2$s er fullført"
"Venter på å installere %1$s"
"%1$s-moduler"
+ "Modulliste"
+ "Modullisten er lukket"
"Legg til på startskjermen"
"Flytt elementet hit"
"Elementet er lagt til på startskjermen"
@@ -130,8 +132,7 @@
"Reduser høyden"
"Størrelsen på modulen er endret til bredde %1$s og høyde %2$s"
"Snarveier"
-
-
+ "Snarveier og varsler"
"Avvis"
"Varselet ble avvist"
"Personlig"
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index f44c47bd90..50c427969c 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -108,6 +108,10 @@
"%1$s डाउनलोड गर्दै, %2$s सम्पन्न"
"%1$s स्थापना गर्न प्रतीक्षा गर्दै"
"%1$s विजेटहरू"
+
+
+
+
"गृह स्क्रिनमा थप्नुहोस्"
"वस्तु यहाँ सार्नुहोस्"
"वस्तु गृह स्क्रिनमा थपियो"
@@ -130,8 +134,7 @@
"उँचाइ घटाउनुहोस्"
"विजेट चौडाइ %1$s उचाइ %2$s मा पुनः आकार मिलाइयो"
"सर्टकटहरू"
-
-
+ "सर्टकट तथा सूचनाहरू"
"खारेज गर्नुहोस्"
"सूचना खारेज गरियो"
"व्यक्तिगत"
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index e1c059ad48..64f4d7912b 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -108,6 +108,8 @@
"%1$s wordt gedownload, %2$s voltooid"
"%1$s wacht op installatie"
"%1$s-widgets"
+ "Lijst met widgets"
+ "Lijst met widgets gesloten"
"Toevoegen aan startscherm"
"Item hier naartoe verplaatsen"
"Item toegevoegd aan startscherm"
@@ -130,8 +132,7 @@
"Hoogte verkleinen"
"Formaat van widget gewijzigd in breedte %1$s en hoogte %2$s"
"Snelkoppelingen"
-
-
+ "Snelkoppelingen en meldingen"
"Sluiten"
"Melding gesloten"
"Privé"
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index 9152b43c45..5fa6607bf9 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -108,6 +108,10 @@
"%1$s ଡାଉନଲୋଡ୍ ହେଉଛି, %2$s ସମ୍ପୂର୍ଣ୍ଣ"
"%1$s ଇନଷ୍ଟଲ୍ ହେବାକୁ ଅପେକ୍ଷା କରିଛି"
"%1$s ୱିଜେଟ୍"
+
+
+
+
"ହୋମ୍ ସ୍କ୍ରୀନରେ ଯୋଡ଼ନ୍ତୁ"
"ଆଇଟମ୍କୁ ଏଠାକୁ ଘୁଞ୍ଚାନ୍ତୁ"
"ହୋମ୍ ସ୍କ୍ରୀନରେ ଆଇଟମ୍ ଯୋଡ଼ାଗଲା"
@@ -130,8 +134,7 @@
"ଉଚ୍ଚତା କମ୍ କରନ୍ତୁ"
"ୱିଜେଟକୁ %1$s ଓସାର ଓ %2$s ଉଚ୍ଚରେ ପୁନଃଆକାର ଦିଆଗଲା"
"ଶର୍ଟକଟ୍"
-
-
+ "ଶର୍ଟକଟ୍ ଓ ବିଜ୍ଞପ୍ତି"
"ଖାରଜ କରନ୍ତୁ"
"ବିଜ୍ଞପ୍ତି ଖାରଜ କରାଗଲା"
"ବ୍ୟକ୍ତିଗତ"
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 237e5190af..3400e7bdcf 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -108,6 +108,10 @@
"%1$s ਡਾਉਨਲੋਡ ਹੋਰ ਰਿਹਾ ਹੈ, %2$s ਸੰਪੂਰਣ"
"%1$s ਸਥਾਪਤ ਕਰਨ ਦੀ ਉਡੀਕ ਕਰ ਰਿਹਾ ਹੈ"
"%1$s ਵਿਜੇਟ"
+
+
+
+
"ਹੋਮ ਸਕ੍ਰੀਨ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ"
"ਆਈਟਮ ਨੂੰ ਇੱਥੇ ਮੂਵ ਕਰੋ"
"ਆਈਟਮ ਨੂੰ ਹੋਮ ਸਕ੍ਰੀਨ ਵਿੱਚ ਜੋੜਿਆ ਗਿਆ"
@@ -130,8 +134,7 @@
"ਉਂਚਾਈ ਘਟਾਓ"
"ਵਿਜੈਟ ਨੂੰ ਚੌੜਾਈ %1$s ਉਂਚਾਈ %2$s ਨੂੰ ਮੁੜ ਆਕਾਰ ਦਿੱਤਾ"
"ਸ਼ਾਰਟਕੱਟ"
-
-
+ "ਸ਼ਾਰਟਕੱਟ ਅਤੇ ਸੂਚਨਾਵਾਂ"
"ਖਾਰਜ ਕਰੋ"
"ਸੂਚਨਾ ਖਾਰਜ ਕੀਤੀ ਗਈ"
"ਨਿੱਜੀ"
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 65de77703c..776f39dce4 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -110,6 +110,8 @@
"Pobieranie elementu %1$s, ukończono: %2$s"
"%1$s oczekuje na instalację"
"%1$s – widżety"
+ "Lista widgetów"
+ "Lista widgetów zamknięta"
"Dodaj do strony głównej"
"Przenieś element tutaj"
"Element został dodany do ekranu głównego"
@@ -132,8 +134,7 @@
"Zmniejsz wysokość"
"Szerokość i wysokość widżetu zmieniła się na %1$s x %2$s"
"Skróty"
-
-
+ "Skróty i powiadomienia"
"Odrzuć"
"Powiadomienie odrzucone"
"Osobiste"
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 48dcebb425..40105915ce 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -108,6 +108,8 @@
"A transferir o %1$s, %2$s concluído"
"A aguardar a instalação do %1$s"
"Widgets de %1$s"
+ "Lista de widgets"
+ "Lista de widgets fechada."
"Adicionar ao Ecrã principal"
"Mover o item para aqui"
"Item adicionado ao ecrã principal"
@@ -130,8 +132,7 @@
"Diminuir altura"
"Widget redimensionado para a largura %1$s, altura %2$s"
"Atalhos"
-
-
+ "Atalhos e notificações"
"Ignorar"
"Notificação ignorada"
"Pessoal"
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 25bde0add8..6238e7aefc 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -108,6 +108,8 @@
"Fazendo download de %1$s, %2$s concluído"
"Aguardando instalação de %1$s"
"Widgets do %1$s"
+ "Lista de widgets"
+ "Lista de widgets fechada"
"Adicionar à tela inicial"
"Mover item para cá"
"Item adicionado à tela inicial"
@@ -130,8 +132,7 @@
"Diminuir altura"
"Widget redimensionado para a largura %1$s, altura %2$s"
"Atalhos"
-
-
+ "Atalhos e notificações"
"Dispensar"
"Notificação dispensada"
"Pessoais"
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 1af37eb709..fb5fb96232 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -109,6 +109,8 @@
"%1$s se descarcă (finalizat %2$s)"
"%1$s așteaptă instalarea"
"Widgeturi %1$s"
+ "Listă de widgeturi"
+ "Lista de widgeturi este închisă"
"Adăugați pe ecranul de pornire"
"Mutați elementul aici"
"Element adăugat pe ecranul de pornire"
@@ -131,8 +133,7 @@
"Reduceți înălțimea"
"Widgetul a fost redimensionat la lățimea %1$s și înălțimea %2$s"
"Comenzi rapide"
- "%1$d comenzi rapide pentru %2$s"
- "%1$d comenzi rapide și %2$d notificări pentru %3$s"
+ "Comenzi rapide și notificări"
"Închideți"
"Notificare închisă"
"Personale"
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 74809dde43..dd70521a8f 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -110,6 +110,8 @@
"Скачивается \"%1$s\" (%2$s)"
"Ожидание установки \"%1$s\""
"%1$s: виджеты"
+ "Список виджетов"
+ "Список виджетов закрыт"
"Добавить на главный экран"
"Переместить элемент сюда"
"Элемент добавлен на главный экран"
@@ -132,8 +134,7 @@
"Уменьшить высоту"
"Изменен размер виджета: до %1$s в ширину и %2$s в высоту"
"Ярлыки"
-
-
+ "Ярлыки и уведомления"
"Закрыть"
"Уведомление закрыто"
"Личные"
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index 10835dc5ce..ee6112488c 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -108,6 +108,8 @@
"%1$s බාගත කරමින්, %2$s සම්පූර්ණයි"
"%1$s ස්ථාපනය කිරීමට බලා සිටිමින්"
"%1$s විජට්"
+ "විජට් ලැයිස්තුව"
+ "විජට් ලැයිස්තුව වසා ඇත"
"මුල් තිරය වෙත එක් කරන්න"
"මෙතනට අයිතමය ගෙන එන්න"
"අයිතමය මුල් තිරය වෙත එකතු කරන ලදි"
@@ -130,8 +132,7 @@
"උස අඩු කරන්න"
"විජට් පළල %1$s උස %2$s වෙත ප්රමාණකරණය කරන ලදි"
"කෙටිමං"
- "%2$s සඳහා කෙටි මං %1$d"
- "%3$s සඳහා කෙටි මං %1$dක් සහ දැනුම්දීම් %2$dක්"
+ "කෙටි මං සහ දැනුම්දීම්"
"ඉවතලන්න"
"දැනුම්දීම ඉවතලන ලදී"
"පුද්ගලික"
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index cbffd1b25b..649aecc8a8 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -110,6 +110,8 @@
"Sťahuje sa aplikácia %1$s. Stiahnuté: %2$s"
"Aplikácia %1$s čaká na inštaláciu"
"Miniaplikácie %1$s"
+ "Zoznam miniaplikácií"
+ "Zoznam miniaplikácií je zavretý"
"Pridať na plochu"
"Presunúť položku sem"
"Položka bola pridaná na plochu"
@@ -132,8 +134,7 @@
"Znížiť výšku"
"Veľkosť miniaplikácie bola zmenená na %1$s x %2$s (šírka x výška)"
"Skratky"
-
-
+ "Odkazy a upozornenia"
"Zavrieť"
"Upozornenie bolo zavreté"
"Osobné"
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index df934cd2fd..aa3bc4fc57 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -110,6 +110,8 @@
"Prenašanje aplikacije %1$s; preneseno %2$s"
"Aplikacija %1$s čaka na namestitev"
"Pripomočki za %1$s"
+ "Seznam pripomočkov"
+ "Seznam pripomočkov se je zaprl"
"Dodajanje na začetni zaslon"
"Premik elementa sem"
"Element je bil dodan na začetni zaslon"
@@ -132,8 +134,7 @@
"Zmanjšanje višine"
"Velikost pripomočka je bila spremenjena na %1$s širine in %2$s višine"
"Bližnjice"
-
-
+ "Bližnjice in obvestila"
"Opusti"
"Obvestilo je bilo opuščeno"
"Osebno"
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index ef7cde70e5..8cf0a8198f 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -108,6 +108,8 @@
"%1$s po shkarkohet, %2$s të përfunduara"
"%1$s po pret të instalohet"
"Miniaplikacionet e %1$s"
+ "Lista e miniaplikacioneve"
+ "Lista e miniaplikacioneve u mbyll"
"Shto në Ekranin bazë"
"Zhvendose artikullin këtu"
"Artikulli u shtua tek ekrani bazë"
@@ -130,8 +132,7 @@
"Zvogëlo lartësinë"
"Madhësia e miniaplikacionit u ndryshua me gjerësinë %1$s dhe lartësinë %2$s"
"Shkurtoret"
-
-
+ "Shkurtoret dhe njoftimet"
"Hiqe"
"Njoftimi u hoq"
"Personale"
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index d4223a8a1e..42522a579b 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -109,6 +109,8 @@
"%1$s се преузима, завршено је %2$s"
"%1$s чека на инсталирање"
"Виџети за %1$s"
+ "Листа виџета"
+ "Листа виџета је затворена"
"Додај на почетни екран"
"Премести ставку овде"
"Ставка је додата на почетни екран"
@@ -131,8 +133,7 @@
"Смањи висину"
"Величина виџета је промењена на ширину %1$s и висину %2$s"
"Пречице"
-
-
+ "Пречице и обавештења"
"Одбаци"
"Обавештење је одбачено"
"Личне"
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 2fda5e24a6..957a4cb2d4 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -108,6 +108,8 @@
"%1$s laddas ned, %2$s klart"
"%1$s väntar på installation"
"%1$s widgetar"
+ "Widgetlista"
+ "Widgetslistan har stängts"
"Lägg till på startskärmen"
"Flytta objekt hit"
"Objektet har lagts till på startskärmen"
@@ -130,8 +132,7 @@
"Minska höjden"
"Widgetens storlek har ändrats till: bredd %1$s, höjd %2$s"
"Genvägar"
-
-
+ "Genvägar och aviseringar"
"Ignorera"
"Aviseringen togs bort"
"Privat"
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 5981b8684f..faa40a71c2 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -110,6 +110,8 @@
"%1$s inapakuliwa, %2$s imekamilika"
"%1$s inasubiri kusakinisha"
"Wijeti za %1$s"
+ "Orodha ya wijeti"
+ "Orodha ya wijeti imefungwa"
"Ongeza kwenye skrini ya Kwanza"
"Hamishia kipengee hapa"
"Kipengee kimeongezwa kwenye skrini ya kwanza"
@@ -132,8 +134,7 @@
"Punguza urefu"
"Wijeti imepunguzwa hadi upana %1$s urefu %2$s"
"Njia za mkato"
-
-
+ "Arifa na njia za mkato"
"Ondoa"
"Arifa imeondolewa"
"Binafsi"
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 5ff5ecc44b..983a0d1f2d 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -108,6 +108,10 @@
"%1$sஐப் பதிவிறக்குகிறது, %2$s முடிந்தது"
"%1$sஐ நிறுவுவதற்காகக் காத்திருக்கிறது"
"%1$s விட்ஜெட்டுகள்"
+
+
+
+
"முகப்புத் திரையில் சேர்"
"இங்கு நகர்த்து"
"முகப்புத் திரையில் சேர்க்கப்பட்டது"
@@ -130,8 +134,7 @@
"உயரத்தைக் குறை"
"அகலம் %1$s மற்றும் உயரம் %2$sக்கு விட்ஜெட் அளவு மாற்றப்பட்டது"
"குறுக்குவழிகள்"
-
-
+ "ஷார்ட்கட்கள் மற்றும் அறிவிப்புகள்"
"நிராகரி"
"அறிவிப்பு நிராகரிக்கப்பட்டது"
"தனிப்பட்டவை"
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index 0967119eae..a18d6496a6 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -108,6 +108,10 @@
"%1$s డౌన్లోడ్ అవుతోంది, %2$s పూర్తయింది"
"%1$s ఇన్స్టాల్ కావడానికి వేచి ఉంది"
"%1$s విడ్జెట్లు"
+
+
+
+
"హోమ్ స్క్రీన్కు జోడించు"
"అంశాన్ని ఇక్కడికి తరలించు"
"అంశం హోమ్స్క్రీన్కి జోడించబడింది"
@@ -130,8 +134,7 @@
"ఎత్తును తగ్గించు"
"విడ్జెట్ పరిమాణం వెడల్పు %1$sకి, ఎత్తు %2$sకి మార్చబడింది"
"సత్వరమార్గాలు"
-
-
+ "షార్ట్కట్లు మరియు నోటిఫికేషన్లు"
"తీసివేయి"
"నోటిఫికేషన్ తీసివేయబడింది"
"వ్యక్తిగతం"
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 52ea7521ed..2da32de6fd 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -108,6 +108,8 @@
"กำลังดาวน์โหลด %1$s เสร็จแล้ว %2$s"
"%1$s กำลังรอติดตั้ง"
"วิดเจ็ตของ %1$s"
+ "รายการวิดเจ็ต"
+ "ปิดรายการวิดเจ็ตแล้ว"
"เพิ่มลงในหน้าแรก"
"ย้ายรายการมาที่นี่"
"เพิ่มรายการไปยังหน้าจอหลักแล้ว"
@@ -130,8 +132,7 @@
"ลดความสูง"
"ปรับขนาดของวิดเจ็ตเป็นกว้าง %1$s สูง %2$s แล้ว"
"ทางลัด"
-
-
+ "ทางลัดและการแจ้งเตือน"
"ปิด"
"ปิดการแจ้งเตือนแล้ว"
"ส่วนตัว"
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 0047aaeb30..68d52591f0 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -108,6 +108,8 @@
"Dina-download na ang %1$s, tapos na ang %2$s"
"Hinihintay nang mag-install ang %1$s"
"Mga widget ng %1$s"
+ "Listahan ng mga widget"
+ "Nakasara ang listahan ng mga widget"
"Idagdag sa Home screen"
"Ilipat ang item dito"
"Naidagdag sa home screen ang item"
@@ -130,8 +132,7 @@
"Bawasan ang taas"
"Na-resize ang widget sa lapad %1$s taas %2$s"
"Mga Shortcut"
-
-
+ "Mga shortcut at notification"
"I-dismiss"
"Na-dismiss ang notification"
"Personal"
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index cfa9f9eaf3..af121f237f 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -108,6 +108,8 @@
"%1$s indiriliyor, %2$s tamamlandı"
"%1$s uygulaması yüklenmek için bekliyor"
"%1$s widget\'ları"
+ "Widget listesi"
+ "Widget listesi kapalı"
"Ana ekrana ekle"
"Öğeyi buraya taşı"
"Öğe ana ekrana eklendi"
@@ -130,8 +132,7 @@
"Yüksekliği azalt"
"Widget, %1$s genişlik ve %2$s yükseklik değerine yeniden boyutlandırıldı"
"Kısayollar"
-
-
+ "Kısayollar ve bildirimler"
"Kapat"
"Bildirim kapatıldı"
"Kişisel"
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index aa5c676b1a..305c9aaef7 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -110,6 +110,8 @@
"%1$s завантажується, %2$s"
"%1$s очікує на завантаження"
"Віджети додатка %1$s"
+ "Список віджетів"
+ "Список віджектів закрито"
"Додати на головний екран"
"Перемістити елемент сюди"
"Елемент додано на головний екран"
@@ -132,8 +134,7 @@
"Зменшити висоту"
"Розміри віджета змінено на %1$s завширшки та %2$s заввишки"
"Ярлики"
-
-
+ "Ярлики та сповіщення"
"Закрити"
"Сповіщення закрито"
"Особисті додатки"
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index d8e339df07..7853fd4b36 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -108,6 +108,10 @@
"%1$s ڈاؤن لوڈ ہو رہا ہے، %2$s مکمل ہو گیا"
"%1$s انسٹال ہونے کا انتظار کر رہی ہے"
"%1$s ویجیٹس"
+
+
+
+
"ہوم اسکرین میں شامل کریں"
"آئٹم یہاں منتقل کریں"
"آئٹم کو ہوم اسکرین میں شامل کر دیا گیا"
@@ -130,8 +134,7 @@
"اونچائی کم کریں"
"ویجیٹ کے سائز کو چوڑائی %1$s اونچائی %2$s میں تبدیل کر دیا گیا"
"شارٹ کٹس"
-
-
+ "شارٹ کٹس اور اطلاعات"
"برخاست کریں"
"اطلاع مسترد ہو گئی"
"ذاتی"
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 6b53e9657f..287ec09f76 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -108,6 +108,8 @@
"%1$s yuklab olinmoqda, %2$s bajarildi"
"%1$s ilovasi o‘rnatilishi kutilmoqda"
"%1$s vidjetlari"
+ "Vidjetlar ro‘yxati"
+ "Vidjetlar ro‘yxati yopildi"
"Bosh ekranga qo‘shish"
"Obyektni bu yerga ko‘chirish"
"Obyekt bosh ekranga qo‘shildi"
@@ -130,8 +132,7 @@
"Bo‘yini kichraytirish"
"Vidjetning eni %1$s, bo‘yi %2$s qilib o‘zgartirildi"
"Tezkor tugmalar"
-
-
+ "Yorliqlar va bildirishnomalar"
"Yopish"
"Bildirishnoma yopildi"
"Shaxsiy"
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index ab88cfec6e..06278f5cf7 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -108,6 +108,8 @@
"Đang tải xuống %1$s, %2$s hoàn tất"
"Đang chờ cài đặt %1$s"
"Tiện ích của %1$s"
+ "Danh sách tiện ích"
+ "Đã đóng danh sách tiện ích"
"Thêm vào màn hình chính"
"Di chuyển mục vào đây"
"Đã thêm mục vào màn hình chính"
@@ -130,8 +132,7 @@
"Giảm chiều cao"
"Đã đổi kích thước tiện ích thành chiều rộng %1$s chiều cao %2$s"
"Lối tắt"
-
-
+ "Phím tắt và thông báo"
"Loại bỏ"
"Đã loại bỏ thông báo"
"Cá nhân"
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index a92208c83d..640aa0e2f0 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -108,6 +108,8 @@
"正在下载%1$s,已完成 %2$s"
"%1$s正在等待安装"
"%1$s微件"
+ "微件列表"
+ "微件列表已关闭"
"添加到主屏幕"
"将项目移至此处"
"已将项目添加到主屏幕"
@@ -130,8 +132,7 @@
"减小高度"
"微件尺寸已调整为:宽度 %1$s,高度 %2$s"
"快捷方式"
-
-
+ "快捷方式和通知"
"关闭"
"已关闭通知"
"个人"
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 0f253003b5..5a8c6caec6 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -108,6 +108,8 @@
"正在下載 %1$s,已完成 %2$s"
"正在等待安裝 %1$s"
"%1$s小工具"
+ "小工具清單"
+ "已經關閉嘅小工具清單"
"新增至主畫面"
"移動項目至這裡"
"已將項目加入至主畫面"
@@ -130,8 +132,7 @@
"減少高度"
"已調整小工具的大小至闊 %1$s 高 %2$s"
"捷徑"
-
-
+ "捷徑同通知"
"關閉"
"關閉咗通知"
"個人"
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index c187b968b7..4d37cdd20a 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -108,6 +108,8 @@
"正在下載「%1$s」,已完成 %2$s"
"正在等待安裝「%1$s」"
"「%1$s」小工具"
+ "小工具清單"
+ "已關閉小工具清單"
"新增至主畫面"
"將項目移至這裡"
"已將項目新增到主畫面"
@@ -130,13 +132,12 @@
"減少高度"
"已將小工具的寬度和高度分別調整為 %1$s 和 %2$s"
"捷徑"
-
-
+ "捷徑和通知"
"關閉"
"已關閉通知"
"個人"
"公司"
- "Work 設定檔"
+ "工作資料夾"
"在這裡尋找辦公應用程式"
"每個辦公應用程式都有徽章,並由貴機構負責管理及確保其安全。請將辦公應用程式移至主螢幕以便輕鬆存取。"
"由貴機構所管理"
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 6f92847c1c..8e3e5abc60 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -108,6 +108,8 @@
"I-%1$s iyalandwa, %2$s kuqediwe"
"%1$s ilinde ukufakwa"
"%1$s amawijethi"
+ "Uhlu lwamawijethi"
+ "Uhlu lwamawijethi luvaliwe"
"Faka kusikrini sasekhaya"
"Hambisa into lapha"
"Into ingezwe kusikrini sasekhaya"
@@ -130,8 +132,7 @@
"Nciphisa ubude"
"Iwijethi inikezwe usayizi omusha ngobubanzi obungu-%1$s ubude obungu-%2$s"
"Izinqamuleli"
-
-
+ "Izinqamuleli nezaziso"
"Cashisa"
"Isaziso sicashisiwe"
"Okomuntu siqu"
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 631626f441..2b760f3493 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -45,7 +45,7 @@
-
+
+