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 @@ - + +