From 24b08644c25558bce7c9cdc2628dac9d1fc82460 Mon Sep 17 00:00:00 2001 From: Ashwini Oruganti Date: Tue, 24 Mar 2020 12:40:49 -0700 Subject: Add an exported flag in manifest With b/150232615, we will need an explicit value set for the exported flag when intent filters are present, as the default behavior is changing for S+. This change adds the value reflecting the previous default to the manifest. These changes were made using an automated tool, the xml file may be reformatted slightly creating a larger diff. The only "real" change is the addition of "android:exported" to activities, services, and receivers that have one or more intent-filters. Bug: 150232615 Test: TH Exempt-From-Owner-Approval: mechanical refactoring Change-Id: Ief7e423fd78375c263c4b582fdf230fd1ac43ec9 --- AndroidManifest.xml | 118 ++++++++++++++++++++++++++-------------------------- 1 file changed, 58 insertions(+), 60 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index cdd1c59..cf8c9ef 100755 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1,101 +1,99 @@ + + xmlns:tools="http://schemas.android.com/tools" + package="com.android.wallpaper"> - + the rotating wallpaper image data changed. --> + - - - - - - - - + + + + + + + + - + - + + android:label="@string/app_name" + android:theme="@style/WallpaperTheme.NoBackground" + android:resizeableActivity="false" + android:exported="true"> - + + android:label="@string/app_name" + android:theme="@style/WallpaperTheme" + android:resizeableActivity="false" + android:parentActivityName="com.android.wallpaper.picker.TopLevelPickerActivity" + android:exported="true"> - - + + + android:resizeableActivity="false" + android:theme="@style/WallpaperTheme.Preview"> + android:resizeableActivity="false" + android:theme="@style/WallpaperTheme.Preview" + android:exported="true"> - - - + + + + android:resizeableActivity="false" + android:theme="@style/WallpaperTheme.Preview"> - + - + - + -- cgit v1.2.3 From 82958850976556c06fa88da7662e8b3f16aa7146 Mon Sep 17 00:00:00 2001 From: Santiago Etchebehere Date: Thu, 20 Aug 2020 09:47:59 -0700 Subject: Add missing method in TestInjector This will fix broken tests. Change-Id: Ic9094b9fa7c3b88a904f82f28d9089410da800a2 --- tests/src/com/android/wallpaper/testing/TestInjector.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/src/com/android/wallpaper/testing/TestInjector.java b/tests/src/com/android/wallpaper/testing/TestInjector.java index 8dffdca..9b7927f 100644 --- a/tests/src/com/android/wallpaper/testing/TestInjector.java +++ b/tests/src/com/android/wallpaper/testing/TestInjector.java @@ -16,6 +16,8 @@ package com.android.wallpaper.testing; import android.content.Context; +import android.content.Intent; +import android.net.Uri; import androidx.fragment.app.Fragment; @@ -235,6 +237,11 @@ public class TestInjector implements Injector { return null; } + @Override + public Intent getDeepLinkRedirectIntent(Context context, Uri uri) { + return null; + } + @Override public PerformanceMonitor getPerformanceMonitor() { if (mPerformanceMonitor == null) { -- cgit v1.2.3 From 3997a7da997a30da38372d341354af39d10c7166 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Sun, 23 Aug 2020 02:41:13 +0000 Subject: Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I7390fefc269b324774ed124a59d6072acdd1b7cd --- res/values-en-rAU/strings.xml | 1 + res/values-en-rCA/strings.xml | 1 + res/values-en-rGB/strings.xml | 1 + res/values-en-rIN/strings.xml | 1 + res/values-en-rXC/strings.xml | 1 + res/values-pt/strings.xml | 1 + 6 files changed, 6 insertions(+) diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml index cae6b88..4313b9f 100644 --- a/res/values-en-rAU/strings.xml +++ b/res/values-en-rAU/strings.xml @@ -93,4 +93,5 @@ "Previous" "Wallpaper" "Wallpaper preview" + "The collection doesn\'t exist" diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml index cae6b88..4313b9f 100644 --- a/res/values-en-rCA/strings.xml +++ b/res/values-en-rCA/strings.xml @@ -93,4 +93,5 @@ "Previous" "Wallpaper" "Wallpaper preview" + "The collection doesn\'t exist" diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index cae6b88..4313b9f 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -93,4 +93,5 @@ "Previous" "Wallpaper" "Wallpaper preview" + "The collection doesn\'t exist" diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml index cae6b88..4313b9f 100644 --- a/res/values-en-rIN/strings.xml +++ b/res/values-en-rIN/strings.xml @@ -93,4 +93,5 @@ "Previous" "Wallpaper" "Wallpaper preview" + "The collection doesn\'t exist" diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml index 041d2f4..2144ec1 100644 --- a/res/values-en-rXC/strings.xml +++ b/res/values-en-rXC/strings.xml @@ -93,4 +93,5 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‎‏‏‏‏‏‏‎‏‏‏‏‏‏‎‎‏‏‏‏‏‏‎‎‏‏‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‏‏‎‏‏‏‎‎‏‎‎‎‏‏‎‏‏‏‎‏‏‏‏‎‏‎‎‎‏‏‏‎‏‎Previous‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‏‏‏‎‏‏‏‏‎‎‏‎‏‎‎‏‏‏‎‏‏‏‏‏‎‏‎‏‏‎‏‏‏‏‎‎‏‎‏‎‎‏‎‎‏‎‎‏‎‏‎‏‎‎‎Wallpaper‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‏‏‏‎‎‏‏‎‏‎‎‏‎‏‎‏‏‎‏‏‏‎‎‎‎‎‏‎‎‎‏‏‏‎‏‎‎‏‏‎‏‏‎‎‎‏‎‎‏‎‏‏‎‎‎‎Wallpaper preview‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‎‏‏‎‎‎‎‏‎‏‎‎‎‏‏‏‎‏‏‏‏‎‏‎‎‏‏‎‎‏‏‎‏‎‎‎‎‏‎‏‎‏‏‏‏‎‏‎‏‎‏‏‎‎‎‏‎‎‎‏‎‏‎‎The collection doesn\'t exist‎‏‎‎‏‎" diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index f3a072c..6b8ea55 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -93,4 +93,5 @@ "Anterior" "Plano de fundo" "Visualização do plano de fundo" + "A coleção não existe" -- cgit v1.2.3 From 0d38ade5b7f5a1a5d5a949dbff40eaa569a2223e Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Mon, 31 Aug 2020 04:57:19 +0000 Subject: Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I63eb7414a77ca6a5a7f408eefe8aa859cd1bc4f2 --- res/values-af/strings.xml | 1 + res/values-am/strings.xml | 1 + res/values-ar/strings.xml | 1 + res/values-as/strings.xml | 1 + res/values-az/strings.xml | 1 + res/values-b+sr+Latn/strings.xml | 1 + res/values-be/strings.xml | 1 + res/values-bg/strings.xml | 1 + res/values-bn/strings.xml | 1 + res/values-bs/strings.xml | 1 + res/values-ca/strings.xml | 1 + res/values-cs/strings.xml | 1 + res/values-da/strings.xml | 1 + res/values-de/strings.xml | 1 + res/values-el/strings.xml | 1 + res/values-es-rUS/strings.xml | 1 + res/values-es/strings.xml | 1 + res/values-et/strings.xml | 1 + res/values-eu/strings.xml | 1 + res/values-fa/strings.xml | 1 + res/values-fi/strings.xml | 1 + res/values-fr-rCA/strings.xml | 1 + res/values-fr/strings.xml | 1 + res/values-gl/strings.xml | 1 + res/values-gu/strings.xml | 1 + res/values-hi/strings.xml | 1 + res/values-hr/strings.xml | 1 + res/values-hu/strings.xml | 1 + res/values-hy/strings.xml | 1 + res/values-in/strings.xml | 1 + res/values-is/strings.xml | 1 + res/values-it/strings.xml | 1 + res/values-iw/strings.xml | 1 + res/values-ja/strings.xml | 1 + res/values-ka/strings.xml | 1 + res/values-kk/strings.xml | 1 + res/values-km/strings.xml | 1 + res/values-kn/strings.xml | 1 + res/values-ko/strings.xml | 1 + res/values-ky/strings.xml | 1 + res/values-lo/strings.xml | 1 + res/values-lt/strings.xml | 1 + res/values-lv/strings.xml | 1 + res/values-mk/strings.xml | 1 + res/values-ml/strings.xml | 1 + res/values-mn/strings.xml | 1 + res/values-mr/strings.xml | 1 + res/values-ms/strings.xml | 1 + res/values-my/strings.xml | 1 + res/values-nb/strings.xml | 1 + res/values-ne/strings.xml | 5 +++-- res/values-nl/strings.xml | 1 + res/values-or/strings.xml | 1 + res/values-pa/strings.xml | 1 + res/values-pl/strings.xml | 1 + res/values-pt-rPT/strings.xml | 1 + res/values-ro/strings.xml | 1 + res/values-ru/strings.xml | 1 + res/values-si/strings.xml | 1 + res/values-sk/strings.xml | 1 + res/values-sl/strings.xml | 1 + res/values-sq/strings.xml | 1 + res/values-sr/strings.xml | 1 + res/values-sv/strings.xml | 1 + res/values-sw/strings.xml | 1 + res/values-ta/strings.xml | 1 + res/values-te/strings.xml | 1 + res/values-th/strings.xml | 1 + res/values-tl/strings.xml | 1 + res/values-tr/strings.xml | 1 + res/values-uk/strings.xml | 1 + res/values-ur/strings.xml | 1 + res/values-uz/strings.xml | 1 + res/values-vi/strings.xml | 1 + res/values-zh-rCN/strings.xml | 1 + res/values-zh-rHK/strings.xml | 1 + res/values-zh-rTW/strings.xml | 1 + res/values-zu/strings.xml | 1 + 78 files changed, 80 insertions(+), 2 deletions(-) diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index 2ca2d03..34efae7 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -93,4 +93,5 @@ "Vorige" "Muurpapier" "Muurpapiervoorskou" + "Die versameling bestaan nie" diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index 1bace37..1b0e681 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -93,4 +93,5 @@ "ቀዳሚ" "ልጣፍ" "የልጣፍ ቅድመ-እይታ" + "ስብስቡ የለም" diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 7648f0d..9f03248 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -93,4 +93,5 @@ "الصفحة السابقة" "الخلفية" "معاينة عرض الشرائح" + "المجموعة غير متوفرة." diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml index 9303e2f..29e044e 100644 --- a/res/values-as/strings.xml +++ b/res/values-as/strings.xml @@ -93,4 +93,5 @@ "পূৰ্বৱৰ্তী" "ৱালপেপাৰ" "ৱালপেপাৰৰ পূৰ্বদৰ্শন" + "এই সংগ্ৰহটোৰ অস্তিত্ব নাই" diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml index f02e72e..bfb4432 100644 --- a/res/values-az/strings.xml +++ b/res/values-az/strings.xml @@ -93,4 +93,5 @@ "Əvvəlki" "Divar kağızı" "Divar Kağızı önizləməsi" + "Kolleksiya mövcud deyil" diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml index f9f63d7..96fbf05 100644 --- a/res/values-b+sr+Latn/strings.xml +++ b/res/values-b+sr+Latn/strings.xml @@ -93,4 +93,5 @@ "Prethodna" "Pozadina" "Pregled pozadine" + "Kolekcija ne postoji" diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index 16bdadc..99af4c8 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -93,4 +93,5 @@ "Назад" "Шпалеры" "Перадпрагляд шпалер" + "Калекцыя не існуе" diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index 6f57003..97c6ee3 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -93,4 +93,5 @@ "Назад" "Тапет" "Визуализация на тапета" + "Колекцията не съществува" diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml index 8f60442..15f19e3 100644 --- a/res/values-bn/strings.xml +++ b/res/values-bn/strings.xml @@ -93,4 +93,5 @@ "আগের" "ওয়ালপেপার" "ওয়ালপেপার প্রিভিউ করুন" + "কালেকশন উপলভ্য নেই" diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml index 275b194..c813e77 100644 --- a/res/values-bs/strings.xml +++ b/res/values-bs/strings.xml @@ -93,4 +93,5 @@ "Nazad" "Pozadinska slika" "Pregled pozadinske slike" + "Kolekcija ne postoji" diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index 278b23e..6518a87 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -93,4 +93,5 @@ "Anterior" "Fons de pantalla" "Previsualitz. fons de pantalla" + "La col·lecció no existeix" diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index 1fb0701..1dbf0f8 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -93,4 +93,5 @@ "Předchozí" "Tapeta" "Náhled prezentace" + "Sbírka neexistuje" diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 184a25b..6b3b32a 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -93,4 +93,5 @@ "Forrige" "Baggrund" "Forhåndsvisning af baggrund" + "Samlingen eksisterer ikke" diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index efcd22c..40aa64a 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -93,4 +93,5 @@ "Zurück" "Hintergrund" "Hintergrundvorschau" + "Die Sammlung existiert nicht" diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index c078327..98a3468 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -93,4 +93,5 @@ "Προηγούμενη" "Ταπετσαρία" "Προεπισκόπηση ταπετσαρίας" + "Η συλλογή δεν υπάρχει." diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index f9e3498..bb14b25 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -93,4 +93,5 @@ "Anterior" "Fondo de pantalla" "Vista previa del fondo" + "La colección no existe" diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index e8f37df..e343d82 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -93,4 +93,5 @@ "Anterior" "Fondo de pantalla" "Vista previa de fondo" + "La colección no existe" diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml index 50a3118..7ed36e7 100644 --- a/res/values-et/strings.xml +++ b/res/values-et/strings.xml @@ -93,4 +93,5 @@ "Eelmine" "Taustapilt" "Taustapildi eelvaade" + "Kogu pole olemas" diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index 122391d..2f41165 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -93,4 +93,5 @@ "Aurrekoa" "Horma-papera" "Horma-paperaren aurrebista" + "Ez dago bildumarik" diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index a13dba1..a2ad653 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -93,4 +93,5 @@ "قبلی" "کاغذدیواری" "پیش‌نمایش کاغذدیواری" + "مجموعه وجود ندارد" diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index 1914f1b..ad8bd1d 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -93,4 +93,5 @@ "Edellinen" "Taustakuva" "Taustakuvan esikatselu" + "Kyseistä kokoelmaa ei ole olemassa" diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml index d31d006..fd32602 100644 --- a/res/values-fr-rCA/strings.xml +++ b/res/values-fr-rCA/strings.xml @@ -93,4 +93,5 @@ "Précédent" "Fond d\'écran" "Aperçu du fond d\'écran" + "La collection n\'existe pas" diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index f92dae4..fa92a24 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -93,4 +93,5 @@ "Précédente" "Fond d\'écran" "Aperçu du fond d\'écran" + "Cette collection n\'existe pas" diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml index 6791ddd..a61b3cb 100644 --- a/res/values-gl/strings.xml +++ b/res/values-gl/strings.xml @@ -93,4 +93,5 @@ "Anterior" "Fondo de pantalla" "Vista previa do fondo" + "A colección non existe" diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml index 9aea1a3..b7e3791 100644 --- a/res/values-gu/strings.xml +++ b/res/values-gu/strings.xml @@ -93,4 +93,5 @@ "પાછળ" "વૉલપેપર" "વૉલપેપરનો પ્રીવ્યૂ કરો" + "સંગ્રહ અસ્તિત્વમાં નથી" diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index 927e71b..dda9af5 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -93,4 +93,5 @@ "पीछे जाएं" "वॉलपेपर" "वॉलपेपर की झलक देखें" + "वॉलपेपर का संग्रह मौजूद नहीं है" diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index dae9eaa..7fc8820 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -93,4 +93,5 @@ "Prethodno" "Pozadina" "Pregled pozadine" + "Zbirka ne postoji" diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index c1ffc67..668f13d 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -93,4 +93,5 @@ "Előző" "Háttérkép" "Háttérkép előnézete" + "Nincs ilyen gyűjtemény" diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml index 3bedcc2..6c042bb 100644 --- a/res/values-hy/strings.xml +++ b/res/values-hy/strings.xml @@ -93,4 +93,5 @@ "Հետ" "Պաստառ" "Պաստառի նախադիտում" + "Հավաքածուն գոյություն չունի" diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index c86abd5..1a51734 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -93,4 +93,5 @@ "Sebelumnya" "Wallpaper" "Pratinjau wallpaper" + "Koleksi tidak ada" diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml index 60764e1..876517d 100644 --- a/res/values-is/strings.xml +++ b/res/values-is/strings.xml @@ -93,4 +93,5 @@ "Fyrri" "Veggfóður" "Forskoðun veggfóðurs" + "Safnið er ekki til" diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index f3fc99f..c838a98 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -93,4 +93,5 @@ "Indietro" "Sfondo" "Anteprima sfondo" + "La raccolta non esiste" diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index 5213a6c..ef79aec 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -93,4 +93,5 @@ "הקודם" "טפט" "תצוגה מקדימה של הטפט" + "האוסף לא קיים" diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 3178ee3..9f83264 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -93,4 +93,5 @@ "前へ" "壁紙" "壁紙のプレビュー" + "コレクションは存在しません" diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml index 238ab1f..b527549 100644 --- a/res/values-ka/strings.xml +++ b/res/values-ka/strings.xml @@ -93,4 +93,5 @@ "წინა" "ფონი" "ფონის გადახედვა" + "კოლექცია არ არსებობს" diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml index f681d0c..48d0911 100644 --- a/res/values-kk/strings.xml +++ b/res/values-kk/strings.xml @@ -93,4 +93,5 @@ "Алдыңғы" "Тұсқағаз" "Тұсқағазды алдын ала қарау" + "Жинақ жоқ." diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml index eff70f8..25debf9 100644 --- a/res/values-km/strings.xml +++ b/res/values-km/strings.xml @@ -93,4 +93,5 @@ "មុន" "ផ្ទាំងរូបភាព" "ការមើលផ្ទាំង​រូបភាពសាកល្បង" + "បណ្ដុំមិនមានទេ" diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml index 2a51162..232641c 100644 --- a/res/values-kn/strings.xml +++ b/res/values-kn/strings.xml @@ -93,4 +93,5 @@ "ಹಿಂದಕ್ಕೆ" "ವಾಲ್‌ಪೇಪರ್‌" "ವಾಲ್‌ಪೇಪರ್ ಪೂರ್ವವೀಕ್ಷಣೆ" + "ಸಂಗ್ರಹಣೆ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ" diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 18db06f..2be0992 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -93,4 +93,5 @@ "이전" "배경화면" "배경화면 미리보기" + "컬렉션이 없습니다." diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml index 3de5668..8e02782 100644 --- a/res/values-ky/strings.xml +++ b/res/values-ky/strings.xml @@ -93,4 +93,5 @@ "Мурунку" "Тушкагаз" "Тушкагазды алдын ала көрүү" + "Мындай жыйнак жок" diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml index ebf8ec2..f3cbe2b 100644 --- a/res/values-lo/strings.xml +++ b/res/values-lo/strings.xml @@ -93,4 +93,5 @@ "ກ່ອນໜ້າ" "ຮູບພື້ນຫຼັງ" "ຕົວຢ່າງຮູບພື້ນຫຼັງ" + "ບໍ່ມິຄໍເລັກຊັນ" diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index 17852fb..a03226e 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -93,4 +93,5 @@ "Ankstesnis" "Ekrano fonas" "Ekrano fono peržiūra" + "Rinkinio nėra" diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index 1e7c1d7..f7778a9 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -93,4 +93,5 @@ "Atpakaļ" "Fona tapete" "Fona tapetes priekšskatījums" + "Kolekcija nepastāv" diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml index 7efd41a..c4dea2f 100644 --- a/res/values-mk/strings.xml +++ b/res/values-mk/strings.xml @@ -93,4 +93,5 @@ "Претходна" "Тапет" "Преглед на тапет" + "Збирката не постои" diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml index cdd63ef..ffef7b2 100644 --- a/res/values-ml/strings.xml +++ b/res/values-ml/strings.xml @@ -93,4 +93,5 @@ "മുമ്പത്തെ" "വാൾപേപ്പർ" "വാൾപേപ്പർ പ്രിവ്യൂ" + "ശേഖരം നിലവിലില്ല" diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml index ee4f411..9d3515d 100644 --- a/res/values-mn/strings.xml +++ b/res/values-mn/strings.xml @@ -93,4 +93,5 @@ "Өмнөх" "Ханын зураг" "Ханын зургийг урьдчилан үзэх" + "Ийм цуглуулга байхгүй" diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml index 7dd041f..f70ede7 100644 --- a/res/values-mr/strings.xml +++ b/res/values-mr/strings.xml @@ -93,4 +93,5 @@ "मागील" "वॉलपेपर" "वॉलपेपर पूर्वावलोकन" + "संग्रह अस्तित्वात नाही" diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml index b67e3a1..929a694 100644 --- a/res/values-ms/strings.xml +++ b/res/values-ms/strings.xml @@ -93,4 +93,5 @@ "Sebelumnya" "Kertas dinding" "Pratonton kertas dinding" + "Koleksi tersebut tidak wujud" diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml index 2213288..9297a26 100644 --- a/res/values-my/strings.xml +++ b/res/values-my/strings.xml @@ -93,4 +93,5 @@ "ယခင်" "နောက်ခံ" "နောက်ခံပုံ အစမ်းကြည့်ရှုခြင်း" + "ဤစုစည်းမှု မရှိပါ" diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index 84bf46e..af24134 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -93,4 +93,5 @@ "Forrige" "Bakgrunn" "Forhåndsvisning av bakgrunn" + "Samlingen eksisterer ikke" diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml index c4fef19..3d5366a 100644 --- a/res/values-ne/strings.xml +++ b/res/values-ne/strings.xml @@ -70,8 +70,8 @@ "यन्त्रका वालपेपर" "Android वालपेपर" "लाइभ वालपेपरहरू" - "मेरा तस्बिरहरू" - "मेरो तस्बिर" + "मेरा फोटोहरू" + "मेरो फोटो" "वालपेपर" "एप स्थापित छैन।" "मध्यभाग" @@ -93,4 +93,5 @@ "अघिल्लो" "वालपेपर" "वालपेपरको प्रिभ्यु" + "यो सङ्ग्रह छैन" diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index 4a7cb49..569c089 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -93,4 +93,5 @@ "Vorige" "Achtergrond" "Achtergrondvoorbeeld" + "De collectie bestaat niet" diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml index fcf6a75..54d485e 100644 --- a/res/values-or/strings.xml +++ b/res/values-or/strings.xml @@ -93,4 +93,5 @@ "ପୂର୍ବବର୍ତ୍ତୀ" "ୱାଲପେପର୍" "ୱାଲପେପରର ପ୍ରିଭ୍ୟୁ" + "ସଂଗ୍ରହ ଉପଲବ୍ଧ ନାହିଁ" diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml index 763afa5..87a1f04 100644 --- a/res/values-pa/strings.xml +++ b/res/values-pa/strings.xml @@ -93,4 +93,5 @@ "ਪਿੱਛੇ ਜਾਓ" "ਵਾਲਪੇਪਰ" "ਵਾਲਪੇਪਰ ਦੀ ਪੂਰਵ-ਝਲਕ" + "ਸੰਗ੍ਰਹਿ ਮੌਜੂਦ ਨਹੀਂ ਹੈ" diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index 54dfb14..a62fdc5 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -93,4 +93,5 @@ "Wstecz" "Tapeta" "Podgląd tapety" + "Taka kolekcja nie istnieje" diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index ea3c288..ace4431 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -93,4 +93,5 @@ "Anterior" "Imagem de fundo" "Pré-visual. da imagem de fundo" + "A coleção não existe." diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index 4982b64..8a9c44d 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -93,4 +93,5 @@ "Înapoi" "Imagine de fundal" "Previzualizarea imaginii de fundal" + "Colecția nu există" diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 7f8e37b..d807ba7 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -93,4 +93,5 @@ "Предыдущая страница" "Обои" "Предварительный просмотр обоев" + "Такой подборки не существует." diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml index e63a2d2..2a6288e 100644 --- a/res/values-si/strings.xml +++ b/res/values-si/strings.xml @@ -93,4 +93,5 @@ "පෙර" "වෝල්පේපරය" "වෝල්පේපර පෙරදසුන" + "එකතුව නොපවතී" diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index 1da2c15..a77c513 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -93,4 +93,5 @@ "Späť" "Tapeta" "Ukážka tapety" + "Zbierka neexistuje" diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index e56b978..abb8ee8 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -93,4 +93,5 @@ "Nazaj" "Zaslonsko ozadje" "Predogled zaslonskih ozadij" + "Zbirka ne obstaja" diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml index a92579f..03ed073 100644 --- a/res/values-sq/strings.xml +++ b/res/values-sq/strings.xml @@ -93,4 +93,5 @@ "Pas" "Imazhi i sfondit" "Pamja paraprake e imazhit të sfondit" + "Koleksioni nuk ekziston" diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index 447f00e..6f7cda6 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -93,4 +93,5 @@ "Претходна" "Позадина" "Преглед позадине" + "Колекција не постоји" diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index c03d38b..c496885 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -93,4 +93,5 @@ "Föregående" "Bakgrund" "Förhandsgranska bakgrunden" + "Samlingen finns inte" diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index 71beaf9..ff90209 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -93,4 +93,5 @@ "Uliotangulia" "Mandhari" "Onyesho la kukagua mandhari" + "Mkusanyiko huu haupo" diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml index c0e601c..09478ba 100644 --- a/res/values-ta/strings.xml +++ b/res/values-ta/strings.xml @@ -93,4 +93,5 @@ "முந்தைய பக்கத்திற்குச் செல்வதற்கான பட்டன்" "வால்பேப்பர்" "வால்பேப்பர் மாதிரிக்காட்சி" + "இந்தத் தொகுப்பு இல்லை" diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml index 1ad45d2..f371db9 100644 --- a/res/values-te/strings.xml +++ b/res/values-te/strings.xml @@ -93,4 +93,5 @@ "మునుపటి" "వాల్‌పేపర్" "వాల్‌పేపర్ ప్రివ్యూ" + "ఈ సేకరణ అందుబాటులో లేదు" diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index 53b3b16..494a5c7 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -93,4 +93,5 @@ "ก่อนหน้า" "วอลเปเปอร์" "พรีวิววอลเปเปอร์" + "ไม่มีคอลเล็กชัน" diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index a24647a..4e13333 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -93,4 +93,5 @@ "Nauna" "Wallpaper" "Preview ng wallpaper" + "Wala ang koleksyon" diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 782483b..2b78d20 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -93,4 +93,5 @@ "Önceki" "Duvar kağıdı" "Duvar kağıdı ön izleme" + "Koleksiyon mevcut değil" diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index 341f50c..73b1c5a 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -93,4 +93,5 @@ "Назад" "Фоновий малюнок" "Перегляд фонового малюнка" + "Колекція не існує" diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml index 50f7791..6c7552b 100644 --- a/res/values-ur/strings.xml +++ b/res/values-ur/strings.xml @@ -93,4 +93,5 @@ "گزشتہ" "وال پیپر" "وال پیپر کا پیش منظر" + "مجموعہ موجود نہیں ہے" diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml index d66df05..a906905 100644 --- a/res/values-uz/strings.xml +++ b/res/values-uz/strings.xml @@ -93,4 +93,5 @@ "Avvalgisi" "Fon rasmi" "Fon rasmiga razm solish" + "Bunday terma mavjud emas" diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index d8f314c..199cca2 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -93,4 +93,5 @@ "Trước" "Hình nền" "Xem trước hình nền" + "Bộ sưu tập không tồn tại" diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 82aa3e5..7c9404b 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -93,4 +93,5 @@ "上一页" "壁纸" "壁纸预览" + "该集合不存在" diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index fcd8ecd..4382f14 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -93,4 +93,5 @@ "返回" "桌布" "預覽桌布" + "桌布集不存在" diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index c602491..e191907 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -93,4 +93,5 @@ "上一頁" "桌布" "桌布預覽" + "這個系列不存在" diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index 5966df3..00df6c0 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -93,4 +93,5 @@ "Okwangaphambilini" "Isithombe sangemuva" "Ukubuka kuqala kwesithombe sangemuva" + "Uqoqo alutholakali" -- cgit v1.2.3 From 81145b267947b422a4f6a9b35867e67aa23aa191 Mon Sep 17 00:00:00 2001 From: Chuck Liao Date: Thu, 3 Sep 2020 09:52:25 +0800 Subject: Fix the bottom action bar non-functional For the latest version of AndroidX Fragments, the fragments' lifecycle change when switching the fragment by calling FragmentTransaction#replace(). It causes the bottom action bar non-functional. We need to change our logic to fulfill the new behavior of Fragments. Bug: 166304794 Change-Id: I313e248fcd8012b20741b3aaec7d36d43736a6d5 --- src/com/android/wallpaper/picker/BottomActionBarFragment.java | 10 +--------- src/com/android/wallpaper/picker/CategoryFragment.java | 7 +++++++ src/com/android/wallpaper/picker/CategorySelectorFragment.java | 7 +++++++ 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/com/android/wallpaper/picker/BottomActionBarFragment.java b/src/com/android/wallpaper/picker/BottomActionBarFragment.java index 099741b..3562040 100644 --- a/src/com/android/wallpaper/picker/BottomActionBarFragment.java +++ b/src/com/android/wallpaper/picker/BottomActionBarFragment.java @@ -46,20 +46,12 @@ public class BottomActionBarFragment extends Fragment { super.onViewCreated(view, savedInstanceState); mBottomActionBar = findBottomActionBar(); if (mBottomActionBar != null) { + mBottomActionBar.reset(); mBottomActionBar.bindBackButtonToSystemBackKey(getActivity()); onBottomActionBarReady(mBottomActionBar); } } - @Override - public void onDestroyView() { - if (mBottomActionBar != null) { - mBottomActionBar.reset(); - mBottomActionBar = null; - } - super.onDestroyView(); - } - /** Returns {@code true} if the fragment would handle the event. */ public boolean onBackPressed() { if (mBottomActionBar != null && mBottomActionBar.isVisible()) { diff --git a/src/com/android/wallpaper/picker/CategoryFragment.java b/src/com/android/wallpaper/picker/CategoryFragment.java index 42566eb..21c57a4 100755 --- a/src/com/android/wallpaper/picker/CategoryFragment.java +++ b/src/com/android/wallpaper/picker/CategoryFragment.java @@ -147,6 +147,7 @@ public class CategoryFragment extends AppbarFragment private LockScreenPreviewer mLockScreenPreviewer; private View mRootContainer; + private BottomActionBar mBottomActionBar; private final Rect mPreviewLocalRect = new Rect(); private final Rect mPreviewGlobalRect = new Rect(); @@ -311,6 +312,7 @@ public class CategoryFragment extends AppbarFragment @Override protected void onBottomActionBarReady(BottomActionBar bottomActionBar) { + mBottomActionBar = bottomActionBar; if (getFragmentHost().isNavigationTabsContained()) { return; } @@ -447,6 +449,11 @@ public class CategoryFragment extends AppbarFragment getFragmentHost().fetchCategories(); } + @Override + public void hideBottomActionBar() { + mBottomActionBar.hide(); + } + @Override public void expandBottomSheet() { if (mBottomSheetBehavior.getState() != BottomSheetBehavior.STATE_EXPANDED) { diff --git a/src/com/android/wallpaper/picker/CategorySelectorFragment.java b/src/com/android/wallpaper/picker/CategorySelectorFragment.java index 887eb92..957b227 100644 --- a/src/com/android/wallpaper/picker/CategorySelectorFragment.java +++ b/src/com/android/wallpaper/picker/CategorySelectorFragment.java @@ -94,6 +94,11 @@ public class CategorySelectorFragment extends Fragment { * Fetches the wallpaper categories. */ void fetchCategories(); + + /** + * Hides the {@link com.android.wallpaper.widget.BottomActionBar}. + */ + void hideBottomActionBar(); } private RecyclerView mImageGrid; @@ -131,6 +136,8 @@ public class CategorySelectorFragment extends Fragment { getCategorySelectorFragmentHost().fetchCategories(); } + getCategorySelectorFragmentHost().hideBottomActionBar(); + return view; } -- cgit v1.2.3 From 7a8ae3be1533509cec76e49c689d0ce38b5c4e1c Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Thu, 17 Sep 2020 17:15:50 -0700 Subject: Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I81ec10b22c8714a584912eb8f8cf1515c51001b0 --- res/values-ar/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 9f03248..166a289 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -54,7 +54,7 @@ "الخلفية التالية" "تم إيقاف إمكانية تعيين خلفية على هذا الجهاز." "أوقف مشرف الجهاز إمكانية تعيين خلفية." - "تم تعيين الخلفية بنجاح." + "تم ضبط الخلفية بنجاح." "يلزمك الاتصال بالإنترنت للاطّلاع على الخلفيات. يُرجى الاتصال وإعادة المحاولة." "صورة مصغَّرة لخلفية الشاشة الرئيسية المعيَّنة حاليًا" "صورة مصغَّرة لخلفية شاشة القفل المعيَّنة حاليًا" -- cgit v1.2.3 -- cgit v1.2.3 From 484cdf366613b0ca0b3acb62446fa1088e093c55 Mon Sep 17 00:00:00 2001 From: "Wesley.CW Wang" Date: Fri, 25 Sep 2020 19:18:51 +0800 Subject: Logging WPPG launch source (2/4) - Log the launch source when entering TopLevelPickerActivity, DeepLinkActivity and BasePreviewActivity Bug: 154781896 Change-Id: Iea3f0bda6ff05e57fa9356e1890cd76c64e2a978 --- src/com/android/wallpaper/module/NoOpUserEventLogger.java | 4 +++- src/com/android/wallpaper/module/UserEventLogger.java | 6 ++++-- src/com/android/wallpaper/picker/BasePreviewActivity.java | 11 +++++++++++ src/com/android/wallpaper/picker/DeepLinkActivity.java | 12 ++++++++++-- src/com/android/wallpaper/picker/TopLevelPickerActivity.java | 8 ++++---- src/com/android/wallpaper/util/LaunchSourceUtils.java | 12 ++++++++++++ .../com/android/wallpaper/testing/TestUserEventLogger.java | 4 +++- 7 files changed, 47 insertions(+), 10 deletions(-) create mode 100644 src/com/android/wallpaper/util/LaunchSourceUtils.java diff --git a/src/com/android/wallpaper/module/NoOpUserEventLogger.java b/src/com/android/wallpaper/module/NoOpUserEventLogger.java index e0559a6..4578e11 100755 --- a/src/com/android/wallpaper/module/NoOpUserEventLogger.java +++ b/src/com/android/wallpaper/module/NoOpUserEventLogger.java @@ -15,6 +15,8 @@ */ package com.android.wallpaper.module; +import android.content.Intent; + import com.android.wallpaper.module.WallpaperPersister.WallpaperPosition; /** @@ -33,7 +35,7 @@ public class NoOpUserEventLogger implements UserEventLogger { } @Override - public void logAppLaunched() { + public void logAppLaunched(Intent launchSource) { } @Override diff --git a/src/com/android/wallpaper/module/UserEventLogger.java b/src/com/android/wallpaper/module/UserEventLogger.java index 5ff404d..b574d5d 100755 --- a/src/com/android/wallpaper/module/UserEventLogger.java +++ b/src/com/android/wallpaper/module/UserEventLogger.java @@ -15,10 +15,12 @@ */ package com.android.wallpaper.module; -import com.android.wallpaper.module.WallpaperPersister.WallpaperPosition; +import android.content.Intent; import androidx.annotation.IntDef; +import com.android.wallpaper.module.WallpaperPersister.WallpaperPosition; + /** * Interface for logging user events in the wallpaper picker. */ @@ -48,7 +50,7 @@ public interface UserEventLogger { void logStopped(); - void logAppLaunched(); + void logAppLaunched(Intent launchSource); void logDailyRefreshTurnedOn(); diff --git a/src/com/android/wallpaper/picker/BasePreviewActivity.java b/src/com/android/wallpaper/picker/BasePreviewActivity.java index a70c2f9..93f7bc5 100755 --- a/src/com/android/wallpaper/picker/BasePreviewActivity.java +++ b/src/com/android/wallpaper/picker/BasePreviewActivity.java @@ -22,6 +22,9 @@ import android.os.Bundle; import androidx.annotation.Nullable; import com.android.wallpaper.R; +import com.android.wallpaper.module.Injector; +import com.android.wallpaper.module.InjectorProvider; +import com.android.wallpaper.module.UserEventLogger; /** * Abstract base class for a wallpaper full-screen preview activity. @@ -37,8 +40,16 @@ public abstract class BasePreviewActivity extends BaseActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); + Injector injector = InjectorProvider.getInjector(); + UserEventLogger mUserEventLogger = injector.getUserEventLogger(this); getWindow().setColorMode(ActivityInfo.COLOR_MODE_WIDE_COLOR_GAMUT); setTheme(R.style.WallpaperTheme); getWindow().setFormat(PixelFormat.TRANSLUCENT); + + // Check the launching intent's action to figure out the caller is from other application + // and log its launch source. + if (getIntent() != null && getIntent().getAction() != null) { + mUserEventLogger.logAppLaunched(getIntent()); + } } } diff --git a/src/com/android/wallpaper/picker/DeepLinkActivity.java b/src/com/android/wallpaper/picker/DeepLinkActivity.java index 9c4afb4..9e07996 100644 --- a/src/com/android/wallpaper/picker/DeepLinkActivity.java +++ b/src/com/android/wallpaper/picker/DeepLinkActivity.java @@ -15,7 +15,11 @@ */ package com.android.wallpaper.picker; +import static com.android.wallpaper.util.LaunchSourceUtils.LAUNCH_SOURCE_DEEP_LINK; +import static com.android.wallpaper.util.LaunchSourceUtils.WALLPAPER_LAUNCH_SOURCE; + import android.app.Activity; +import android.content.Intent; import android.os.Bundle; import androidx.annotation.Nullable; @@ -27,12 +31,16 @@ import com.android.wallpaper.module.InjectorProvider; * the url link to deep link. */ public class DeepLinkActivity extends Activity { + @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - startActivity(InjectorProvider.getInjector().getDeepLinkRedirectIntent( - this, getIntent().getData())); + Intent intent = InjectorProvider.getInjector().getDeepLinkRedirectIntent( + this, getIntent().getData()); + intent.putExtra(WALLPAPER_LAUNCH_SOURCE, LAUNCH_SOURCE_DEEP_LINK); + + startActivity(intent); finish(); } } diff --git a/src/com/android/wallpaper/picker/TopLevelPickerActivity.java b/src/com/android/wallpaper/picker/TopLevelPickerActivity.java index f74a445..1c0c4c2 100755 --- a/src/com/android/wallpaper/picker/TopLevelPickerActivity.java +++ b/src/com/android/wallpaper/picker/TopLevelPickerActivity.java @@ -296,8 +296,8 @@ public class TopLevelPickerActivity extends BaseActivity implements WallpapersUi Fragment fragment = fm.findFragmentById(R.id.fragment_container); if (fragment == null) { - // App launch specific logic: log the "app launched" event and set up daily logging. - mUserEventLogger.logAppLaunched(); + // App launch specific logic: log the "app launch source" event. + mUserEventLogger.logAppLaunched(getIntent()); mWallpaperPreferences.incrementAppLaunched(); DailyLoggingAlarmScheduler.setAlarm(getApplicationContext()); @@ -357,8 +357,8 @@ public class TopLevelPickerActivity extends BaseActivity implements WallpapersUi Fragment fragment = fm.findFragmentById(R.id.fragment_container); if (fragment == null) { - // App launch specific logic: log the "app launched" event and set up daily logging. - mUserEventLogger.logAppLaunched(); + // App launch specific logic: log the "app launch source" event. + mUserEventLogger.logAppLaunched(getIntent()); mWallpaperPreferences.incrementAppLaunched(); DailyLoggingAlarmScheduler.setAlarm(getApplicationContext()); } diff --git a/src/com/android/wallpaper/util/LaunchSourceUtils.java b/src/com/android/wallpaper/util/LaunchSourceUtils.java new file mode 100644 index 0000000..8ff3a1c --- /dev/null +++ b/src/com/android/wallpaper/util/LaunchSourceUtils.java @@ -0,0 +1,12 @@ +package com.android.wallpaper.util; + +/** Util class for launch source logging. */ +public final class LaunchSourceUtils { + public static final String WALLPAPER_LAUNCH_SOURCE = + "com.android.wallpaper.LAUNCH_SOURCE"; + public static final String LAUNCH_SOURCE_LAUNCHER = "app_launched_launcher"; + public static final String LAUNCH_SOURCE_SETTINGS = "app_launched_settings"; + public static final String LAUNCH_SOURCE_SUW = "app_launched_suw"; + public static final String LAUNCH_SOURCE_TIPS = "app_launched_tips"; + public static final String LAUNCH_SOURCE_DEEP_LINK = "app_launched_deeplink"; +} diff --git a/tests/src/com/android/wallpaper/testing/TestUserEventLogger.java b/tests/src/com/android/wallpaper/testing/TestUserEventLogger.java index 63ae94e..bb70e93 100644 --- a/tests/src/com/android/wallpaper/testing/TestUserEventLogger.java +++ b/tests/src/com/android/wallpaper/testing/TestUserEventLogger.java @@ -15,6 +15,8 @@ */ package com.android.wallpaper.testing; +import android.content.Intent; + import com.android.wallpaper.module.UserEventLogger; import com.android.wallpaper.module.WallpaperPersister.WallpaperPosition; @@ -66,7 +68,7 @@ public class TestUserEventLogger implements UserEventLogger { } @Override - public void logAppLaunched() { + public void logAppLaunched(Intent launchSource) { // Do nothing. } -- cgit v1.2.3 From 9c3fa3419f771a6af6f4ac9cab5a709b96110b4e Mon Sep 17 00:00:00 2001 From: "Wesley.CW Wang" Date: Thu, 15 Oct 2020 14:56:14 +0800 Subject: Update robo properties config (2/2) - Update manifest parm to target project Test: tapas RunWallPaperPicker2RoboTests; m -j40 Change-Id: I6312f70de116378219b07bf51d5a4f42c7f6e75a --- robolectric_tests/config/robolectric.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/robolectric_tests/config/robolectric.properties b/robolectric_tests/config/robolectric.properties index 197c393..c222b11 100644 --- a/robolectric_tests/config/robolectric.properties +++ b/robolectric_tests/config/robolectric.properties @@ -1,2 +1,2 @@ -manifest=vendor/unbundled_google/packages/WallpaperPickerGoogle/AndroidManifest.xml +manifest=packages/apps/WallpaperPicker2/AndroidManifest.xml sdk=27 -- cgit v1.2.3 From 2bf0f35a1f8a215aa5a0c794e3098fddc40d8d6f Mon Sep 17 00:00:00 2001 From: Kunhung Li Date: Wed, 7 Oct 2020 15:38:47 +0800 Subject: Fix go back picker from full preview screen will crash - Monitor package changed when the surface was already created before and currently was in the background. - Reset surface's image view which is prepared for next surfaceCreated() time. Bug: 167949512 Test: Manual Change-Id: I2119949a7f6027d6aa242f0ac56379b44cf596a0 --- .../wallpaper/util/WallpaperSurfaceCallback.java | 79 +++++++++++++++++----- 1 file changed, 63 insertions(+), 16 deletions(-) diff --git a/src/com/android/wallpaper/util/WallpaperSurfaceCallback.java b/src/com/android/wallpaper/util/WallpaperSurfaceCallback.java index 64f13bd..1b39007 100644 --- a/src/com/android/wallpaper/util/WallpaperSurfaceCallback.java +++ b/src/com/android/wallpaper/util/WallpaperSurfaceCallback.java @@ -19,6 +19,7 @@ import static android.view.View.MeasureSpec.EXACTLY; import static android.view.View.MeasureSpec.makeMeasureSpec; import android.content.Context; +import android.service.wallpaper.WallpaperService; import android.view.Surface; import android.view.SurfaceControlViewHost; import android.view.SurfaceHolder; @@ -29,6 +30,9 @@ import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import com.android.wallpaper.R; +import com.android.wallpaper.module.Injector; +import com.android.wallpaper.module.InjectorProvider; +import com.android.wallpaper.module.PackageStatusNotifier; /** * Default implementation of {@link SurfaceHolder.Callback} to render a static wallpaper when the @@ -56,6 +60,10 @@ public class WallpaperSurfaceCallback implements SurfaceHolder.Callback { private final SurfaceView mWallpaperSurface; @Nullable private final SurfaceListener mListener; + private boolean mSurfaceCreated; + + private PackageStatusNotifier.Listener mAppStatusListener; + private PackageStatusNotifier mPackageStatusNotifier; public WallpaperSurfaceCallback(Context context, ImageView homePreview, SurfaceView wallpaperSurface, @Nullable SurfaceListener listener) { @@ -63,6 +71,18 @@ public class WallpaperSurfaceCallback implements SurfaceHolder.Callback { mHomePreview = homePreview; mWallpaperSurface = wallpaperSurface; mListener = listener; + + // Notify WallpaperSurface to reset image wallpaper when encountered live wallpaper's + // package been changed in background. + Injector injector = InjectorProvider.getInjector(); + mPackageStatusNotifier = injector.getPackageStatusNotifier(context); + mAppStatusListener = (packageName, status) -> { + if (status != PackageStatusNotifier.PackageStatus.REMOVED) { + resetHomeImageWallpaper(); + } + }; + mPackageStatusNotifier.addListener(mAppStatusListener, + WallpaperService.SERVICE_INTERFACE); } public WallpaperSurfaceCallback(Context context, ImageView homePreview, @@ -74,42 +94,69 @@ public class WallpaperSurfaceCallback implements SurfaceHolder.Callback { public void surfaceCreated(SurfaceHolder holder) { if (mLastSurface != holder.getSurface()) { mLastSurface = holder.getSurface(); - mHomeImageWallpaper = new ImageView(mContext); - mHomeImageWallpaper.setBackgroundColor( - ContextCompat.getColor(mContext, R.color.primary_color)); - mHomeImageWallpaper.measure(makeMeasureSpec(mHomePreview.getWidth(), EXACTLY), - makeMeasureSpec(mHomePreview.getHeight(), EXACTLY)); - mHomeImageWallpaper.layout(0, 0, mHomePreview.getWidth(), - mHomePreview.getHeight()); - - cleanUp(); - mHost = new SurfaceControlViewHost(mContext, - mContext.getDisplay(), mWallpaperSurface.getHostToken()); - mHost.setView(mHomeImageWallpaper, mHomeImageWallpaper.getWidth(), - mHomeImageWallpaper.getHeight()); - mWallpaperSurface.setChildSurfacePackage(mHost.getSurfacePackage()); + setupSurfaceWallpaper(/* forceClean= */ true); } if (mListener != null) { mListener.onSurfaceCreated(); } + mSurfaceCreated = true; } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } @Override - public void surfaceDestroyed(SurfaceHolder holder) { } + public void surfaceDestroyed(SurfaceHolder holder) { + mSurfaceCreated = false; + } /** - * Call to release resources. + * Call to release resources and app status listener. */ public void cleanUp() { + releaseHost(); + mPackageStatusNotifier.removeListener(mAppStatusListener); + } + + private void releaseHost() { if (mHost != null) { mHost.release(); mHost = null; } } + /** + * Reset existing image wallpaper by creating a new ImageView for SurfaceControlViewHost + * if surface state is not created. + */ + private void resetHomeImageWallpaper() { + if (mSurfaceCreated) { + return; + } + + if (mHost != null) { + setupSurfaceWallpaper(/* forceClean= */ false); + } + } + + private void setupSurfaceWallpaper(boolean forceClean) { + mHomeImageWallpaper = new ImageView(mContext); + mHomeImageWallpaper.setBackgroundColor( + ContextCompat.getColor(mContext, R.color.primary_color)); + mHomeImageWallpaper.measure(makeMeasureSpec(mHomePreview.getWidth(), EXACTLY), + makeMeasureSpec(mHomePreview.getHeight(), EXACTLY)); + mHomeImageWallpaper.layout(0, 0, mHomePreview.getWidth(), + mHomePreview.getHeight()); + if (forceClean) { + releaseHost(); + mHost = new SurfaceControlViewHost(mContext, + mContext.getDisplay(), mWallpaperSurface.getHostToken()); + } + mHost.setView(mHomeImageWallpaper, mHomeImageWallpaper.getWidth(), + mHomeImageWallpaper.getHeight()); + mWallpaperSurface.setChildSurfacePackage(mHost.getSurfacePackage()); + } + @Nullable public ImageView getHomeImageWallpaper() { return mHomeImageWallpaper; -- cgit v1.2.3 From 144d9b1384cb5dde00345f6b0fb29daad6b4d2a5 Mon Sep 17 00:00:00 2001 From: Chuck Liao Date: Wed, 21 Oct 2020 13:25:33 +0800 Subject: Fetch the wallpaper category from the server instead of the cache if the locale has been changed. Video: https://drive.google.com/file/d/12SjihyP1AlIDXOix72YnViWTC_UJUwul/view?usp=sharing Bug: 170789314 Change-Id: I15d6b1c8904436ad7e7abbac5d58dae56b7316ee --- src/com/android/wallpaper/module/DefaultCategoryProvider.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/com/android/wallpaper/module/DefaultCategoryProvider.java b/src/com/android/wallpaper/module/DefaultCategoryProvider.java index e687bf5..1986008 100755 --- a/src/com/android/wallpaper/module/DefaultCategoryProvider.java +++ b/src/com/android/wallpaper/module/DefaultCategoryProvider.java @@ -54,6 +54,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.List; +import java.util.Locale; import java.util.Set; import java.util.stream.Collectors; @@ -83,6 +84,7 @@ public class DefaultCategoryProvider implements CategoryProvider { // The network status of the last fetch from the server. @NetworkStatus private int mNetworkStatus; + private Locale mLocale; public DefaultCategoryProvider(Context context) { mAppContext = context.getApplicationContext(); @@ -105,6 +107,7 @@ public class DefaultCategoryProvider implements CategoryProvider { } mNetworkStatus = mNetworkStatusNotifier.getNetworkStatus(); + mLocale = getLocale(); doFetch(receiver, forceRefresh); } @@ -140,7 +143,8 @@ public class DefaultCategoryProvider implements CategoryProvider { @Override public void resetIfNeeded() { - if (mNetworkStatus != mNetworkStatusNotifier.getNetworkStatus()) { + if (mNetworkStatus != mNetworkStatusNotifier.getNetworkStatus() + || mLocale != getLocale()) { mCategories.clear(); mFetchedCategories = false; } @@ -164,6 +168,10 @@ public class DefaultCategoryProvider implements CategoryProvider { new FetchCategoriesTask(delegatingReceiver, mAppContext).execute(); } + private Locale getLocale() { + return mAppContext.getResources().getConfiguration().getLocales().get(0); + } + /** * AsyncTask subclass used for fetching all the categories and pushing them one at a time to * the receiver. -- cgit v1.2.3 From 7359aded55079d5dce82f0f16b687ebb100e642b Mon Sep 17 00:00:00 2001 From: Chuck Liao Date: Wed, 28 Oct 2020 20:55:11 +0800 Subject: Check if attaching activity is null before the runnable executing. The code in LivePreviewFragment#previewLiveWallpaper has the possibility to be executed after the activity which this LivePreviewFragment is attached to is destroyed. Add null check to prevent this runnable running without attached activity. Bug: 171774484 Change-Id: Icee08a71f5722d55970178ee29bbbb6d5b9effc1 --- src/com/android/wallpaper/picker/LivePreviewFragment.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/com/android/wallpaper/picker/LivePreviewFragment.java b/src/com/android/wallpaper/picker/LivePreviewFragment.java index d207809..c67dca3 100644 --- a/src/com/android/wallpaper/picker/LivePreviewFragment.java +++ b/src/com/android/wallpaper/picker/LivePreviewFragment.java @@ -309,9 +309,13 @@ public class LivePreviewFragment extends PreviewFragment implements private void previewLiveWallpaper(ImageView thumbnailView) { thumbnailView.post(() -> { + Activity activity = getActivity(); + if (activity == null) { + return; + } if (mWallpaperSurfaceCallback.getHomeImageWallpaper() != null) { - mWallpaper.getThumbAsset(requireActivity().getApplicationContext()) - .loadPreviewImage(requireActivity(), + mWallpaper.getThumbAsset(activity.getApplicationContext()) + .loadPreviewImage(activity, mWallpaperSurfaceCallback.getHomeImageWallpaper(), getResources().getColor(R.color.secondary_color)); } @@ -319,7 +323,7 @@ public class LivePreviewFragment extends PreviewFragment implements setUpLiveWallpaperPreview(mWallpaper, thumbnailView, new ColorDrawable(getResources().getColor( - R.color.secondary_color, getActivity().getTheme()))); + R.color.secondary_color, activity.getTheme()))); }); } -- cgit v1.2.3 From 988f91be899ed5f09581ff061d7bcd29f6550cc1 Mon Sep 17 00:00:00 2001 From: Santiago Etchebehere Date: Thu, 29 Oct 2020 16:19:21 -0700 Subject: Check grid provider permission Hide the grid option if grid provider requires a permission we don't have This is a port of ag/12229124 to the new utils class. Bug: 161858184 Bug: 171933052 Change-Id: I0f478663de5c110bf79b099522284f8d313861a2 --- src/com/android/wallpaper/util/PreviewUtils.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/com/android/wallpaper/util/PreviewUtils.java b/src/com/android/wallpaper/util/PreviewUtils.java index 5b1d857..48abef0 100644 --- a/src/com/android/wallpaper/util/PreviewUtils.java +++ b/src/com/android/wallpaper/util/PreviewUtils.java @@ -33,7 +33,7 @@ public class PreviewUtils { private final Context mContext; private final String mProviderAuthority; - private final ProviderInfo mProviderInfo; + private ProviderInfo mProviderInfo; public PreviewUtils(Context context, String authorityMetadataKey) { mContext = context; @@ -46,9 +46,15 @@ public class PreviewUtils { } else { mProviderAuthority = null; } - // TODO: check permissions if needed + mProviderInfo = TextUtils.isEmpty(mProviderAuthority) ? null : mContext.getPackageManager().resolveContentProvider(mProviderAuthority, 0); + if (mProviderInfo != null && !TextUtils.isEmpty(mProviderInfo.readPermission)) { + if (context.checkSelfPermission(mProviderInfo.readPermission) + != PackageManager.PERMISSION_GRANTED) { + mProviderInfo = null; + } + } } /** Render preview under the current grid option. */ -- cgit v1.2.3 From d665bee2d20cc3bd7a370729b870d1bbbd813d1a Mon Sep 17 00:00:00 2001 From: Chuck Liao Date: Mon, 5 Oct 2020 20:31:25 +0800 Subject: Disable the overscroll effect of ViewPager. If we set the padding to the ViewPager, the overscroll effect of one side of ViewPager will be pushed out of the screen. So disable the overscroll effect for consistency. Bug: 167495512 Change-Id: Idb99d6651ad566f85561d7586fab3155fddb05ff --- res/layout/preview_pager.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/res/layout/preview_pager.xml b/res/layout/preview_pager.xml index 563445d..41eb76f 100644 --- a/res/layout/preview_pager.xml +++ b/res/layout/preview_pager.xml @@ -26,7 +26,8 @@ android:id="@+id/preview_viewpager" android:layout_width="match_parent" android:layout_height="0dp" - android:layout_weight="1"/> + android:layout_weight="1" + android:overScrollMode="never"/> Date: Mon, 16 Nov 2020 19:26:29 +0800 Subject: Adjust motion event's location from scaled full preview Scale motion event's location back to screen size due to live wallpaper's reposition. Video: https://drive.google.com/file/d/1VCTAurC0VGsHYlI12r2vShxfHfc6AGjm/view?usp=sharing&resourcekey=0-YWMPhxaEGXFny5evarCBhA Bug: 167505517 Test: Manual Change-Id: I8eb4b54c7ec39327f21059063a515970844e874b --- src/com/android/wallpaper/picker/LivePreviewFragment.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/com/android/wallpaper/picker/LivePreviewFragment.java b/src/com/android/wallpaper/picker/LivePreviewFragment.java index c67dca3..1d04df0 100644 --- a/src/com/android/wallpaper/picker/LivePreviewFragment.java +++ b/src/com/android/wallpaper/picker/LivePreviewFragment.java @@ -264,11 +264,14 @@ public class LivePreviewFragment extends PreviewFragment implements private void setupCurrentWallpaperPreview() { mHomePreview.setOnTouchListener((v, ev) -> { if (mWallpaperConnection != null && mWallpaperConnection.getEngine() != null) { + float scaleRatio = + (float) mTouchForwardingLayout.getWidth() / (float) mScreenSize.x; int action = ev.getActionMasked(); if (action == MotionEvent.ACTION_DOWN) { mBottomActionBar.collapseBottomSheetIfExpanded(); } MotionEvent dup = MotionEvent.obtainNoHistory(ev); + dup.setLocation(ev.getX() / scaleRatio, ev.getY() / scaleRatio); try { mWallpaperConnection.getEngine().dispatchPointer(dup); if (action == MotionEvent.ACTION_UP) { -- cgit v1.2.3 From dcd22ff870a941434aaa0ae93a4394c4e6ba59bc Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Fri, 20 Nov 2020 06:24:07 -0800 Subject: Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I2c2d9876e3c58968222eac20d940576d4bce3c4d --- res/values-af/strings.xml | 1 + res/values-am/strings.xml | 1 + res/values-ar/strings.xml | 1 + res/values-as/strings.xml | 1 + res/values-az/strings.xml | 1 + res/values-b+sr+Latn/strings.xml | 3 ++- res/values-be/strings.xml | 1 + res/values-bg/strings.xml | 1 + res/values-bn/strings.xml | 1 + res/values-bs/strings.xml | 1 + res/values-ca/strings.xml | 1 + res/values-cs/strings.xml | 1 + res/values-da/strings.xml | 1 + res/values-de/strings.xml | 1 + res/values-el/strings.xml | 1 + res/values-es-rUS/strings.xml | 1 + res/values-es/strings.xml | 1 + res/values-et/strings.xml | 1 + res/values-eu/strings.xml | 1 + res/values-fa/strings.xml | 3 ++- res/values-fi/strings.xml | 5 +++-- res/values-fr-rCA/strings.xml | 1 + res/values-fr/strings.xml | 1 + res/values-gl/strings.xml | 1 + res/values-gu/strings.xml | 5 +++-- res/values-hi/strings.xml | 1 + res/values-hr/strings.xml | 1 + res/values-hu/strings.xml | 1 + res/values-hy/strings.xml | 1 + res/values-in/strings.xml | 1 + res/values-is/strings.xml | 1 + res/values-it/strings.xml | 1 + res/values-iw/strings.xml | 1 + res/values-ja/strings.xml | 1 + res/values-ka/strings.xml | 1 + res/values-kk/strings.xml | 1 + res/values-km/strings.xml | 1 + res/values-kn/strings.xml | 1 + res/values-ko/strings.xml | 1 + res/values-ky/strings.xml | 1 + res/values-lo/strings.xml | 1 + res/values-lt/strings.xml | 1 + res/values-lv/strings.xml | 1 + res/values-mk/strings.xml | 1 + res/values-ml/strings.xml | 1 + res/values-mn/strings.xml | 1 + res/values-mr/strings.xml | 1 + res/values-ms/strings.xml | 1 + res/values-my/strings.xml | 1 + res/values-nb/strings.xml | 1 + res/values-ne/strings.xml | 7 ++++--- res/values-nl/strings.xml | 1 + res/values-or/strings.xml | 1 + res/values-pa/strings.xml | 1 + res/values-pl/strings.xml | 1 + res/values-pt-rPT/strings.xml | 1 + res/values-ro/strings.xml | 1 + res/values-ru/strings.xml | 1 + res/values-si/strings.xml | 1 + res/values-sk/strings.xml | 1 + res/values-sl/strings.xml | 1 + res/values-sq/strings.xml | 1 + res/values-sr/strings.xml | 3 ++- res/values-sv/strings.xml | 1 + res/values-sw/strings.xml | 1 + res/values-ta/strings.xml | 1 + res/values-te/strings.xml | 1 + res/values-th/strings.xml | 1 + res/values-tl/strings.xml | 1 + res/values-tr/strings.xml | 1 + res/values-uk/strings.xml | 1 + res/values-ur/strings.xml | 1 + res/values-uz/strings.xml | 1 + res/values-vi/strings.xml | 1 + res/values-zh-rCN/strings.xml | 1 + res/values-zh-rHK/strings.xml | 1 + res/values-zh-rTW/strings.xml | 1 + res/values-zu/strings.xml | 1 + 78 files changed, 88 insertions(+), 10 deletions(-) diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index 2ca2d03..34efae7 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -93,4 +93,5 @@ "Vorige" "Muurpapier" "Muurpapiervoorskou" + "Die versameling bestaan nie" diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index 1bace37..1b0e681 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -93,4 +93,5 @@ "ቀዳሚ" "ልጣፍ" "የልጣፍ ቅድመ-እይታ" + "ስብስቡ የለም" diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 25c3a93..166a289 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -93,4 +93,5 @@ "الصفحة السابقة" "الخلفية" "معاينة عرض الشرائح" + "المجموعة غير متوفرة." diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml index 9303e2f..29e044e 100644 --- a/res/values-as/strings.xml +++ b/res/values-as/strings.xml @@ -93,4 +93,5 @@ "পূৰ্বৱৰ্তী" "ৱালপেপাৰ" "ৱালপেপাৰৰ পূৰ্বদৰ্শন" + "এই সংগ্ৰহটোৰ অস্তিত্ব নাই" diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml index f02e72e..bfb4432 100644 --- a/res/values-az/strings.xml +++ b/res/values-az/strings.xml @@ -93,4 +93,5 @@ "Əvvəlki" "Divar kağızı" "Divar Kağızı önizləməsi" + "Kolleksiya mövcud deyil" diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml index f9f63d7..ec27406 100644 --- a/res/values-b+sr+Latn/strings.xml +++ b/res/values-b+sr+Latn/strings.xml @@ -44,7 +44,7 @@ "Dnevna pozadina" "Dodirnite da biste uključili" "Pozadina se automatski menja svaki dan. Da biste dovršili podešavanje, dodirnite <strong>Podesi pozadinu</strong> na sledećem ekranu." - "Preuzimaj buduće pozadine samo preko Wi-Fi mreže" + "Preuzimaj buduće pozadine samo preko WiFi mreže" "Nastavi" "Preuzima se prva pozadina…" "Preuzimanje prve pozadine nije uspelo. Proverite podešavanja mreže i probajte ponovo." @@ -93,4 +93,5 @@ "Prethodna" "Pozadina" "Pregled pozadine" + "Kolekcija ne postoji" diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index 16bdadc..99af4c8 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -93,4 +93,5 @@ "Назад" "Шпалеры" "Перадпрагляд шпалер" + "Калекцыя не існуе" diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index 6f57003..97c6ee3 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -93,4 +93,5 @@ "Назад" "Тапет" "Визуализация на тапета" + "Колекцията не съществува" diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml index 8f60442..15f19e3 100644 --- a/res/values-bn/strings.xml +++ b/res/values-bn/strings.xml @@ -93,4 +93,5 @@ "আগের" "ওয়ালপেপার" "ওয়ালপেপার প্রিভিউ করুন" + "কালেকশন উপলভ্য নেই" diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml index 275b194..c813e77 100644 --- a/res/values-bs/strings.xml +++ b/res/values-bs/strings.xml @@ -93,4 +93,5 @@ "Nazad" "Pozadinska slika" "Pregled pozadinske slike" + "Kolekcija ne postoji" diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index 278b23e..6518a87 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -93,4 +93,5 @@ "Anterior" "Fons de pantalla" "Previsualitz. fons de pantalla" + "La col·lecció no existeix" diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index 1fb0701..1dbf0f8 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -93,4 +93,5 @@ "Předchozí" "Tapeta" "Náhled prezentace" + "Sbírka neexistuje" diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 184a25b..6b3b32a 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -93,4 +93,5 @@ "Forrige" "Baggrund" "Forhåndsvisning af baggrund" + "Samlingen eksisterer ikke" diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index efcd22c..40aa64a 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -93,4 +93,5 @@ "Zurück" "Hintergrund" "Hintergrundvorschau" + "Die Sammlung existiert nicht" diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index c078327..98a3468 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -93,4 +93,5 @@ "Προηγούμενη" "Ταπετσαρία" "Προεπισκόπηση ταπετσαρίας" + "Η συλλογή δεν υπάρχει." diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index f9e3498..bb14b25 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -93,4 +93,5 @@ "Anterior" "Fondo de pantalla" "Vista previa del fondo" + "La colección no existe" diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index e8f37df..e343d82 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -93,4 +93,5 @@ "Anterior" "Fondo de pantalla" "Vista previa de fondo" + "La colección no existe" diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml index 50a3118..7ed36e7 100644 --- a/res/values-et/strings.xml +++ b/res/values-et/strings.xml @@ -93,4 +93,5 @@ "Eelmine" "Taustapilt" "Taustapildi eelvaade" + "Kogu pole olemas" diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index 122391d..2f41165 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -93,4 +93,5 @@ "Aurrekoa" "Horma-papera" "Horma-paperaren aurrebista" + "Ez dago bildumarik" diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index a13dba1..ca5e503 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -43,7 +43,7 @@ "سرویس کاغذ‌دیواری پویا برای کاغذدیواری‌های چرخشی" "کاغذ‌دیواری روزانه" "برای روشن کردن، ضربه بزنید" - "‏کاغذ‌دیواری هر روز به‌طور خودکار تغییر خواهد کرد. برای اتمام راه‌اندازی، روی <strong>تنظیم کاغذدیواری </strong> در صفحه بعدی ضربه بزنید." + "‏کاغذ‌دیواری هر روز به‌طور خودکار تغییر خواهد کرد. برای اتمام راه‌اندازی، روی <strong>تنظیم کاغذدیواری </strong> در صفحه بعد ضربه بزنید." "‏کاغذ‌دیواری‌های بعدی فقط ازطریق Wi-Fi بارگیری شود" "ادامه" "درحال بارگیری اولین کاغذ‌دیواری..." @@ -93,4 +93,5 @@ "قبلی" "کاغذدیواری" "پیش‌نمایش کاغذدیواری" + "مجموعه وجود ندارد" diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index 1914f1b..1cc54b4 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -70,8 +70,8 @@ "Laitteella" "Android-taustakuva" "Live-taustakuvat" - "Omat valokuvat" - "Oma valokuva" + "Omat kuvat" + "Oma kuva" "Taustakuva" "Sovellusta ei ole asennettu." "Keskusta" @@ -93,4 +93,5 @@ "Edellinen" "Taustakuva" "Taustakuvan esikatselu" + "Kyseistä kokoelmaa ei ole olemassa" diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml index d31d006..fd32602 100644 --- a/res/values-fr-rCA/strings.xml +++ b/res/values-fr-rCA/strings.xml @@ -93,4 +93,5 @@ "Précédent" "Fond d\'écran" "Aperçu du fond d\'écran" + "La collection n\'existe pas" diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index f92dae4..fa92a24 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -93,4 +93,5 @@ "Précédente" "Fond d\'écran" "Aperçu du fond d\'écran" + "Cette collection n\'existe pas" diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml index 6791ddd..a61b3cb 100644 --- a/res/values-gl/strings.xml +++ b/res/values-gl/strings.xml @@ -93,4 +93,5 @@ "Anterior" "Fondo de pantalla" "Vista previa do fondo" + "A colección non existe" diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml index 9aea1a3..00b42ff 100644 --- a/res/values-gu/strings.xml +++ b/res/values-gu/strings.xml @@ -43,12 +43,12 @@ "સતત બદલાતા રહેતા વૉલપેપર માટે લાઇવ વૉલપેપર સેવા" "દૈનિક વૉલપેપર" "ચાલુ કરવા માટે ટૅપ કરો" - "વૉલપેપર દરરોજ આપમેળે બદલાશે. સેટઅપ પૂર્ણ કરવા માટે, આગલી સ્ક્રીન પર <strong>વૉલપેપર સેટ કરો</strong> પર ટૅપ કરો." + "વૉલપેપર દરરોજ ઑટોમૅટિક રીતે બદલાશે. સેટઅપ પૂર્ણ કરવા માટે, આગલી સ્ક્રીન પર <strong>વૉલપેપર સેટ કરો</strong> પર ટૅપ કરો." "ભવિષ્યમાં માત્ર વાઇ-ફાઇ પર વૉલપેપર ડાઉનલોડ કરજો" "આગળ વધો" "પ્રથમ વૉલપેપર ડાઉનલોડ કરી રહ્યાં છીએ…" "પ્રથમ વૉલપેપર ડાઉનલોડ કરવામાં અસમર્થ રહ્યાં. કૃપા કરીને તમારી નેટવર્ક સેટિંગ ચેક કરો અને ફરી પ્રયાસ કરો." - "વૉલપેપર દરરોજ આપમેળે બદલાશે" + "વૉલપેપર દરરોજ ઑટોમૅટિક રીતે બદલાશે" "સેટિંગ" "શોધખોળ કરો" "આગલું વૉલપેપર" @@ -93,4 +93,5 @@ "પાછળ" "વૉલપેપર" "વૉલપેપરનો પ્રીવ્યૂ કરો" + "સંગ્રહ અસ્તિત્વમાં નથી" diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index 927e71b..dda9af5 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -93,4 +93,5 @@ "पीछे जाएं" "वॉलपेपर" "वॉलपेपर की झलक देखें" + "वॉलपेपर का संग्रह मौजूद नहीं है" diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index dae9eaa..7fc8820 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -93,4 +93,5 @@ "Prethodno" "Pozadina" "Pregled pozadine" + "Zbirka ne postoji" diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index c1ffc67..668f13d 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -93,4 +93,5 @@ "Előző" "Háttérkép" "Háttérkép előnézete" + "Nincs ilyen gyűjtemény" diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml index 3bedcc2..6c042bb 100644 --- a/res/values-hy/strings.xml +++ b/res/values-hy/strings.xml @@ -93,4 +93,5 @@ "Հետ" "Պաստառ" "Պաստառի նախադիտում" + "Հավաքածուն գոյություն չունի" diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index c86abd5..1a51734 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -93,4 +93,5 @@ "Sebelumnya" "Wallpaper" "Pratinjau wallpaper" + "Koleksi tidak ada" diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml index 60764e1..876517d 100644 --- a/res/values-is/strings.xml +++ b/res/values-is/strings.xml @@ -93,4 +93,5 @@ "Fyrri" "Veggfóður" "Forskoðun veggfóðurs" + "Safnið er ekki til" diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index f3fc99f..c838a98 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -93,4 +93,5 @@ "Indietro" "Sfondo" "Anteprima sfondo" + "La raccolta non esiste" diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index 5213a6c..ef79aec 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -93,4 +93,5 @@ "הקודם" "טפט" "תצוגה מקדימה של הטפט" + "האוסף לא קיים" diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 3178ee3..9f83264 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -93,4 +93,5 @@ "前へ" "壁紙" "壁紙のプレビュー" + "コレクションは存在しません" diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml index 238ab1f..b527549 100644 --- a/res/values-ka/strings.xml +++ b/res/values-ka/strings.xml @@ -93,4 +93,5 @@ "წინა" "ფონი" "ფონის გადახედვა" + "კოლექცია არ არსებობს" diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml index f681d0c..48d0911 100644 --- a/res/values-kk/strings.xml +++ b/res/values-kk/strings.xml @@ -93,4 +93,5 @@ "Алдыңғы" "Тұсқағаз" "Тұсқағазды алдын ала қарау" + "Жинақ жоқ." diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml index eff70f8..25debf9 100644 --- a/res/values-km/strings.xml +++ b/res/values-km/strings.xml @@ -93,4 +93,5 @@ "មុន" "ផ្ទាំងរូបភាព" "ការមើលផ្ទាំង​រូបភាពសាកល្បង" + "បណ្ដុំមិនមានទេ" diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml index 2a51162..232641c 100644 --- a/res/values-kn/strings.xml +++ b/res/values-kn/strings.xml @@ -93,4 +93,5 @@ "ಹಿಂದಕ್ಕೆ" "ವಾಲ್‌ಪೇಪರ್‌" "ವಾಲ್‌ಪೇಪರ್ ಪೂರ್ವವೀಕ್ಷಣೆ" + "ಸಂಗ್ರಹಣೆ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ" diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 18db06f..2be0992 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -93,4 +93,5 @@ "이전" "배경화면" "배경화면 미리보기" + "컬렉션이 없습니다." diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml index 3de5668..8e02782 100644 --- a/res/values-ky/strings.xml +++ b/res/values-ky/strings.xml @@ -93,4 +93,5 @@ "Мурунку" "Тушкагаз" "Тушкагазды алдын ала көрүү" + "Мындай жыйнак жок" diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml index ebf8ec2..f3cbe2b 100644 --- a/res/values-lo/strings.xml +++ b/res/values-lo/strings.xml @@ -93,4 +93,5 @@ "ກ່ອນໜ້າ" "ຮູບພື້ນຫຼັງ" "ຕົວຢ່າງຮູບພື້ນຫຼັງ" + "ບໍ່ມິຄໍເລັກຊັນ" diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index 17852fb..a03226e 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -93,4 +93,5 @@ "Ankstesnis" "Ekrano fonas" "Ekrano fono peržiūra" + "Rinkinio nėra" diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index 1e7c1d7..f7778a9 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -93,4 +93,5 @@ "Atpakaļ" "Fona tapete" "Fona tapetes priekšskatījums" + "Kolekcija nepastāv" diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml index 7efd41a..c4dea2f 100644 --- a/res/values-mk/strings.xml +++ b/res/values-mk/strings.xml @@ -93,4 +93,5 @@ "Претходна" "Тапет" "Преглед на тапет" + "Збирката не постои" diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml index cdd63ef..ffef7b2 100644 --- a/res/values-ml/strings.xml +++ b/res/values-ml/strings.xml @@ -93,4 +93,5 @@ "മുമ്പത്തെ" "വാൾപേപ്പർ" "വാൾപേപ്പർ പ്രിവ്യൂ" + "ശേഖരം നിലവിലില്ല" diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml index ee4f411..9d3515d 100644 --- a/res/values-mn/strings.xml +++ b/res/values-mn/strings.xml @@ -93,4 +93,5 @@ "Өмнөх" "Ханын зураг" "Ханын зургийг урьдчилан үзэх" + "Ийм цуглуулга байхгүй" diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml index 7dd041f..f70ede7 100644 --- a/res/values-mr/strings.xml +++ b/res/values-mr/strings.xml @@ -93,4 +93,5 @@ "मागील" "वॉलपेपर" "वॉलपेपर पूर्वावलोकन" + "संग्रह अस्तित्वात नाही" diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml index b67e3a1..929a694 100644 --- a/res/values-ms/strings.xml +++ b/res/values-ms/strings.xml @@ -93,4 +93,5 @@ "Sebelumnya" "Kertas dinding" "Pratonton kertas dinding" + "Koleksi tersebut tidak wujud" diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml index 2213288..9297a26 100644 --- a/res/values-my/strings.xml +++ b/res/values-my/strings.xml @@ -93,4 +93,5 @@ "ယခင်" "နောက်ခံ" "နောက်ခံပုံ အစမ်းကြည့်ရှုခြင်း" + "ဤစုစည်းမှု မရှိပါ" diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index 84bf46e..af24134 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -93,4 +93,5 @@ "Forrige" "Bakgrunn" "Forhåndsvisning av bakgrunn" + "Samlingen eksisterer ikke" diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml index c4fef19..f50a99a 100644 --- a/res/values-ne/strings.xml +++ b/res/values-ne/strings.xml @@ -38,7 +38,7 @@ "गृह स्क्रिन र लक स्क्रिन" "छवि परिवर्तन हुने वालपेपर" "यहाँ हालको वालपेपर देखाउन %1$s लाई तपाईंको यन्त्रको भण्डारणमाथिको पहुँच अनिवार्य हुन्छ।" - "यहाँ हालैको वालपेपर देखाउन वालपेपरहरूलाई तपाईंको यन्त्रको भण्डारणमाथिको पहुँच अनिवार्य हुन्छ।\n\nयो सेटिङ बदल्न वालपेपरहरूको अनुप्रयोगसम्बन्धी जानकारीमा रहेको अनुमति क्षेत्रमा जानुहोस्।" + "यहाँ हालैको वालपेपर देखाउन वालपेपरहरूलाई तपाईंको यन्त्रको भण्डारणमाथिको पहुँच अनिवार्य हुन्छ।\n\nयो सेटिङ बदल्न वालपेपरहरूको एपसम्बन्धी जानकारीमा रहेको अनुमति क्षेत्रमा जानुहोस्।" "पहुँच राख्न दिनुहोस्" "परिवर्तन हुने वालपेपरसम्बन्धी सेवाका लागि लाइभ वालपेपरहरू" "दैनिक वालपेपर" @@ -70,8 +70,8 @@ "यन्त्रका वालपेपर" "Android वालपेपर" "लाइभ वालपेपरहरू" - "मेरा तस्बिरहरू" - "मेरो तस्बिर" + "मेरा फोटोहरू" + "मेरो फोटो" "वालपेपर" "एप स्थापित छैन।" "मध्यभाग" @@ -93,4 +93,5 @@ "अघिल्लो" "वालपेपर" "वालपेपरको प्रिभ्यु" + "यो सङ्ग्रह छैन" diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index 4a7cb49..569c089 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -93,4 +93,5 @@ "Vorige" "Achtergrond" "Achtergrondvoorbeeld" + "De collectie bestaat niet" diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml index fcf6a75..54d485e 100644 --- a/res/values-or/strings.xml +++ b/res/values-or/strings.xml @@ -93,4 +93,5 @@ "ପୂର୍ବବର୍ତ୍ତୀ" "ୱାଲପେପର୍" "ୱାଲପେପରର ପ୍ରିଭ୍ୟୁ" + "ସଂଗ୍ରହ ଉପଲବ୍ଧ ନାହିଁ" diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml index 763afa5..87a1f04 100644 --- a/res/values-pa/strings.xml +++ b/res/values-pa/strings.xml @@ -93,4 +93,5 @@ "ਪਿੱਛੇ ਜਾਓ" "ਵਾਲਪੇਪਰ" "ਵਾਲਪੇਪਰ ਦੀ ਪੂਰਵ-ਝਲਕ" + "ਸੰਗ੍ਰਹਿ ਮੌਜੂਦ ਨਹੀਂ ਹੈ" diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index 54dfb14..a62fdc5 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -93,4 +93,5 @@ "Wstecz" "Tapeta" "Podgląd tapety" + "Taka kolekcja nie istnieje" diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index ea3c288..ace4431 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -93,4 +93,5 @@ "Anterior" "Imagem de fundo" "Pré-visual. da imagem de fundo" + "A coleção não existe." diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index 4982b64..8a9c44d 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -93,4 +93,5 @@ "Înapoi" "Imagine de fundal" "Previzualizarea imaginii de fundal" + "Colecția nu există" diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 7f8e37b..d807ba7 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -93,4 +93,5 @@ "Предыдущая страница" "Обои" "Предварительный просмотр обоев" + "Такой подборки не существует." diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml index e63a2d2..2a6288e 100644 --- a/res/values-si/strings.xml +++ b/res/values-si/strings.xml @@ -93,4 +93,5 @@ "පෙර" "වෝල්පේපරය" "වෝල්පේපර පෙරදසුන" + "එකතුව නොපවතී" diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index 1da2c15..a77c513 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -93,4 +93,5 @@ "Späť" "Tapeta" "Ukážka tapety" + "Zbierka neexistuje" diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index e56b978..abb8ee8 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -93,4 +93,5 @@ "Nazaj" "Zaslonsko ozadje" "Predogled zaslonskih ozadij" + "Zbirka ne obstaja" diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml index a92579f..03ed073 100644 --- a/res/values-sq/strings.xml +++ b/res/values-sq/strings.xml @@ -93,4 +93,5 @@ "Pas" "Imazhi i sfondit" "Pamja paraprake e imazhit të sfondit" + "Koleksioni nuk ekziston" diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index 447f00e..ad22cb9 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -44,7 +44,7 @@ "Дневна позадина" "Додирните да бисте укључили" "Позадина се аутоматски мења сваки дан. Да бисте довршили подешавање, додирните <strong>Подеси позадину</strong> на следећем екрану." - "Преузимај будуће позадине само преко Wi-Fi мреже" + "Преузимај будуће позадине само преко WiFi мреже" "Настави" "Преузима се прва позадина…" "Преузимање прве позадине није успело. Проверите подешавања мреже и пробајте поново." @@ -93,4 +93,5 @@ "Претходна" "Позадина" "Преглед позадине" + "Колекција не постоји" diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index c03d38b..c496885 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -93,4 +93,5 @@ "Föregående" "Bakgrund" "Förhandsgranska bakgrunden" + "Samlingen finns inte" diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index 71beaf9..ff90209 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -93,4 +93,5 @@ "Uliotangulia" "Mandhari" "Onyesho la kukagua mandhari" + "Mkusanyiko huu haupo" diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml index c0e601c..09478ba 100644 --- a/res/values-ta/strings.xml +++ b/res/values-ta/strings.xml @@ -93,4 +93,5 @@ "முந்தைய பக்கத்திற்குச் செல்வதற்கான பட்டன்" "வால்பேப்பர்" "வால்பேப்பர் மாதிரிக்காட்சி" + "இந்தத் தொகுப்பு இல்லை" diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml index 1ad45d2..f371db9 100644 --- a/res/values-te/strings.xml +++ b/res/values-te/strings.xml @@ -93,4 +93,5 @@ "మునుపటి" "వాల్‌పేపర్" "వాల్‌పేపర్ ప్రివ్యూ" + "ఈ సేకరణ అందుబాటులో లేదు" diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index 53b3b16..494a5c7 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -93,4 +93,5 @@ "ก่อนหน้า" "วอลเปเปอร์" "พรีวิววอลเปเปอร์" + "ไม่มีคอลเล็กชัน" diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index a24647a..4e13333 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -93,4 +93,5 @@ "Nauna" "Wallpaper" "Preview ng wallpaper" + "Wala ang koleksyon" diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 782483b..2b78d20 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -93,4 +93,5 @@ "Önceki" "Duvar kağıdı" "Duvar kağıdı ön izleme" + "Koleksiyon mevcut değil" diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index 341f50c..73b1c5a 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -93,4 +93,5 @@ "Назад" "Фоновий малюнок" "Перегляд фонового малюнка" + "Колекція не існує" diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml index 50f7791..6c7552b 100644 --- a/res/values-ur/strings.xml +++ b/res/values-ur/strings.xml @@ -93,4 +93,5 @@ "گزشتہ" "وال پیپر" "وال پیپر کا پیش منظر" + "مجموعہ موجود نہیں ہے" diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml index d66df05..a906905 100644 --- a/res/values-uz/strings.xml +++ b/res/values-uz/strings.xml @@ -93,4 +93,5 @@ "Avvalgisi" "Fon rasmi" "Fon rasmiga razm solish" + "Bunday terma mavjud emas" diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index d8f314c..199cca2 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -93,4 +93,5 @@ "Trước" "Hình nền" "Xem trước hình nền" + "Bộ sưu tập không tồn tại" diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 82aa3e5..7c9404b 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -93,4 +93,5 @@ "上一页" "壁纸" "壁纸预览" + "该集合不存在" diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index fcd8ecd..4382f14 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -93,4 +93,5 @@ "返回" "桌布" "預覽桌布" + "桌布集不存在" diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index c602491..e191907 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -93,4 +93,5 @@ "上一頁" "桌布" "桌布預覽" + "這個系列不存在" diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index 5966df3..00df6c0 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -93,4 +93,5 @@ "Okwangaphambilini" "Isithombe sangemuva" "Ukubuka kuqala kwesithombe sangemuva" + "Uqoqo alutholakali" -- cgit v1.2.3 From 6203d11757a58e6f18382ec6b06a1cd1668fa2d0 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Thu, 10 Dec 2020 03:02:46 -0800 Subject: Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: Ifb2c9e56a665257740d993c326a9646464993d0d --- res/values-ar/strings.xml | 4 +-- res/values-mn/strings.xml | 82 +++++++++++++++++++++++------------------------ 2 files changed, 43 insertions(+), 43 deletions(-) diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 166a289..002e21a 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -21,7 +21,7 @@ "فئات الخلفيات" - "تعيين كخلفية" + "ضبط كصورة خلفية" "جارٍ تعيين الخلفية…" "إعادة المحاولة" "يتعذّر تعيين الخلفية." @@ -32,7 +32,7 @@ "الشاشة الرئيسية" "شاشة القفل" "الشاشة الرئيسية وشاشة القفل" - "تعيين كخلفية" + "ضبط كصورة خلفية" "الشاشة الرئيسية" "شاشة القفل" "الشاشة الرئيسية وشاشة القفل" diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml index 9d3515d..902d57b 100644 --- a/res/values-mn/strings.xml +++ b/res/values-mn/strings.xml @@ -17,62 +17,62 @@ - "Ханын зураг" + "Дэлгэцийн зураг" - "Ханийн зургийн ангилал" - "Ханын зураг тохируулах" - "Ханын зургийг тохируулж байна…" + "Дэлгэцийн зургийн ангилал" + "Дэлгэцийн зураг тохируулах" + "Дэлгэцийн зургийг тохируулж байна…" "Дахин оролдох" - "Ханын зургийг тохируулах боломжгүй байна." + "Дэлгэцийн зургийг тохируулах боломжгүй байна." "Дэлгэцийн зургийг ачаалах боломжгүй байна. Зураг нь гэмтэлтэй буюу эсвэл ашиглах боломжгүй байна." - "Одоогоор тохируулсан ханын зураг" - "Өдөр тутмын ханын зураг" + "Одоогоор тохируулсан дэлгэцийн зураг" + "Өдөр тутмын дэлгэцийн зураг" "Нүүр болон түгжигдсэн дэлгэц" "Үндсэн нүүр" "Түгжигдсэн дэлгэц" "Нүүр хуудас болон түгжээ" - "Ханын зураг тохируулах" + "Дэлгэцийн зураг тохируулах" "Үндсэн нүүр" "Түгжигдсэн дэлгэц" "Үндсэн нүүр болон түгжих дэлгэц" - "Ханын зургийг эргүүлж байна" - "Одоогийн ханын зургийг энд харуулахын тулд %1$s таны төхөөрөмжийн санд хандах шаардлагатай байна." - "Одоогийн ханын зургийг энд харуулахын тулд Ханын зураг таны төхөөрөмжийн санд хандах шаардлагатай байна.\n\nЭнэ тохиргоог өөрчлөх бол Ханын зургийн аппын мэдээллийн Зөвшөөрөл хэсэгт очно уу." + "Дэлгэцийн зургийг эргүүлж байна" + "Одоогийн дэлгэцийн зургийг энд харуулахын тулд %1$s таны төхөөрөмжийн санд хандах шаардлагатай байна." + "Одоогийн дэлгэцийн зургийг энд харуулахын тулд Дэлгэцийн зураг таны төхөөрөмжийн санд хандах шаардлагатай байна.\n\nЭнэ тохиргоог өөрчлөх бол Дэлгэцийн зургийн аппын мэдээллийн Зөвшөөрөл хэсэгт очно уу." "Хандалтыг зөвшөөрөх" - "Ханын зургийг эргүүлэх хөдөлгөөнт ханын зургийн үйлчилгээ" - "Өдөр тутмын ханын зураг" + "Дэлгэцийн зургийг эргүүлэх дэлгэцийн хөдөлгөөнт зургийн үйлчилгээ" + "Өдөр тутмын дэлгэцийн зураг" "Асаахын тулд товшино уу" - "Ханын зургийг өдөр бүр автоматаар солино. Тохируулгыг дуусгахын тулд дараагийн дэлгэцийн <strong>Ханын зураг тохируулах</strong> гэснийг товшино уу." - "Цаашдын ханын зургийг зөвхөн Wi-Fi-р татах" + "Дэлгэцийн зургийг өдөр бүр автоматаар солино. Тохируулгыг дуусгахын тулд дараагийн дэлгэцийн <strong>Дэлгэцийн зураг тохируулах</strong> гэснийг товшино уу." + "Цаашдын дэлгэцийн зургийг зөвхөн Wi-Fi-р татах" "Үргэлжлүүлэх" - "Эхний ханын зургийг татаж байна…" - "Эхний ханын зургийг татах боломжгүй байна. Сүлжээний тохиргоогоо шалгаад дахин оролдоно уу." - "Ханын зургийг өдөр бүр автоматаар солино" + "Эхний дэлгэцийн зургийг татаж байна…" + "Эхний дэлгэцийн зургийг татах боломжгүй байна. Сүлжээний тохиргоогоо шалгаад дахин оролдоно уу." + "Дэлгэцийн зургийг өдөр бүр автоматаар солино" "Тохиргоо" "Судлах" - "Дараагийн ханын зураг" - "Ханын зураг тохируулах тохиргоог энэ төхөөрөмжид идэвхгүй болгосон байна" - "Таны төхөөрөмжийн админ ханын зураг тохируулах тохиргоог идэвхгүй болгосон байна" - "Ханын зургийг амжилттай тохирууллаа" - "Ханын зургийг харахын тулд танд интернэт холболт шаардлагатай. Интернэтэд холбогдоод дахин оролдоно уу." - "Үндсэн нүүрэнд одоогоор тохируулсан ханын зургийн өнгөц зураг" - "Түгжих дэлгэцэд одоогоор тохируулсан ханын зургийн өнгөц зураг" - "Одоогоор тохируулсан ханын зургийн өнгөц зураг" - "Ханын зургийн өнгөц зураг" - "Үндсэн нүүрийн ханын зургийг судлах" - "Түгжих дэлгэцийн ханын зургийг судлах" - "Үндсэн нүүрийн өдөр тутмын ханын зургийг сэргээх" - "Өдөр тутмын ханын зургийг сэргээх" - "Өдөр тутмын ханын зургийг сэргээж байна…" - "Өдөр тутмын ханын зургийг сэргээж чадсангүй. Сүлжээний холболтоо шалгаад дахин оролдоно уу." - "Төхөөрөмжийн ханын зураг" + "Дараагийн дэлгэцийн зураг" + "Дэлгэцийн зураг тохируулах тохиргоог энэ төхөөрөмжид идэвхгүй болгосон байна" + "Таны төхөөрөмжийн админ дэлгэцийн зураг тохируулах тохиргоог идэвхгүй болгосон байна" + "Дэлгэцийн зургийг амжилттай тохирууллаа" + "Дэлгэцийн зургийг харахын тулд танд интернэт холболт шаардлагатай. Интернэтэд холбогдоод дахин оролдоно уу." + "Үндсэн нүүрэнд одоогоор тохируулсан дэлгэцийн зургийн өнгөц зураг" + "Түгжих дэлгэцэд одоогоор тохируулсан дэлгэцийн зургийн өнгөц зураг" + "Одоогоор тохируулсан дэлгэцийн зургийн өнгөц зураг" + "Дэлгэцийн зургийн өнгөц зураг" + "Үндсэн нүүрийн дэлгэцийн зургийг судлах" + "Түгжих дэлгэцийн дэлгэцийн зургийг судлах" + "Үндсэн нүүрийн өдөр тутмын дэлгэцийн зургийг сэргээх" + "Өдөр тутмын дэлгэцийн зургийг сэргээх" + "Өдөр тутмын дэлгэцийн зургийг сэргээж байна…" + "Өдөр тутмын дэлгэцийн зургийг сэргээж чадсангүй. Сүлжээний холболтоо шалгаад дахин оролдоно уу." + "Төхөөрөмжийн дэлгэцийн зураг" "Төхөөрөмжид хадгалсан" - "Андройдын ханын зураг" - "Хөдөлгөөнт ханын зураг" + "Андройдын дэлгэцийн зураг" + "Дэлгэцийн хөдөлгөөнт зураг" "Миний зураг" "Миний зураг" - "Ханын зураг" + "Дэлгэцийн зураг" "Аппыг суулгаагүй байна." "Гол хэсэг" "Голлуулж тайрах" @@ -82,16 +82,16 @@ "Өөрчлөх" "Тохиргоо…" "Устгах" - "Энэ ханын зургийг утаснаасаа устгах уу?" + "Энэ дэлгэцийн зургийг утаснаасаа устгах уу?" "Буцах" "Засах" "Татах" - "Слайдаар харуулах ханын зураг" + "Слайдаар харуулах дэлгэцийн зураг" "Хэрэгжүүлэх" "Хуудас %2$d%1$d" "Дараах" "Өмнөх" - "Ханын зураг" - "Ханын зургийг урьдчилан үзэх" + "Дэлгэцийн зураг" + "Дэлгэцийн зургийг урьдчилан үзэх" "Ийм цуглуулга байхгүй" -- cgit v1.2.3 From a9690e6668f9c5e1dcfaf6466c55792545686427 Mon Sep 17 00:00:00 2001 From: Kunhung Li Date: Wed, 9 Dec 2020 12:31:59 +0800 Subject: Fix TalkBack can't say in "Name your style" page Add getAccessibilityTitle() for further extension. Bug: 174213366 Test: Manual Change-Id: I0a659049ffb4bde8bc95346e3984ca67d40536c2 --- src/com/android/wallpaper/picker/AppbarFragment.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/com/android/wallpaper/picker/AppbarFragment.java b/src/com/android/wallpaper/picker/AppbarFragment.java index b4db49f..042a179 100644 --- a/src/com/android/wallpaper/picker/AppbarFragment.java +++ b/src/com/android/wallpaper/picker/AppbarFragment.java @@ -101,6 +101,10 @@ public abstract class AppbarFragment extends BottomActionBarFragment return null; } + protected String getAccessibilityTitle() { + return null; + } + protected void setTitle(CharSequence title) { if (mToolbar == null) { return; @@ -114,7 +118,9 @@ public abstract class AppbarFragment extends BottomActionBarFragment // Set Activity title to make TalkBack announce title after updating toolbar title. if (getActivity() != null) { - getActivity().setTitle(title); + String accessibilityTitle = getAccessibilityTitle(); + getActivity().setTitle(TextUtils.isEmpty(accessibilityTitle) ? title + : accessibilityTitle); } } -- cgit v1.2.3 From ebef4f1094ebe4f10e84909e6876acff2eddbf34 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Wed, 16 Dec 2020 01:31:14 -0800 Subject: Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I747f8bc3601469ccd36b17b030c5037b59048685 --- res/values-fa/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index ca5e503..d24f940 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -92,6 +92,6 @@ "بعدی" "قبلی" "کاغذدیواری" - "پیش‌نمایش کاغذدیواری" + "پیش‌نمای کاغذدیواری" "مجموعه وجود ندارد" -- cgit v1.2.3 From 3abf15b6b9179863f015ce16ebf682287c4caba0 Mon Sep 17 00:00:00 2001 From: Chuck Liao Date: Thu, 17 Dec 2020 22:33:02 +0800 Subject: Unregister the package event listeners when they are not used. If we don't unregister them, there will be many redundant listeners and it will cause we fetch wallpapers from the server many times in a short period when receiving the package change event. For example, it will cause loading wallpapers takes lots of time.(Video:https://drive.google.com/file/d/12nPSrePI0xA1cLrNLOQo1y30WNY7L1W2/view?usp=sharing&resourcekey=0-Y7NWmg3Qax9Qi9UwMVs16Q) Bug: 175867467 Change-Id: Ie111b5c1e700f3357be4cb0b006de8d7a3483984 --- src/com/android/wallpaper/picker/CategoryFragment.java | 7 +++++++ .../android/wallpaper/picker/CategorySelectorFragment.java | 11 +++++++++++ src/com/android/wallpaper/picker/TopLevelPickerActivity.java | 5 +++++ 3 files changed, 23 insertions(+) diff --git a/src/com/android/wallpaper/picker/CategoryFragment.java b/src/com/android/wallpaper/picker/CategoryFragment.java index 764a546..74fc5c1 100755 --- a/src/com/android/wallpaper/picker/CategoryFragment.java +++ b/src/com/android/wallpaper/picker/CategoryFragment.java @@ -109,6 +109,8 @@ public class CategoryFragment extends AppbarFragment boolean isNavigationTabsContained(); void fetchCategories(); + + void cleanUp(); } public static CategoryFragment newInstance(CharSequence title) { @@ -449,6 +451,11 @@ public class CategoryFragment extends AppbarFragment getFragmentHost().fetchCategories(); } + @Override + public void cleanUp() { + getFragmentHost().cleanUp(); + } + @Override public void hideBottomActionBar() { mBottomActionBar.hide(); diff --git a/src/com/android/wallpaper/picker/CategorySelectorFragment.java b/src/com/android/wallpaper/picker/CategorySelectorFragment.java index 5433116..198bd1d 100644 --- a/src/com/android/wallpaper/picker/CategorySelectorFragment.java +++ b/src/com/android/wallpaper/picker/CategorySelectorFragment.java @@ -95,6 +95,11 @@ public class CategorySelectorFragment extends Fragment { */ void fetchCategories(); + /** + * Cleans up the listeners which will be notified when there's a package event. + */ + void cleanUp(); + /** * Hides the {@link com.android.wallpaper.widget.BottomActionBar}. */ @@ -141,6 +146,12 @@ public class CategorySelectorFragment extends Fragment { return view; } + @Override + public void onDestroyView() { + getCategorySelectorFragmentHost().cleanUp(); + super.onDestroyView(); + } + /** * Inserts the given category into the categories list in priority order. */ diff --git a/src/com/android/wallpaper/picker/TopLevelPickerActivity.java b/src/com/android/wallpaper/picker/TopLevelPickerActivity.java index 1c0c4c2..77bbd58 100755 --- a/src/com/android/wallpaper/picker/TopLevelPickerActivity.java +++ b/src/com/android/wallpaper/picker/TopLevelPickerActivity.java @@ -807,6 +807,11 @@ public class TopLevelPickerActivity extends BaseActivity implements WallpapersUi mDelegate.initialize(!mDelegate.getCategoryProvider().isCategoriesFetched()); } + @Override + public void cleanUp() { + mDelegate.cleanUp(); + } + @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { -- cgit v1.2.3 From 16cf06032e1d2f22c952324f50a69b7013c1d631 Mon Sep 17 00:00:00 2001 From: Santiago Etchebehere Date: Fri, 11 Dec 2020 17:04:18 -0800 Subject: Adjust cropping of current wallpaper preview for RTL When in RTL, the current wallpaper is centered on the rightmost side of the image when using static wallpapers. Make sure the preview follows this same behavior. Bug: 175610692 Change-Id: I8662375bbd8224b2b882a34939f7d11d67205a7d --- src/com/android/wallpaper/asset/Asset.java | 7 ++++--- .../wallpaper/asset/BitmapCachingAsset.java | 5 +++-- .../wallpaper/asset/BuiltInWallpaperAsset.java | 2 +- .../android/wallpaper/asset/ContentUriAsset.java | 4 ++-- .../wallpaper/asset/CurrentWallpaperAssetV16.java | 2 +- .../wallpaper/asset/LiveWallpaperThumbAsset.java | 2 +- .../android/wallpaper/asset/StreamableAsset.java | 24 +++++++++++++++------- .../android/wallpaper/module/BitmapCropper.java | 7 ++++--- .../wallpaper/module/DefaultBitmapCropper.java | 6 +++--- .../module/DefaultWallpaperPersister.java | 12 ++++------- .../wallpaper/picker/ImagePreviewFragment.java | 15 +++++++++----- .../com/android/wallpaper/testing/TestAsset.java | 2 +- .../wallpaper/testing/TestBitmapCropper.java | 4 ++-- 13 files changed, 53 insertions(+), 39 deletions(-) diff --git a/src/com/android/wallpaper/asset/Asset.java b/src/com/android/wallpaper/asset/Asset.java index dc4a5e6..f600e84 100755 --- a/src/com/android/wallpaper/asset/Asset.java +++ b/src/com/android/wallpaper/asset/Asset.java @@ -82,16 +82,16 @@ public abstract class Asset { /** * Decodes and downscales a bitmap region off the main UI thread. - * * @param rect Rect representing the crop region in terms of the original image's * resolution. * @param targetWidth Width of target view in physical pixels. * @param targetHeight Height of target view in physical pixels. + * @param shouldAdjustForRtl whether the region selected should be adjusted for RTL (that is, + * the crop region will be considered starting from the right) * @param receiver Called with the decoded bitmap region or null if there was an error - * decoding the bitmap region. */ public abstract void decodeBitmapRegion(Rect rect, int targetWidth, int targetHeight, - BitmapReceiver receiver); + boolean shouldAdjustForRtl, BitmapReceiver receiver); /** * Calculates the raw dimensions of the asset at its original resolution off the main UI thread. @@ -283,6 +283,7 @@ public abstract class Asset { BitmapCropper bitmapCropper = InjectorProvider.getInjector().getBitmapCropper(); bitmapCropper.cropAndScaleBitmap(this, /* scale= */ 1f, visibleRawWallpaperRect, + WallpaperCropUtils.isRtl(activity), new BitmapCropper.Callback() { @Override public void onBitmapCropped(Bitmap croppedBitmap) { diff --git a/src/com/android/wallpaper/asset/BitmapCachingAsset.java b/src/com/android/wallpaper/asset/BitmapCachingAsset.java index 5bc3703..62222f4 100644 --- a/src/com/android/wallpaper/asset/BitmapCachingAsset.java +++ b/src/com/android/wallpaper/asset/BitmapCachingAsset.java @@ -101,8 +101,9 @@ public class BitmapCachingAsset extends Asset { @Override public void decodeBitmapRegion(Rect rect, int targetWidth, int targetHeight, - BitmapReceiver receiver) { - mOriginalAsset.decodeBitmapRegion(rect, targetWidth, targetHeight, receiver); + boolean shouldAdjustForRtl, BitmapReceiver receiver) { + mOriginalAsset.decodeBitmapRegion(rect, targetWidth, targetHeight, shouldAdjustForRtl, + receiver); } @Override diff --git a/src/com/android/wallpaper/asset/BuiltInWallpaperAsset.java b/src/com/android/wallpaper/asset/BuiltInWallpaperAsset.java index 1c73511..4d006ca 100755 --- a/src/com/android/wallpaper/asset/BuiltInWallpaperAsset.java +++ b/src/com/android/wallpaper/asset/BuiltInWallpaperAsset.java @@ -67,7 +67,7 @@ public final class BuiltInWallpaperAsset extends Asset { @Override public void decodeBitmapRegion(Rect rect, int targetWidth, int targetHeight, - BitmapReceiver receiver) { + boolean shouldAdjustForRtl, BitmapReceiver receiver) { DecodeBitmapRegionAsyncTask task = new DecodeBitmapRegionAsyncTask(rect, receiver); task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } diff --git a/src/com/android/wallpaper/asset/ContentUriAsset.java b/src/com/android/wallpaper/asset/ContentUriAsset.java index a240420..e5f446b 100755 --- a/src/com/android/wallpaper/asset/ContentUriAsset.java +++ b/src/com/android/wallpaper/asset/ContentUriAsset.java @@ -111,12 +111,12 @@ public final class ContentUriAsset extends StreamableAsset { @Override public void decodeBitmapRegion(final Rect rect, int targetWidth, int targetHeight, - final BitmapReceiver receiver) { + boolean shouldAdjustForRtl, final BitmapReceiver receiver) { // BitmapRegionDecoder only supports images encoded in either JPEG or PNG, so if the content // URI asset is encoded with another format (for example, GIF), then fall back to cropping a // bitmap region from the full-sized bitmap. if (isJpeg() || isPng()) { - super.decodeBitmapRegion(rect, targetWidth, targetHeight, receiver); + super.decodeBitmapRegion(rect, targetWidth, targetHeight, shouldAdjustForRtl, receiver); return; } diff --git a/src/com/android/wallpaper/asset/CurrentWallpaperAssetV16.java b/src/com/android/wallpaper/asset/CurrentWallpaperAssetV16.java index 3243e68..86b88a5 100755 --- a/src/com/android/wallpaper/asset/CurrentWallpaperAssetV16.java +++ b/src/com/android/wallpaper/asset/CurrentWallpaperAssetV16.java @@ -40,7 +40,7 @@ public class CurrentWallpaperAssetV16 extends Asset { @Override public void decodeBitmapRegion(Rect rect, int targetWidth, int targetHeight, - BitmapReceiver receiver) { + boolean shouldAdjustForRtl, BitmapReceiver receiver) { receiver.onBitmapDecoded(null); } diff --git a/src/com/android/wallpaper/asset/LiveWallpaperThumbAsset.java b/src/com/android/wallpaper/asset/LiveWallpaperThumbAsset.java index 8e7c0f0..ea962cb 100755 --- a/src/com/android/wallpaper/asset/LiveWallpaperThumbAsset.java +++ b/src/com/android/wallpaper/asset/LiveWallpaperThumbAsset.java @@ -71,7 +71,7 @@ public class LiveWallpaperThumbAsset extends Asset { @Override public void decodeBitmapRegion(Rect rect, int targetWidth, int targetHeight, - BitmapReceiver receiver) { + boolean shouldAdjustForRtl, BitmapReceiver receiver) { receiver.onBitmapDecoded(null); } diff --git a/src/com/android/wallpaper/asset/StreamableAsset.java b/src/com/android/wallpaper/asset/StreamableAsset.java index 17f2522..e4c566e 100755 --- a/src/com/android/wallpaper/asset/StreamableAsset.java +++ b/src/com/android/wallpaper/asset/StreamableAsset.java @@ -87,8 +87,8 @@ public abstract class StreamableAsset extends Asset { @Override public void decodeBitmapRegion(Rect rect, int targetWidth, int targetHeight, - BitmapReceiver receiver) { - runDecodeBitmapRegionTask(rect, targetWidth, targetHeight, receiver); + boolean shouldAdjustForRtl, BitmapReceiver receiver) { + runDecodeBitmapRegionTask(rect, targetWidth, targetHeight, shouldAdjustForRtl, receiver); } @Override @@ -136,14 +136,15 @@ public abstract class StreamableAsset extends Asset { * @param rect Rect representing the crop region in terms of the original image's resolution. * @param targetWidth Width of target view in physical pixels. * @param targetHeight Height of target view in physical pixels. + * @param isRtl * @param receiver Called with the decoded bitmap region or null if there was an error decoding * the bitmap region. * @return AsyncTask reference so that the decoding task can be canceled before it starts. */ public AsyncTask runDecodeBitmapRegionTask(Rect rect, int targetWidth, int targetHeight, - BitmapReceiver receiver) { + boolean isRtl, BitmapReceiver receiver) { DecodeBitmapRegionAsyncTask task = - new DecodeBitmapRegionAsyncTask(rect, targetWidth, targetHeight, receiver); + new DecodeBitmapRegionAsyncTask(rect, targetWidth, targetHeight, isRtl, receiver); task.execute(); return task; } @@ -299,17 +300,19 @@ public abstract class StreamableAsset extends Asset { */ private class DecodeBitmapRegionAsyncTask extends AsyncTask { + private final boolean mIsRtl; private Rect mCropRect; - private BitmapReceiver mReceiver; + private final BitmapReceiver mReceiver; private int mTargetWidth; private int mTargetHeight; public DecodeBitmapRegionAsyncTask(Rect rect, int targetWidth, int targetHeight, - BitmapReceiver receiver) { + boolean isRtl, BitmapReceiver receiver) { mCropRect = rect; mReceiver = receiver; mTargetWidth = targetWidth; mTargetHeight = targetHeight; + mIsRtl = isRtl; } @Override @@ -324,8 +327,15 @@ public abstract class StreamableAsset extends Asset { } // Rotate crop rect if image is rotated more than 0 degrees. + Point dimensions = calculateRawDimensions(); mCropRect = CropRectRotator.rotateCropRectForExifOrientation( - calculateRawDimensions(), mCropRect, exifOrientation); + dimensions, mCropRect, exifOrientation); + + // If we're in RTL mode, center in the rightmost side of the image + if (mIsRtl) { + mCropRect.set(dimensions.x - mCropRect.right, mCropRect.top, + dimensions.x - mCropRect.left, mCropRect.bottom); + } BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = BitmapUtils.calculateInSampleSize( diff --git a/src/com/android/wallpaper/module/BitmapCropper.java b/src/com/android/wallpaper/module/BitmapCropper.java index ca38d2e..01be8bc 100755 --- a/src/com/android/wallpaper/module/BitmapCropper.java +++ b/src/com/android/wallpaper/module/BitmapCropper.java @@ -18,10 +18,10 @@ package com.android.wallpaper.module; import android.graphics.Bitmap; import android.graphics.Rect; -import com.android.wallpaper.asset.Asset; - import androidx.annotation.Nullable; +import com.android.wallpaper.asset.Asset; + /** * Interface for classes which perform crop operations on bitmaps. */ @@ -31,7 +31,8 @@ public interface BitmapCropper { * Crops and scales a bitmap per the given scale factor and crop area (at target scale) from the * source asset. */ - void cropAndScaleBitmap(Asset asset, float scale, Rect cropRect, Callback callback); + void cropAndScaleBitmap(Asset asset, float scale, Rect cropRect, boolean adjustForRtl, + Callback callback); /** * Interface for receiving the output bitmap of crop operations. diff --git a/src/com/android/wallpaper/module/DefaultBitmapCropper.java b/src/com/android/wallpaper/module/DefaultBitmapCropper.java index 14d2022..b4d4bbc 100755 --- a/src/com/android/wallpaper/module/DefaultBitmapCropper.java +++ b/src/com/android/wallpaper/module/DefaultBitmapCropper.java @@ -31,8 +31,8 @@ public class DefaultBitmapCropper implements BitmapCropper { private static final boolean FILTER_SCALED_BITMAP = true; @Override - public void cropAndScaleBitmap(Asset asset, float scale, final Rect cropRect, - final Callback callback) { + public void cropAndScaleBitmap(Asset asset, float scale, Rect cropRect, + boolean isRtl, Callback callback) { // Crop rect in pixels of source image. Rect scaledCropRect = new Rect( Math.round((float) cropRect.left / scale), @@ -40,7 +40,7 @@ public class DefaultBitmapCropper implements BitmapCropper { Math.round((float) cropRect.right / scale), Math.round((float) cropRect.bottom / scale)); - asset.decodeBitmapRegion(scaledCropRect, cropRect.width(), cropRect.height(), + asset.decodeBitmapRegion(scaledCropRect, cropRect.width(), cropRect.height(), isRtl, new BitmapReceiver() { @Override public void onBitmapDecoded(Bitmap bitmap) { diff --git a/src/com/android/wallpaper/module/DefaultWallpaperPersister.java b/src/com/android/wallpaper/module/DefaultWallpaperPersister.java index 5d88c0d..0060f99 100755 --- a/src/com/android/wallpaper/module/DefaultWallpaperPersister.java +++ b/src/com/android/wallpaper/module/DefaultWallpaperPersister.java @@ -126,7 +126,7 @@ public class DefaultWallpaperPersister implements WallpaperPersister { } BitmapCropper bitmapCropper = InjectorProvider.getInjector().getBitmapCropper(); - bitmapCropper.cropAndScaleBitmap(asset, scale, cropRect, new Callback() { + bitmapCropper.cropAndScaleBitmap(asset, scale, cropRect, false, new Callback() { @Override public void onBitmapCropped(Bitmap croppedBitmap) { setIndividualWallpaper(wallpaper, croppedBitmap, destination, callback); @@ -211,13 +211,9 @@ public class DefaultWallpaperPersister implements WallpaperPersister { (dimensions.y - screenSize.y) / 2, dimensions.x - ((dimensions.x - screenSize.x) / 2), dimensions.y - ((dimensions.y - screenSize.y) / 2)); - asset.decodeBitmapRegion(cropRect, screenSize.x, screenSize.y, new BitmapReceiver() { - @Override - public void onBitmapDecoded(@Nullable Bitmap bitmap) { - setIndividualWallpaper(wallpaper, bitmap, WallpaperPersister.DEST_BOTH, - callback); - } - }); + asset.decodeBitmapRegion(cropRect, screenSize.x, screenSize.y, false, + bitmap -> setIndividualWallpaper(wallpaper, bitmap, + WallpaperPersister.DEST_BOTH, callback)); } else { // Decode the full bitmap and pass with the screen size as a fill rect. asset.decodeBitmap(dimensions.x, dimensions.y, new BitmapReceiver() { diff --git a/src/com/android/wallpaper/picker/ImagePreviewFragment.java b/src/com/android/wallpaper/picker/ImagePreviewFragment.java index 1ea49f0..3fd8f51 100755 --- a/src/com/android/wallpaper/picker/ImagePreviewFragment.java +++ b/src/com/android/wallpaper/picker/ImagePreviewFragment.java @@ -374,18 +374,23 @@ public class ImagePreviewFragment extends PreviewFragment { *

This method is called once in the Fragment lifecycle after the wallpaper asset has loaded * and rendered to the layout. * - * @param offsetToFarLeft {@code true} if we want to offset the visible rectangle to far left of - * the raw wallpaper; {@code false} otherwise. + * @param offsetToStart {@code true} if we want to offset the visible rectangle to the start + * side of the raw wallpaper; {@code false} otherwise. */ - private void setDefaultWallpaperZoomAndScroll(boolean offsetToFarLeft) { + private void setDefaultWallpaperZoomAndScroll(boolean offsetToStart) { // Determine minimum zoom to fit maximum visible area of wallpaper on crop surface. int cropWidth = mWallpaperSurface.getMeasuredWidth(); int cropHeight = mWallpaperSurface.getMeasuredHeight(); Point crop = new Point(cropWidth, cropHeight); Rect visibleRawWallpaperRect = WallpaperCropUtils.calculateVisibleRect(mRawWallpaperSize, crop); - if (offsetToFarLeft) { - visibleRawWallpaperRect.offsetTo(/* newLeft= */ 0, visibleRawWallpaperRect.top); + if (offsetToStart) { + if (WallpaperCropUtils.isRtl(requireContext())) { + visibleRawWallpaperRect.offsetTo(mRawWallpaperSize.x + - visibleRawWallpaperRect.width(), visibleRawWallpaperRect.top); + } else { + visibleRawWallpaperRect.offsetTo(/* newLeft= */ 0, visibleRawWallpaperRect.top); + } } final PointF centerPosition = new PointF(visibleRawWallpaperRect.centerX(), diff --git a/tests/src/com/android/wallpaper/testing/TestAsset.java b/tests/src/com/android/wallpaper/testing/TestAsset.java index 368919a..505946a 100644 --- a/tests/src/com/android/wallpaper/testing/TestAsset.java +++ b/tests/src/com/android/wallpaper/testing/TestAsset.java @@ -62,7 +62,7 @@ public final class TestAsset extends Asset { @Override public void decodeBitmapRegion(Rect unused, int targetWidth, int targetHeight, - BitmapReceiver receiver) { + boolean shouldAdjustForRtl, BitmapReceiver receiver) { receiver.onBitmapDecoded(mBitmap); } diff --git a/tests/src/com/android/wallpaper/testing/TestBitmapCropper.java b/tests/src/com/android/wallpaper/testing/TestBitmapCropper.java index 7daeeab..778561d 100644 --- a/tests/src/com/android/wallpaper/testing/TestBitmapCropper.java +++ b/tests/src/com/android/wallpaper/testing/TestBitmapCropper.java @@ -34,7 +34,7 @@ public class TestBitmapCropper implements BitmapCropper { } @Override - public void cropAndScaleBitmap(Asset asset, float scale, Rect cropRect, + public void cropAndScaleBitmap(Asset asset, float scale, Rect cropRect, boolean adjustRtl, Callback callback) { if (mFailNextCall) { callback.onError(null /* throwable */); @@ -47,7 +47,7 @@ public class TestBitmapCropper implements BitmapCropper { Math.round((float) cropRect.right / scale), Math.round((float) cropRect.bottom / scale)); - asset.decodeBitmapRegion(scaledCropRect, cropRect.width(), cropRect.height(), + asset.decodeBitmapRegion(scaledCropRect, cropRect.width(), cropRect.height(), adjustRtl, new BitmapReceiver() { @Override public void onBitmapDecoded(Bitmap bitmap) { -- cgit v1.2.3 From fc629a3e3711af684d77b27e49746989966d7f94 Mon Sep 17 00:00:00 2001 From: Chuck Liao Date: Tue, 22 Dec 2020 23:07:32 +0800 Subject: Add a placeholder package change event listener. Bug: 172188327 Change-Id: If2027364c1f691fd7c2d02e7c9a271b2def29f94 --- src/com/android/wallpaper/module/Injector.java | 2 ++ .../android/wallpaper/picker/WallpaperPickerDelegate.java | 13 +++++++++++++ .../com/android/wallpaper/module/WallpapersInjector.java | 5 +++++ tests/src/com/android/wallpaper/testing/TestInjector.java | 5 +++++ 4 files changed, 25 insertions(+) diff --git a/src/com/android/wallpaper/module/Injector.java b/src/com/android/wallpaper/module/Injector.java index 0abb531..b85c279 100755 --- a/src/com/android/wallpaper/module/Injector.java +++ b/src/com/android/wallpaper/module/Injector.java @@ -86,4 +86,6 @@ public interface Injector { DrawableLayerResolver getDrawableLayerResolver(); Intent getDeepLinkRedirectIntent(Context context, Uri uri); + + String getDownloadableIntentAction(); } diff --git a/src/com/android/wallpaper/picker/WallpaperPickerDelegate.java b/src/com/android/wallpaper/picker/WallpaperPickerDelegate.java index 273e801..d158f5c 100644 --- a/src/com/android/wallpaper/picker/WallpaperPickerDelegate.java +++ b/src/com/android/wallpaper/picker/WallpaperPickerDelegate.java @@ -79,6 +79,8 @@ public class WallpaperPickerDelegate implements MyPhotosStarter { private List mPermissionChangedListeners; private PackageStatusNotifier.Listener mLiveWallpaperStatusListener; private PackageStatusNotifier.Listener mThirdPartyStatusListener; + private PackageStatusNotifier.Listener mDownloadableWallpaperStatusListener; + private String mDownloadableIntentAction; private CategoryProvider mCategoryProvider; private WallpaperPersister mWallpaperPersister; private static final String READ_PERMISSION = permission.READ_EXTERNAL_STORAGE; @@ -101,6 +103,7 @@ public class WallpaperPickerDelegate implements MyPhotosStarter { mFormFactor = formFactorChecker.getFormFactor(); mPermissionChangedListeners = new ArrayList<>(); + mDownloadableIntentAction = injector.getDownloadableIntentAction(); } public void initialize(boolean forceCategoryRefresh) { @@ -111,6 +114,15 @@ public class WallpaperPickerDelegate implements MyPhotosStarter { mLiveWallpaperStatusListener, WallpaperService.SERVICE_INTERFACE); mPackageStatusNotifier.addListener(mThirdPartyStatusListener, Intent.ACTION_SET_WALLPAPER); + if (mDownloadableIntentAction != null) { + mDownloadableWallpaperStatusListener = (packageName, status) -> { + if (status != PackageStatusNotifier.PackageStatus.REMOVED) { + populateCategories(true); + } + }; + mPackageStatusNotifier.addListener( + mDownloadableWallpaperStatusListener, mDownloadableIntentAction); + } } @Override @@ -396,6 +408,7 @@ public class WallpaperPickerDelegate implements MyPhotosStarter { if (mPackageStatusNotifier != null) { mPackageStatusNotifier.removeListener(mLiveWallpaperStatusListener); mPackageStatusNotifier.removeListener(mThirdPartyStatusListener); + mPackageStatusNotifier.removeListener(mDownloadableWallpaperStatusListener); } } diff --git a/src_override/com/android/wallpaper/module/WallpapersInjector.java b/src_override/com/android/wallpaper/module/WallpapersInjector.java index fa846a9..480eede 100755 --- a/src_override/com/android/wallpaper/module/WallpapersInjector.java +++ b/src_override/com/android/wallpaper/module/WallpapersInjector.java @@ -103,4 +103,9 @@ public class WallpapersInjector extends BaseWallpaperInjector { public synchronized LoggingOptInStatusProvider getLoggingOptInStatusProvider(Context context) { return null; } + + @Override + public String getDownloadableIntentAction() { + return null; + } } diff --git a/tests/src/com/android/wallpaper/testing/TestInjector.java b/tests/src/com/android/wallpaper/testing/TestInjector.java index 9b7927f..cdc9a59 100644 --- a/tests/src/com/android/wallpaper/testing/TestInjector.java +++ b/tests/src/com/android/wallpaper/testing/TestInjector.java @@ -242,6 +242,11 @@ public class TestInjector implements Injector { return null; } + @Override + public String getDownloadableIntentAction() { + return null; + } + @Override public PerformanceMonitor getPerformanceMonitor() { if (mPerformanceMonitor == null) { -- cgit v1.2.3 From 96647efb750144bfce663f242d8d27a738efc723 Mon Sep 17 00:00:00 2001 From: Kunhung Li Date: Wed, 23 Dec 2020 14:24:47 +0800 Subject: Fix Switch Access could not scroll down wallpaper Enhance existing recycler view's accessibility delegate to check Switch Access has scrolled down grid category then expand bottom sheet. Video: https://drive.google.com/file/d/1jFcZ5iC11BoIjmEFbxtNxT5yqbniEUuj/view?resourcekey=0-4eKbx4r9tifxxhkJ01amnQ Bug: 174196594 Test: Manual Change-Id: I45ce1e8a3e14b26a6cf47a3eb66e4889cf48b579 --- ...perPickerRecyclerViewAccessibilityDelegate.java | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/com/android/wallpaper/widget/WallpaperPickerRecyclerViewAccessibilityDelegate.java b/src/com/android/wallpaper/widget/WallpaperPickerRecyclerViewAccessibilityDelegate.java index b983780..06e0dcf 100644 --- a/src/com/android/wallpaper/widget/WallpaperPickerRecyclerViewAccessibilityDelegate.java +++ b/src/com/android/wallpaper/widget/WallpaperPickerRecyclerViewAccessibilityDelegate.java @@ -15,10 +15,12 @@ */ package com.android.wallpaper.widget; +import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.view.accessibility.AccessibilityEvent; +import androidx.core.view.accessibility.AccessibilityNodeInfoCompat; import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerViewAccessibilityDelegate; @@ -46,6 +48,11 @@ public class WallpaperPickerRecyclerViewAccessibilityDelegate * Gets bottom sheet current state. */ int getBottomSheetState(); + + /** Returns {@code true} if the bottom sheet is expanded. */ + default boolean isExpanded() { + return getBottomSheetState() == BottomSheetBehavior.STATE_EXPANDED; + } } private final RecyclerView mGridRecyclerView; @@ -67,11 +74,22 @@ public class WallpaperPickerRecyclerViewAccessibilityDelegate int itemPos = mGridRecyclerView.getChildLayoutPosition(child); // Expand the bottom sheet when TB travel to second column. - if (mBottomSheetHost != null && mBottomSheetHost.getBottomSheetState() - != BottomSheetBehavior.STATE_EXPANDED && itemPos >= mColumns) { + if (mBottomSheetHost != null && !mBottomSheetHost.isExpanded() + && itemPos >= mColumns) { mBottomSheetHost.expandBottomSheet(); } } return super.onRequestSendAccessibilityEvent(host, child, event); } + + @Override + public boolean performAccessibilityAction(View host, int action, Bundle args) { + // Expand the bottom sheet when Switch Access scrolls down grid category. + if (action == AccessibilityNodeInfoCompat.ACTION_SCROLL_FORWARD) { + if (mBottomSheetHost != null && !mBottomSheetHost.isExpanded()) { + mBottomSheetHost.expandBottomSheet(); + } + } + return super.performAccessibilityAction(host, action, args); + } } -- cgit v1.2.3 From 9991d686e2dc7a18eef08813aa2065b5010be0f6 Mon Sep 17 00:00:00 2001 From: Chuck Liao Date: Wed, 20 Jan 2021 17:45:14 +0800 Subject: Hide the "explore" button when it's in SUW. To avoid it can't show web page with JavaScript. SUW will disable javascript by default due to allowing the javascript could potentially bypass FRP(factory reset protection). If javaScript is enabled, the users might download an APK to the phone so that they can bypass factory reset protection. Bug: 177790904 Change-Id: I2c8ab09162e9b199f32c31f834b4ea9e544d67cf --- src/com/android/wallpaper/picker/ImagePreviewFragment.java | 8 ++++++-- src/com/android/wallpaper/picker/LivePreviewFragment.java | 8 ++++++-- src/com/android/wallpaper/picker/WallpaperInfoHelper.java | 11 +++++++++++ .../wallpaper/picker/individual/IndividualPickerFragment.java | 8 ++++++-- src/com/android/wallpaper/widget/WallpaperInfoView.java | 5 ++--- 5 files changed, 31 insertions(+), 9 deletions(-) diff --git a/src/com/android/wallpaper/picker/ImagePreviewFragment.java b/src/com/android/wallpaper/picker/ImagePreviewFragment.java index 3fd8f51..61412b9 100755 --- a/src/com/android/wallpaper/picker/ImagePreviewFragment.java +++ b/src/com/android/wallpaper/picker/ImagePreviewFragment.java @@ -323,8 +323,12 @@ public class ImagePreviewFragment extends PreviewFragment { getActivity().invalidateOptionsMenu(); if (mWallpaperInfoView != null && mWallpaper != null) { - mWallpaperInfoView.populateWallpaperInfo(mWallpaper, mActionLabel, - mExploreIntent, this::onExploreClicked); + mWallpaperInfoView.populateWallpaperInfo( + mWallpaper, + mActionLabel, + WallpaperInfoHelper.shouldShowExploreButton( + getContext(), mExploreIntent), + this::onExploreClicked); } }); } diff --git a/src/com/android/wallpaper/picker/LivePreviewFragment.java b/src/com/android/wallpaper/picker/LivePreviewFragment.java index 1d04df0..9136e72 100644 --- a/src/com/android/wallpaper/picker/LivePreviewFragment.java +++ b/src/com/android/wallpaper/picker/LivePreviewFragment.java @@ -175,8 +175,12 @@ public class LivePreviewFragment extends PreviewFragment implements mWallpaperInfoView = (WallpaperInfoView) LayoutInflater.from(getContext()) .inflate(R.layout.wallpaper_info_view, /* root= */ null); setUpExploreIntentAndLabel( - () -> mWallpaperInfoView.populateWallpaperInfo(mWallpaper, mActionLabel, - mExploreIntent, this::onExploreClicked)); + () -> mWallpaperInfoView.populateWallpaperInfo( + mWallpaper, + mActionLabel, + WallpaperInfoHelper.shouldShowExploreButton(getContext(), mExploreIntent), + this::onExploreClicked) + ); mPreviewContainer = view.findViewById(R.id.live_wallpaper_preview); mTouchForwardingLayout = view.findViewById(R.id.touch_forwarding_layout); diff --git a/src/com/android/wallpaper/picker/WallpaperInfoHelper.java b/src/com/android/wallpaper/picker/WallpaperInfoHelper.java index fc70718..0dfbc5b 100644 --- a/src/com/android/wallpaper/picker/WallpaperInfoHelper.java +++ b/src/com/android/wallpaper/picker/WallpaperInfoHelper.java @@ -18,6 +18,8 @@ package com.android.wallpaper.picker; import android.content.Context; import android.content.Intent; import android.net.Uri; +import android.provider.Settings; +import android.provider.Settings.Secure; import android.text.TextUtils; import androidx.annotation.NonNull; @@ -31,6 +33,9 @@ import com.android.wallpaper.module.InjectorProvider; /** A helper class for wallpaper info. */ public class WallpaperInfoHelper { + private static final int NOT_YET = 0; + private static final int COMPLETE = 1; + /** A callback for receiving explore Intent. */ public interface ExploreIntentReceiver { /** Gets called when received explore Intent. */ @@ -55,6 +60,12 @@ public class WallpaperInfoHelper { } } + /** Indicates if the explore button should show up in the wallpaper info view. */ + public static boolean shouldShowExploreButton(Context context, @Nullable Intent exploreIntent) { + return exploreIntent != null && Settings.Secure.getInt( + context.getContentResolver(), Secure.USER_SETUP_COMPLETE, NOT_YET) == COMPLETE; + } + private static CharSequence getActionLabel(Context context, WallpaperInfo wallpaperInfo) { CharSequence exploreLabel = null; if (wallpaperInfo instanceof LiveWallpaperInfo) { diff --git a/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java b/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java index 0925f39..ce50a43 100755 --- a/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java +++ b/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java @@ -968,8 +968,12 @@ public class IndividualPickerFragment extends BottomActionBarFragment mSelectedWallpaperInfo, (actionLabel, exploreIntent) -> mWallpaperInfoView.populateWallpaperInfo( - mSelectedWallpaperInfo, actionLabel, exploreIntent, - v -> onExploreClicked(exploreIntent))); + mSelectedWallpaperInfo, + actionLabel, + WallpaperInfoHelper.shouldShowExploreButton( + getContext(), exploreIntent), + v -> onExploreClicked(exploreIntent)) + ); } if (mWallpaperSelectedListener != null) { diff --git a/src/com/android/wallpaper/widget/WallpaperInfoView.java b/src/com/android/wallpaper/widget/WallpaperInfoView.java index db5e0e3..109279c 100644 --- a/src/com/android/wallpaper/widget/WallpaperInfoView.java +++ b/src/com/android/wallpaper/widget/WallpaperInfoView.java @@ -16,7 +16,6 @@ package com.android.wallpaper.widget; import android.content.Context; -import android.content.Intent; import android.util.AttributeSet; import android.view.View; import android.widget.Button; @@ -54,7 +53,7 @@ public class WallpaperInfoView extends LinearLayout { /** Populates wallpaper info. */ public void populateWallpaperInfo(@NonNull WallpaperInfo wallpaperInfo, CharSequence actionLabel, - @Nullable Intent exploreIntent, + boolean shouldShowExploreButton, OnClickListener exploreButtonClickListener) { final List attributions = wallpaperInfo.getAttributions(getContext()); @@ -83,7 +82,7 @@ public class WallpaperInfoView extends LinearLayout { mSubtitle2.setText(attributions.get(2)); } - if (exploreIntent != null) { + if (shouldShowExploreButton) { mExploreButton.setVisibility(View.VISIBLE); mExploreButton.setText(actionLabel); mExploreButton.setOnClickListener(exploreButtonClickListener); -- cgit v1.2.3 From 644c0b2b8b2997219ee31160d834a3ecd155045f Mon Sep 17 00:00:00 2001 From: Chuck Liao Date: Thu, 21 Jan 2021 19:56:03 +0800 Subject: Let the title filed of the wallpaper info view can be multiple lines. Screenshot: https://screenshot.googleplex.com/7fkdoy6AY6sZBrL.png Bug: 177957729 Change-Id: If299e227165732c50c5f38aa37f54d91435d6127 --- res/layout/wallpaper_info_view.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/res/layout/wallpaper_info_view.xml b/res/layout/wallpaper_info_view.xml index 5237ef8..352dc2a 100644 --- a/res/layout/wallpaper_info_view.xml +++ b/res/layout/wallpaper_info_view.xml @@ -29,10 +29,8 @@ android:id="@+id/wallpaper_info_title" android:layout_width="match_parent" android:layout_height="wrap_content" - android:ellipsize="end" android:gravity="center" android:lineHeight="24dp" - android:singleLine="true" android:textAppearance="@style/TitleTextAppearance" android:textColor="@color/action_bar_bottom_sheet_text_color" /> -- cgit v1.2.3 From 14d4ec84dbf8944f2f9b21cde90366b4179a5811 Mon Sep 17 00:00:00 2001 From: Chuck Liao Date: Thu, 21 Jan 2021 23:10:41 +0800 Subject: Let the background color of the previews can be adapted by different wallpapers. Remove the hardcoded background colors and let the background colors respect the theme's android:colorBackground attribute. PS: Need to follow the steps in go/usingmonet to let the background color can change with the wallpapers. Screenshot: https://screenshot.googleplex.com/3K5W5BGG2tFBxnb.png Bug: 173549815 Change-Id: I270e45763d680ba36a4bfd1de8fba7b5329b31d9 --- res/layout/fragment_category_picker.xml | 2 -- res/layout/fragment_image_preview_v2.xml | 6 ++---- res/layout/fragment_live_preview_v2.xml | 4 +--- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/res/layout/fragment_category_picker.xml b/res/layout/fragment_category_picker.xml index 8da7e2f..0b5547c 100755 --- a/res/layout/fragment_category_picker.xml +++ b/res/layout/fragment_category_picker.xml @@ -17,7 +17,6 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="?android:colorPrimary" android:orientation="vertical"> @@ -32,7 +31,6 @@ android:id="@+id/wallpaper_preview_pager" android:layout_width="match_parent" android:layout_height="0dp" - android:background="@color/preview_pager_background" app:card_style="screen_aspect_ratio" app:layout_constrainedHeight="true" app:layout_constraintEnd_toEndOf="parent" diff --git a/res/layout/fragment_image_preview_v2.xml b/res/layout/fragment_image_preview_v2.xml index 7f6b81c..ec0d2b0 100644 --- a/res/layout/fragment_image_preview_v2.xml +++ b/res/layout/fragment_image_preview_v2.xml @@ -18,8 +18,7 @@ + android:layout_height="match_parent"> + android:clipToPadding="false"> + android:layout_height="match_parent"> Date: Sat, 30 Jan 2021 19:33:43 +0000 Subject: Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I6401923801e66642dae1ac800879f3022ac0015d --- res/values-nb/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index af24134..e9adf9f 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -77,7 +77,7 @@ "Midtstilt" "Midtstilt beskjæring" "Strekk" - "Se forhåndsvisning" + "Forhåndsvisning" "Informasjon" "Tilpass" "Innstillinger" -- cgit v1.2.3 From acb6b23848fcf69061d51ff2e7a3d281a122d199 Mon Sep 17 00:00:00 2001 From: Kunhung Li Date: Wed, 20 Jan 2021 10:39:50 +0800 Subject: Fix showing old picker when sending CHANGE_LIVE_WALLPAPER Let StandalonePreviewActivity can show live wallpaper preview by receiving CHANGE_LIVE_WALLPAPER action. Screenshot: https://drive.google.com/file/d/1Y-v8RHut4M2JZV8RaWh4qvolRUZAS2VQ/view?resourcekey=0-LWHmjOu2P4MPeZmUjZPZrA Test: Manual Bug: 173821000 Change-Id: Ie0c0b1e22ce24520ffc895bb8f4974a3d93e9374 --- .../picker/StandalonePreviewActivity.java | 108 +++++++++++++++++---- 1 file changed, 88 insertions(+), 20 deletions(-) diff --git a/src/com/android/wallpaper/picker/StandalonePreviewActivity.java b/src/com/android/wallpaper/picker/StandalonePreviewActivity.java index ee30e66..84b691e 100755 --- a/src/com/android/wallpaper/picker/StandalonePreviewActivity.java +++ b/src/com/android/wallpaper/picker/StandalonePreviewActivity.java @@ -15,12 +15,18 @@ */ package com.android.wallpaper.picker; +import static android.app.WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT; + import android.Manifest.permission; +import android.content.ComponentName; import android.content.Intent; import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; import android.net.Uri; import android.os.Binder; import android.os.Bundle; +import android.os.Parcelable; +import android.service.wallpaper.WallpaperService; import android.util.Log; import androidx.annotation.NonNull; @@ -29,10 +35,16 @@ import androidx.fragment.app.FragmentManager; import com.android.wallpaper.R; import com.android.wallpaper.model.ImageWallpaperInfo; +import com.android.wallpaper.model.LiveWallpaperInfo; import com.android.wallpaper.model.WallpaperInfo; import com.android.wallpaper.module.InjectorProvider; import com.android.wallpaper.module.UserEventLogger; +import org.xmlpull.v1.XmlPullParserException; + +import java.io.IOException; +import java.util.List; + /** * Activity that displays a preview of a specific wallpaper and provides the ability to set the * wallpaper as the user's current wallpaper. It's "standalone" meaning it doesn't reside in the @@ -43,6 +55,7 @@ public class StandalonePreviewActivity extends BasePreviewActivity { private static final int READ_EXTERNAL_STORAGE_PERMISSION_REQUEST_CODE = 1; private UserEventLogger mUserEventLogger; + private boolean mIsLivePreview; @Override protected void onCreate(Bundle savedInstanceState) { @@ -52,28 +65,39 @@ public class StandalonePreviewActivity extends BasePreviewActivity { mUserEventLogger = InjectorProvider.getInjector().getUserEventLogger(getApplicationContext()); mUserEventLogger.logStandalonePreviewLaunched(); - Intent cropAndSetWallpaperIntent = getIntent(); - Uri imageUri = cropAndSetWallpaperIntent.getData(); - - if (imageUri == null) { - Log.e(TAG, "No URI passed in intent; exiting StandalonePreviewActivity"); + Intent intent = getIntent(); + Uri imageUri = intent.getData(); + Parcelable parcelable = intent.getParcelableExtra(EXTRA_LIVE_WALLPAPER_COMPONENT); + boolean isStaticPreview = (imageUri != null); + boolean isLivePreview = parcelable != null && (parcelable instanceof ComponentName); + + if (!isStaticPreview && !isLivePreview) { + Log.e(TAG, + "Neither URI nor LIVE_WALLPAPER_COMPONENT passed in intent; exiting preview"); finish(); return; } - // Check if READ_EXTERNAL_STORAGE permission is needed because the app invoking this activity - // passed a file:// URI or a content:// URI without a flag to grant read permission. - boolean isReadPermissionGrantedForImageUri = isReadPermissionGrantedForImageUri(imageUri); - mUserEventLogger.logStandalonePreviewImageUriHasReadPermission( - isReadPermissionGrantedForImageUri); - - // Request storage permission if necessary (i.e., on Android M and later if storage permission - // has not already been granted) and delay loading the PreviewFragment until the permission is - // granted. - if (!isReadPermissionGrantedForImageUri && !isReadExternalStoragePermissionGrantedForApp()) { - requestPermissions( - new String[]{permission.READ_EXTERNAL_STORAGE}, - READ_EXTERNAL_STORAGE_PERMISSION_REQUEST_CODE); + if (isStaticPreview) { + // Check if READ_EXTERNAL_STORAGE permission is needed because the app invoking this + // activity passed a file:// URI or a content:// URI without a flag to grant read + // permission. + boolean isReadPermissionGrantedForImageUri = isReadPermissionGrantedForImageUri( + imageUri); + mUserEventLogger.logStandalonePreviewImageUriHasReadPermission( + isReadPermissionGrantedForImageUri); + + // Request storage permission if necessary (i.e., on Android M and later if storage + // permission has not already been granted) and delay loading the PreviewFragment until + // the permission is granted. + if (!isReadPermissionGrantedForImageUri + && !isReadExternalStoragePermissionGrantedForApp()) { + requestPermissions( + new String[]{permission.READ_EXTERNAL_STORAGE}, + READ_EXTERNAL_STORAGE_PERMISSION_REQUEST_CODE); + } + } else if (isLivePreview) { + mIsLivePreview = true; } } @@ -118,11 +142,18 @@ public class StandalonePreviewActivity extends BasePreviewActivity { Intent intent = getIntent(); boolean testingModeEnabled = intent.getBooleanExtra(EXTRA_TESTING_MODE_ENABLED, false); - WallpaperInfo wallpaper = new ImageWallpaperInfo(intent.getData()); + WallpaperInfo wallpaper = mIsLivePreview ? getLiveWallpaperInfo(intent) + : new ImageWallpaperInfo(intent.getData()); + // Close the activity because we can't get WallpaperInfo. + if (wallpaper == null) { + finish(); + return; + } Fragment fragment = InjectorProvider.getInjector().getPreviewFragment( /* context */ this, wallpaper, - PreviewFragment.MODE_CROP_AND_SET_WALLPAPER, + mIsLivePreview ? PreviewFragment.MODE_VIEW_ONLY + : PreviewFragment.MODE_CROP_AND_SET_WALLPAPER, /* viewAsHome= */ true, testingModeEnabled); getSupportFragmentManager().beginTransaction() @@ -130,6 +161,43 @@ public class StandalonePreviewActivity extends BasePreviewActivity { .commit(); } + private LiveWallpaperInfo getLiveWallpaperInfo(Intent intent) { + android.app.WallpaperInfo info = getWallpaperInfo( + intent.getParcelableExtra(EXTRA_LIVE_WALLPAPER_COMPONENT)); + if (info == null) { + return null; + } + return new LiveWallpaperInfo(info); + } + + /** + * Gets live wallpaper's {@link android.app.WallpaperInfo} by component name. + */ + private android.app.WallpaperInfo getWallpaperInfo(ComponentName componentName) { + // Get the information about this component. Implemented this way + // to not allow us to direct the caller to a service that is not a + // live wallpaper. + Intent queryIntent = new Intent(WallpaperService.SERVICE_INTERFACE); + queryIntent.setPackage(componentName.getPackageName()); + List list = getPackageManager().queryIntentServices( + queryIntent, PackageManager.GET_META_DATA); + if (list == null) { + return null; + } + + for (ResolveInfo ri: list) { + if (ri.serviceInfo.name.equals(componentName.getClassName())) { + try { + return new android.app.WallpaperInfo(this, ri); + } catch (XmlPullParserException | IOException e) { + Log.w(TAG, "Bad wallpaper " + ri.serviceInfo, e); + return null; + } + } + } + return null; + } + /** * Returns whether the user has granted READ_EXTERNAL_STORAGE permission to the app. */ -- cgit v1.2.3 From d7d13b7a9bf2609c48c93e6813a6fd67081df99e Mon Sep 17 00:00:00 2001 From: Kunhung Li Date: Fri, 5 Feb 2021 10:09:07 +0000 Subject: Revert "Fix showing old picker when sending CHANGE_LIVE_WALLPAPER" Revert submission 13437248-cherrypick-standalone_live_preview-wv5cdp672e Reason for revert: Fix cts:SystemFeaturesTest#testLiveWallpaperFeature Reverted Changes: I92e9dbf76:Fix showing old picker when sending CHANGE_LIVE_WA... Ie0c0b1e22:Fix showing old picker when sending CHANGE_LIVE_WA... Bug: 173821000 Bug: 179164063 Change-Id: I7883bbcd613259697bcd4b0f3ece95e8f39de5f9 --- .../picker/StandalonePreviewActivity.java | 108 ++++----------------- 1 file changed, 20 insertions(+), 88 deletions(-) diff --git a/src/com/android/wallpaper/picker/StandalonePreviewActivity.java b/src/com/android/wallpaper/picker/StandalonePreviewActivity.java index 84b691e..ee30e66 100755 --- a/src/com/android/wallpaper/picker/StandalonePreviewActivity.java +++ b/src/com/android/wallpaper/picker/StandalonePreviewActivity.java @@ -15,18 +15,12 @@ */ package com.android.wallpaper.picker; -import static android.app.WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT; - import android.Manifest.permission; -import android.content.ComponentName; import android.content.Intent; import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; import android.net.Uri; import android.os.Binder; import android.os.Bundle; -import android.os.Parcelable; -import android.service.wallpaper.WallpaperService; import android.util.Log; import androidx.annotation.NonNull; @@ -35,16 +29,10 @@ import androidx.fragment.app.FragmentManager; import com.android.wallpaper.R; import com.android.wallpaper.model.ImageWallpaperInfo; -import com.android.wallpaper.model.LiveWallpaperInfo; import com.android.wallpaper.model.WallpaperInfo; import com.android.wallpaper.module.InjectorProvider; import com.android.wallpaper.module.UserEventLogger; -import org.xmlpull.v1.XmlPullParserException; - -import java.io.IOException; -import java.util.List; - /** * Activity that displays a preview of a specific wallpaper and provides the ability to set the * wallpaper as the user's current wallpaper. It's "standalone" meaning it doesn't reside in the @@ -55,7 +43,6 @@ public class StandalonePreviewActivity extends BasePreviewActivity { private static final int READ_EXTERNAL_STORAGE_PERMISSION_REQUEST_CODE = 1; private UserEventLogger mUserEventLogger; - private boolean mIsLivePreview; @Override protected void onCreate(Bundle savedInstanceState) { @@ -65,39 +52,28 @@ public class StandalonePreviewActivity extends BasePreviewActivity { mUserEventLogger = InjectorProvider.getInjector().getUserEventLogger(getApplicationContext()); mUserEventLogger.logStandalonePreviewLaunched(); - Intent intent = getIntent(); - Uri imageUri = intent.getData(); - Parcelable parcelable = intent.getParcelableExtra(EXTRA_LIVE_WALLPAPER_COMPONENT); - boolean isStaticPreview = (imageUri != null); - boolean isLivePreview = parcelable != null && (parcelable instanceof ComponentName); - - if (!isStaticPreview && !isLivePreview) { - Log.e(TAG, - "Neither URI nor LIVE_WALLPAPER_COMPONENT passed in intent; exiting preview"); + Intent cropAndSetWallpaperIntent = getIntent(); + Uri imageUri = cropAndSetWallpaperIntent.getData(); + + if (imageUri == null) { + Log.e(TAG, "No URI passed in intent; exiting StandalonePreviewActivity"); finish(); return; } - if (isStaticPreview) { - // Check if READ_EXTERNAL_STORAGE permission is needed because the app invoking this - // activity passed a file:// URI or a content:// URI without a flag to grant read - // permission. - boolean isReadPermissionGrantedForImageUri = isReadPermissionGrantedForImageUri( - imageUri); - mUserEventLogger.logStandalonePreviewImageUriHasReadPermission( - isReadPermissionGrantedForImageUri); - - // Request storage permission if necessary (i.e., on Android M and later if storage - // permission has not already been granted) and delay loading the PreviewFragment until - // the permission is granted. - if (!isReadPermissionGrantedForImageUri - && !isReadExternalStoragePermissionGrantedForApp()) { - requestPermissions( - new String[]{permission.READ_EXTERNAL_STORAGE}, - READ_EXTERNAL_STORAGE_PERMISSION_REQUEST_CODE); - } - } else if (isLivePreview) { - mIsLivePreview = true; + // Check if READ_EXTERNAL_STORAGE permission is needed because the app invoking this activity + // passed a file:// URI or a content:// URI without a flag to grant read permission. + boolean isReadPermissionGrantedForImageUri = isReadPermissionGrantedForImageUri(imageUri); + mUserEventLogger.logStandalonePreviewImageUriHasReadPermission( + isReadPermissionGrantedForImageUri); + + // Request storage permission if necessary (i.e., on Android M and later if storage permission + // has not already been granted) and delay loading the PreviewFragment until the permission is + // granted. + if (!isReadPermissionGrantedForImageUri && !isReadExternalStoragePermissionGrantedForApp()) { + requestPermissions( + new String[]{permission.READ_EXTERNAL_STORAGE}, + READ_EXTERNAL_STORAGE_PERMISSION_REQUEST_CODE); } } @@ -142,18 +118,11 @@ public class StandalonePreviewActivity extends BasePreviewActivity { Intent intent = getIntent(); boolean testingModeEnabled = intent.getBooleanExtra(EXTRA_TESTING_MODE_ENABLED, false); - WallpaperInfo wallpaper = mIsLivePreview ? getLiveWallpaperInfo(intent) - : new ImageWallpaperInfo(intent.getData()); - // Close the activity because we can't get WallpaperInfo. - if (wallpaper == null) { - finish(); - return; - } + WallpaperInfo wallpaper = new ImageWallpaperInfo(intent.getData()); Fragment fragment = InjectorProvider.getInjector().getPreviewFragment( /* context */ this, wallpaper, - mIsLivePreview ? PreviewFragment.MODE_VIEW_ONLY - : PreviewFragment.MODE_CROP_AND_SET_WALLPAPER, + PreviewFragment.MODE_CROP_AND_SET_WALLPAPER, /* viewAsHome= */ true, testingModeEnabled); getSupportFragmentManager().beginTransaction() @@ -161,43 +130,6 @@ public class StandalonePreviewActivity extends BasePreviewActivity { .commit(); } - private LiveWallpaperInfo getLiveWallpaperInfo(Intent intent) { - android.app.WallpaperInfo info = getWallpaperInfo( - intent.getParcelableExtra(EXTRA_LIVE_WALLPAPER_COMPONENT)); - if (info == null) { - return null; - } - return new LiveWallpaperInfo(info); - } - - /** - * Gets live wallpaper's {@link android.app.WallpaperInfo} by component name. - */ - private android.app.WallpaperInfo getWallpaperInfo(ComponentName componentName) { - // Get the information about this component. Implemented this way - // to not allow us to direct the caller to a service that is not a - // live wallpaper. - Intent queryIntent = new Intent(WallpaperService.SERVICE_INTERFACE); - queryIntent.setPackage(componentName.getPackageName()); - List list = getPackageManager().queryIntentServices( - queryIntent, PackageManager.GET_META_DATA); - if (list == null) { - return null; - } - - for (ResolveInfo ri: list) { - if (ri.serviceInfo.name.equals(componentName.getClassName())) { - try { - return new android.app.WallpaperInfo(this, ri); - } catch (XmlPullParserException | IOException e) { - Log.w(TAG, "Bad wallpaper " + ri.serviceInfo, e); - return null; - } - } - } - return null; - } - /** * Returns whether the user has granted READ_EXTERNAL_STORAGE permission to the app. */ -- cgit v1.2.3 From acc4046c4056552a885ebd832ab99498ec0c4861 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Tue, 9 Feb 2021 22:57:45 +0000 Subject: Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: Ie2159c755388be8107edd58da0ce333300024ad7 --- res/values-nb/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index af24134..e9adf9f 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -77,7 +77,7 @@ "Midtstilt" "Midtstilt beskjæring" "Strekk" - "Se forhåndsvisning" + "Forhåndsvisning" "Informasjon" "Tilpass" "Innstillinger" -- cgit v1.2.3 From d404121c946f0911fa7afce67eabcc475db986be Mon Sep 17 00:00:00 2001 From: Jay Aliomer Date: Wed, 6 Jan 2021 18:32:45 -0500 Subject: Implement local color extraction Test: No tests needed Bug: 173046221 Change-Id: I5487881c05ca1488d594b496ffe42c621cf5dd1b --- src/com/android/wallpaper/util/WallpaperConnection.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/com/android/wallpaper/util/WallpaperConnection.java b/src/com/android/wallpaper/util/WallpaperConnection.java index 27b02ee..1990db9 100644 --- a/src/com/android/wallpaper/util/WallpaperConnection.java +++ b/src/com/android/wallpaper/util/WallpaperConnection.java @@ -22,6 +22,7 @@ import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.graphics.Rect; +import android.graphics.RectF; import android.os.IBinder; import android.os.ParcelFileDescriptor; import android.os.RemoteException; @@ -148,6 +149,13 @@ public class WallpaperConnection extends IWallpaperConnection.Stub implements Se } } + + @Override + public void onLocalWallpaperColorsChanged(RectF area, + WallpaperColors colors, int displayId) { + + } + /** * @see ServiceConnection#onServiceDisconnected(ComponentName) */ -- cgit v1.2.3 From 1488a8579ac4a3039f1c022326be166ea746452e Mon Sep 17 00:00:00 2001 From: Jay Aliomer Date: Wed, 17 Feb 2021 15:40:52 +0000 Subject: Revert "Implement local color extraction" Revert submission 13553866-wallpaper-local-color-extraction-sc-dev Reason for revert: b/180490435 Reverted Changes: I5755525f9:Wallpaper Local color sampling I5487881c0:Implement local color extraction Icbab7c6c2:Implement local color extraction Change-Id: I3296c0aba14abd99544905f09483a114d0bcdd7e --- src/com/android/wallpaper/util/WallpaperConnection.java | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/com/android/wallpaper/util/WallpaperConnection.java b/src/com/android/wallpaper/util/WallpaperConnection.java index 1990db9..27b02ee 100644 --- a/src/com/android/wallpaper/util/WallpaperConnection.java +++ b/src/com/android/wallpaper/util/WallpaperConnection.java @@ -22,7 +22,6 @@ import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.graphics.Rect; -import android.graphics.RectF; import android.os.IBinder; import android.os.ParcelFileDescriptor; import android.os.RemoteException; @@ -149,13 +148,6 @@ public class WallpaperConnection extends IWallpaperConnection.Stub implements Se } } - - @Override - public void onLocalWallpaperColorsChanged(RectF area, - WallpaperColors colors, int displayId) { - - } - /** * @see ServiceConnection#onServiceDisconnected(ComponentName) */ -- cgit v1.2.3 From 121491df0835664508695564bf185d520b25dc7d Mon Sep 17 00:00:00 2001 From: Jay Aliomer Date: Wed, 17 Feb 2021 16:36:55 +0000 Subject: Revert^2 "Implement local color extraction" 1488a8579ac4a3039f1c022326be166ea746452e Change-Id: I8bfecb304994ca3ec7630b99c04fba85ea8ff666 --- src/com/android/wallpaper/util/WallpaperConnection.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/com/android/wallpaper/util/WallpaperConnection.java b/src/com/android/wallpaper/util/WallpaperConnection.java index 27b02ee..1990db9 100644 --- a/src/com/android/wallpaper/util/WallpaperConnection.java +++ b/src/com/android/wallpaper/util/WallpaperConnection.java @@ -22,6 +22,7 @@ import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.graphics.Rect; +import android.graphics.RectF; import android.os.IBinder; import android.os.ParcelFileDescriptor; import android.os.RemoteException; @@ -148,6 +149,13 @@ public class WallpaperConnection extends IWallpaperConnection.Stub implements Se } } + + @Override + public void onLocalWallpaperColorsChanged(RectF area, + WallpaperColors colors, int displayId) { + + } + /** * @see ServiceConnection#onServiceDisconnected(ComponentName) */ -- cgit v1.2.3 From 8c57b8fe36ea15692b98b27d2efb27a13ecea953 Mon Sep 17 00:00:00 2001 From: Santiago Etchebehere Date: Thu, 18 Feb 2021 19:22:11 -0800 Subject: Workaround to avoid crashing when applying wallpaper If there's a configuration change when the wallpaper is applied, the Activities and Fragments are restarted. Until b/180625460 is implemented, we cannot capture the config changes for overlays, so use deprecated setRetainInstance to prevent the Fragment from restarting. Bug: 180443431 Test: manual Change-Id: Idc99dcee3bff7165b2d66804b3b7b1aa3dfb0a9b --- src/com/android/wallpaper/module/WallpaperSetter.java | 16 ++++++++++++++++ src/com/android/wallpaper/picker/PreviewFragment.java | 1 + 2 files changed, 17 insertions(+) diff --git a/src/com/android/wallpaper/module/WallpaperSetter.java b/src/com/android/wallpaper/module/WallpaperSetter.java index cb283b3..a6c7212 100644 --- a/src/com/android/wallpaper/module/WallpaperSetter.java +++ b/src/com/android/wallpaper/module/WallpaperSetter.java @@ -11,9 +11,13 @@ import android.os.Build.VERSION_CODES; import android.util.Log; import android.view.Display; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.StringRes; import androidx.fragment.app.FragmentManager; +import androidx.lifecycle.Lifecycle.Event; +import androidx.lifecycle.LifecycleEventObserver; +import androidx.lifecycle.LifecycleOwner; import com.android.wallpaper.R; import com.android.wallpaper.asset.Asset; @@ -140,6 +144,18 @@ public class WallpaperSetter { mProgressDialog.setMessage(containerActivity.getString( R.string.set_wallpaper_progress_message)); mProgressDialog.setIndeterminate(PROGRESS_DIALOG_INDETERMINATE); + if (containerActivity instanceof LifecycleOwner) { + ((LifecycleOwner) containerActivity).getLifecycle().addObserver( + new LifecycleEventObserver() { + @Override + public void onStateChanged(@NonNull LifecycleOwner source, + @NonNull Event event) { + if (event == Event.ON_DESTROY) { + mProgressDialog.dismiss(); + } + } + }); + } mProgressDialog.show(); } diff --git a/src/com/android/wallpaper/picker/PreviewFragment.java b/src/com/android/wallpaper/picker/PreviewFragment.java index 8963d60..0b90c30 100755 --- a/src/com/android/wallpaper/picker/PreviewFragment.java +++ b/src/com/android/wallpaper/picker/PreviewFragment.java @@ -169,6 +169,7 @@ public abstract class PreviewFragment extends AppbarFragment implements if (attributions.size() > 0 && attributions.get(0) != null) { activity.setTitle(attributions.get(0)); } + setRetainInstance(true); } @Override -- cgit v1.2.3 From 9563267c6d966e24a149e9f8494bdd7a0ed4f135 Mon Sep 17 00:00:00 2001 From: Ching-Sung Li Date: Tue, 23 Feb 2021 17:02:14 +0800 Subject: Remove manually set background in toolbar and grid item Apply system color in toolbar and grid item by removing manually set background in toolbar and grid item. Screenshot: Light: https://screenshot.googleplex.com/AgxNRiBgx6MrHdE.png Dark: https://screenshot.googleplex.com/7P8xyaGQUaRnvS2.png Bug: 180864976 Bug: 173549815 Test: Manual Change-Id: Iea68de07161321ba8b544248f1520d7b8b95188d --- res/layout/grid_item_category.xml | 1 - res/values/styles.xml | 1 - 2 files changed, 2 deletions(-) diff --git a/res/layout/grid_item_category.xml b/res/layout/grid_item_category.xml index 3953153..4a2dcfe 100755 --- a/res/layout/grid_item_category.xml +++ b/res/layout/grid_item_category.xml @@ -29,7 +29,6 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/grid_item_category_label_padding_top" android:layout_marginBottom="@dimen/grid_item_category_label_padding_bottom" - android:background="@color/category_title_scrim_color" android:ellipsize="end" android:gravity="center" android:maxLines="1" diff --git a/res/values/styles.xml b/res/values/styles.xml index dc807cb..50bc3e3 100755 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -98,7 +98,6 @@ -- cgit v1.2.3 From c7aacf22f72b8e52a7dc860fb49d1033cdadd1e4 Mon Sep 17 00:00:00 2001 From: Chuck Liao Date: Wed, 24 Feb 2021 00:22:12 +0800 Subject: Fix the app crash while setting wallpaper. ProgressDialog.dismiss() is called when the activity was destroyed, but ProgressDialog had been already cleaned up when the wallpaper was set. So we don't need to call dismiss() in this case. Bug: 180868277 Test: manual Change-Id: Ida529f2136d8ba9aad1fedfbeeb4ca096b5bbfb3 --- src/com/android/wallpaper/module/WallpaperSetter.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/com/android/wallpaper/module/WallpaperSetter.java b/src/com/android/wallpaper/module/WallpaperSetter.java index a6c7212..9d5bb96 100644 --- a/src/com/android/wallpaper/module/WallpaperSetter.java +++ b/src/com/android/wallpaper/module/WallpaperSetter.java @@ -151,7 +151,9 @@ public class WallpaperSetter { public void onStateChanged(@NonNull LifecycleOwner source, @NonNull Event event) { if (event == Event.ON_DESTROY) { - mProgressDialog.dismiss(); + if (mProgressDialog != null) { + mProgressDialog.dismiss(); + } } } }); -- cgit v1.2.3 From 7e3337205775202b7577119960f1dedf35ead73a Mon Sep 17 00:00:00 2001 From: Chuck Liao Date: Sat, 27 Feb 2021 02:21:20 +0800 Subject: The test cases in IndividualPickerActivityTest failed. Bug: 181338669 Test: adb shell am instrument -w -m -e debug false -e class 'com.android.wallpaper.picker.individual.IndividualPickerActivityTest' com.google.android.apps.wallpaper.tests/androidx.test.runner.AndroidJUnitRunner Change-Id: Icf634b91e9449d879b190bba2e250d526955888b --- .../picker/individual/IndividualPickerActivity.java | 14 +++++++++++++- .../picker/individual/IndividualPickerFragment.java | 11 +++++++++-- .../individual/IndividualPickerActivityTest.java | 18 ------------------ 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/src/com/android/wallpaper/picker/individual/IndividualPickerActivity.java b/src/com/android/wallpaper/picker/individual/IndividualPickerActivity.java index 1a2cae9..65fde64 100755 --- a/src/com/android/wallpaper/picker/individual/IndividualPickerActivity.java +++ b/src/com/android/wallpaper/picker/individual/IndividualPickerActivity.java @@ -53,7 +53,8 @@ import com.android.wallpaper.widget.BottomActionBar.BottomActionBarHost; * Activity that can be launched from the Android wallpaper picker and allows users to pick from * various wallpapers and enter a preview mode for specific ones. */ -public class IndividualPickerActivity extends BaseActivity implements BottomActionBarHost { +public class IndividualPickerActivity extends BaseActivity implements BottomActionBarHost, + IndividualPickerFragment.IndividualPickerFragmentHost { private static final String TAG = "IndividualPickerAct"; private static final String EXTRA_CATEGORY_COLLECTION_ID = "com.android.wallpaper.category_collection_id"; @@ -229,6 +230,17 @@ public class IndividualPickerActivity extends BaseActivity implements BottomActi return findViewById(R.id.bottom_actionbar); } + @Override + public void setToolbarTitle(CharSequence title) { + setTitle(title); + getSupportActionBar().setTitle(title); + } + + @Override + public void moveToPreviousFragment() { + getSupportFragmentManager().popBackStack(); + } + /** * Default implementation of intent factory that provides an intent to start an * IndividualPickerActivity. diff --git a/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java b/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java index ce50a43..71d70e3 100755 --- a/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java +++ b/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java @@ -46,6 +46,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.widget.ContentLoadingProgressBar; import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView.OnScrollListener; @@ -172,7 +173,8 @@ public class IndividualPickerFragment extends BottomActionBarFragment } /** - * Interface to be implemented by a Fragment hosting a {@link IndividualPickerFragment} + * Interface to be implemented by a Fragment(or an Activity) hosting + * a {@link IndividualPickerFragment}. */ public interface IndividualPickerFragmentHost { /** @@ -517,7 +519,12 @@ public class IndividualPickerFragment extends BottomActionBarFragment } private IndividualPickerFragmentHost getIndividualPickerFragmentHost() { - return (IndividualPickerFragmentHost) getParentFragment(); + Fragment parentFragment = getParentFragment(); + if (parentFragment != null) { + return (IndividualPickerFragmentHost) parentFragment; + } else { + return (IndividualPickerFragmentHost) getActivity(); + } } private void maybeSetUpImageGrid() { diff --git a/tests/src/com/android/wallpaper/picker/individual/IndividualPickerActivityTest.java b/tests/src/com/android/wallpaper/picker/individual/IndividualPickerActivityTest.java index c9170bc..a4decf4 100644 --- a/tests/src/com/android/wallpaper/picker/individual/IndividualPickerActivityTest.java +++ b/tests/src/com/android/wallpaper/picker/individual/IndividualPickerActivityTest.java @@ -42,7 +42,6 @@ import android.content.Context; import android.content.Intent; import androidx.recyclerview.widget.RecyclerView; -import androidx.test.espresso.contrib.RecyclerViewActions; import androidx.test.espresso.intent.Intents; import androidx.test.filters.MediumTest; import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner; @@ -55,7 +54,6 @@ import com.android.wallpaper.model.PickerIntentFactory; import com.android.wallpaper.model.WallpaperInfo; import com.android.wallpaper.model.WallpaperRotationInitializer; import com.android.wallpaper.model.WallpaperRotationInitializer.RotationInitializationState; -import com.android.wallpaper.module.FormFactorChecker; import com.android.wallpaper.module.Injector; import com.android.wallpaper.module.InjectorProvider; import com.android.wallpaper.testing.TestCategoryProvider; @@ -175,22 +173,6 @@ public class IndividualPickerActivityTest { assertNull(recyclerView.findViewHolderForAdapterPosition(3)); } - @Test - public void testClickTile_Mobile_showsBottomActions() { - mTestFormFactorChecker.setFormFactor(FormFactorChecker.FORM_FACTOR_MOBILE); - - setActivityWithMockWallpapers(false /* isRotationEnabled */, - WallpaperRotationInitializer.ROTATION_NOT_INITIALIZED); - getActivity(); - - onView(withId(R.id.wallpaper_grid)).perform( - RecyclerViewActions.actionOnItemAtPosition(0, click())); - - onView(withId(R.id.action_back)).check(matches(isDisplayed())); - onView(withId(R.id.action_information)).check(matches(isDisplayed())); - onView(withId(R.id.action_apply)).check(matches(isDisplayed())); - } - @Test public void testClickDailyRefreshAction_ShowsStartRotationDialog() { setActivityWithMockWallpapers(true /* isRotationEnabled */, -- cgit v1.2.3 From a72d1171e47704c32c84702cecf7ade2c115d833 Mon Sep 17 00:00:00 2001 From: Ching-Sung Li Date: Fri, 5 Mar 2021 01:20:55 +0800 Subject: Add function to determine framework version above S Add function to BuildCompat to determine framework version above S for customization extended feature. Bug: 179129798 Test: Manual Change-Id: I8e9d8fc4bde948bdd27ddcaa283585e9d32348b2 --- src/com/android/wallpaper/compat/BuildCompat.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/com/android/wallpaper/compat/BuildCompat.java b/src/com/android/wallpaper/compat/BuildCompat.java index 9cd67c3..f0a1168 100755 --- a/src/com/android/wallpaper/compat/BuildCompat.java +++ b/src/com/android/wallpaper/compat/BuildCompat.java @@ -98,4 +98,11 @@ public class BuildCompat { public static boolean isAtLeastQ() { return sSdk >= VERSION_CODES.Q; } + + /** + * Returns whether the framework on the current Android device is S or higher. + */ + public static boolean isAtLeastS() { + return sSdk >= VERSION_CODES.S; + } } -- cgit v1.2.3 From d913daf28f2c399b9f4a9ff1dc2dafcb64b75720 Mon Sep 17 00:00:00 2001 From: Tianguang Zhang Date: Wed, 3 Mar 2021 20:21:26 +0100 Subject: Round thumbnail for individual picker This CL configures IndividualPickerFragment to use a round thumbnail for the applied wallpaper. Screenshots * Day - https://screenshot.googleplex.com/3tzed4USi4VyR38.png * Night - https://screenshot.googleplex.com/mcF6nM4NQwWuWTk.png Bug: 178745862 Fixes: 178745862 Test: added in IndividualPickerActivityTest.java Change-Id: Icb9142d2c3d43e312be8c9c0b1647eedededef87 --- res/layout/grid_item_image.xml | 15 +- res/layout/grid_item_my_photos.xml | 3 +- res/layout/grid_item_rotation_desktop.xml | 12 +- .../individual/CheckmarkSelectionAnimator.java | 283 --------------------- .../picker/individual/CircularImageView.java | 84 ++++++ .../individual/IndividualPickerFragment.java | 59 ++++- .../individual/IndividualPickerActivityTest.java | 68 ++++- 7 files changed, 194 insertions(+), 330 deletions(-) delete mode 100755 src/com/android/wallpaper/picker/individual/CheckmarkSelectionAnimator.java create mode 100644 src/com/android/wallpaper/picker/individual/CircularImageView.java diff --git a/res/layout/grid_item_image.xml b/res/layout/grid_item_image.xml index 45a327c..97315b4 100755 --- a/res/layout/grid_item_image.xml +++ b/res/layout/grid_item_image.xml @@ -43,6 +43,7 @@ android:layout_height="match_parent" android:contentDescription="@string/wallpaper_thumbnail" app:cardCornerRadius="?android:dialogCornerRadius" + app:cardBackgroundColor="@android:color/transparent" app:cardElevation="0dp"> - - - diff --git a/res/layout/grid_item_my_photos.xml b/res/layout/grid_item_my_photos.xml index b2f93dd..9c62a36 100755 --- a/res/layout/grid_item_my_photos.xml +++ b/res/layout/grid_item_my_photos.xml @@ -27,11 +27,10 @@ android:focusable="true" android:foreground="?attr/selectableItemBackground"> - - - - diff --git a/src/com/android/wallpaper/picker/individual/CheckmarkSelectionAnimator.java b/src/com/android/wallpaper/picker/individual/CheckmarkSelectionAnimator.java deleted file mode 100755 index db33857..0000000 --- a/src/com/android/wallpaper/picker/individual/CheckmarkSelectionAnimator.java +++ /dev/null @@ -1,283 +0,0 @@ -/* - * Copyright (C) 2017 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.wallpaper.picker.individual; - -import android.animation.Animator; -import android.animation.Animator.AnimatorListener; -import android.animation.AnimatorSet; -import android.animation.ObjectAnimator; -import android.content.Context; -import android.os.Handler; -import android.view.MotionEvent; -import android.view.View; -import android.view.View.OnHoverListener; -import android.widget.ImageView; - -import com.android.wallpaper.R; - -/** - * Implementation of {@code SelectionAnimator} which uses a checkmark and inset around the tile to - * indicate a selected state. - */ -public class CheckmarkSelectionAnimator implements SelectionAnimator { - private static final int HOVER_TIMEOUT_MS = 200; - private static final float HOVER_CHECK_CIRCLE_OPACITY = 0.67f; - - private Context mAppContext; - - private View mTile; - private ImageView mCheckCircle; - private View mLoadingIndicatorContainer; - private boolean mIsSelected; - private boolean mIsHovered; - private Handler mHoverHandler; - - private Runnable mHoverEnterRunnable = new Runnable() { - @Override - public void run() { - mIsHovered = true; - - mCheckCircle.setImageDrawable(mAppContext.getDrawable( - R.drawable.material_ic_check_circle_white_24)); - mCheckCircle.setVisibility(View.VISIBLE); - ObjectAnimator alphaAnimator = ObjectAnimator.ofFloat( - mCheckCircle, "alpha", 0f, HOVER_CHECK_CIRCLE_OPACITY); - alphaAnimator.start(); - - alphaAnimator.addListener(new AnimatorListener() { - @Override - public void onAnimationStart(Animator animation) { - } - - @Override - public void onAnimationEnd(Animator animation) { - mIsHovered = true; - } - - @Override - public void onAnimationCancel(Animator animation) { - } - - @Override - public void onAnimationRepeat(Animator animation) { - } - }); - } - }; - - private Runnable mHoverExitRunnable = new Runnable() { - @Override - public void run() { - mIsHovered = false; - - ObjectAnimator alphaAnimator = ObjectAnimator.ofFloat( - mCheckCircle, "alpha", HOVER_CHECK_CIRCLE_OPACITY, 0f); - alphaAnimator.addListener(new AnimatorListener() { - @Override - public void onAnimationStart(Animator animation) { - } - - @Override - public void onAnimationEnd(Animator animation) { - mCheckCircle.setVisibility(View.GONE); - mIsHovered = false; - } - - @Override - public void onAnimationCancel(Animator animation) { - } - - @Override - public void onAnimationRepeat(Animator animation) { - } - }); - - alphaAnimator.start(); - } - }; - - public CheckmarkSelectionAnimator(Context appContext, View itemView) { - mAppContext = appContext; - - mTile = itemView.findViewById(R.id.tile); - mCheckCircle = (ImageView) itemView.findViewById(R.id.check_circle); - mLoadingIndicatorContainer = itemView.findViewById(R.id.loading_indicator_container); - mHoverHandler = new Handler(); - - mTile.setOnHoverListener(new OnHoverListener() { - @Override - public boolean onHover(View v, MotionEvent event) { - // If this ViewHolder is already selected, then don't change the state of the check circle. - if (mIsSelected) { - return false; - } - - int actionMasked = event.getActionMasked(); - - switch (actionMasked) { - case MotionEvent.ACTION_HOVER_ENTER: - animateHoverEnter(); - break; - case MotionEvent.ACTION_HOVER_EXIT: - animateHoverExit(); - break; - default: - // fall out - } - - return false; - } - }); - } - - @Override - public void selectImmediately() { - mIsSelected = true; - int insetPx = mAppContext.getResources().getDimensionPixelSize( - R.dimen.grid_item_individual_wallpaper_selected_inset); - mTile.setPadding(insetPx, insetPx, insetPx, insetPx); - mCheckCircle.setImageDrawable( - mAppContext.getDrawable(R.drawable.check_circle_accent_24dp)); - mCheckCircle.setVisibility(View.VISIBLE); - mCheckCircle.setAlpha(1f); - mLoadingIndicatorContainer.setVisibility(View.GONE); - } - - @Override - public void deselectImmediately() { - mIsSelected = false; - mCheckCircle.setAlpha(0f); - mCheckCircle.setVisibility(View.GONE); - mTile.setPadding(0, 0, 0, 0); - mLoadingIndicatorContainer.setVisibility(View.GONE); - } - - @Override - public void animateSelected() { - // If already selected, do nothing. - if (mIsSelected) { - return; - } - - mLoadingIndicatorContainer.setVisibility(View.GONE); - - int[][] values = new int[2][4]; - values[0] = new int[]{0, 0, 0, 0}; - int insetPx = mAppContext.getResources().getDimensionPixelSize( - R.dimen.grid_item_individual_wallpaper_selected_inset); - values[1] = new int[]{insetPx, insetPx, insetPx, insetPx}; - - ObjectAnimator paddingAnimator = ObjectAnimator.ofMultiInt(mTile, "padding", values); - ObjectAnimator checkCircleAlphaAnimator = ObjectAnimator.ofFloat(mCheckCircle, "alpha", 0f, 1f); - - mCheckCircle.setImageDrawable( - mAppContext.getDrawable(R.drawable.check_circle_accent_24dp)); - - AnimatorSet animatorSet = new AnimatorSet(); - animatorSet.playTogether(paddingAnimator, checkCircleAlphaAnimator); - animatorSet.setDuration(200); - animatorSet.start(); - - mCheckCircle.setVisibility(View.VISIBLE); - - mIsSelected = true; - } - - @Override - public void animateDeselected() { - mLoadingIndicatorContainer.setVisibility(View.GONE); - - // If already deselected, do nothing. - if (!mIsSelected) { - return; - } - - int[][] values = new int[2][4]; - int insetPx = mAppContext.getResources().getDimensionPixelSize( - R.dimen.grid_item_individual_wallpaper_selected_inset); - values[0] = new int[]{insetPx, insetPx, insetPx, insetPx}; - values[1] = new int[]{0, 0, 0, 0}; - - ObjectAnimator paddingAnimator = ObjectAnimator.ofMultiInt(mTile, "padding", values); - ObjectAnimator checkCircleAlphaAnimator = ObjectAnimator.ofFloat(mCheckCircle, "alpha", 1f, 0f); - - AnimatorSet animatorSet = new AnimatorSet(); - animatorSet.playTogether(paddingAnimator, checkCircleAlphaAnimator); - animatorSet.setDuration(200); - animatorSet.start(); - - checkCircleAlphaAnimator.addListener(new AnimatorListener() { - @Override - public void onAnimationStart(Animator animation) { - } - - @Override - public void onAnimationEnd(Animator animation) { - mCheckCircle.setVisibility(View.GONE); - } - - @Override - public void onAnimationCancel(Animator animation) { - } - - @Override - public void onAnimationRepeat(Animator animation) { - } - }); - - mIsSelected = false; - } - - @Override - public void showLoading() { - mLoadingIndicatorContainer.setVisibility(View.VISIBLE); - } - - @Override - public void showNotLoading() { - mLoadingIndicatorContainer.setVisibility(View.GONE); - } - - private void animateHoverEnter() { - removeHoverHandlerCallbacks(); - - if (mIsHovered) { - return; - } - - mHoverHandler.postDelayed(mHoverEnterRunnable, HOVER_TIMEOUT_MS); - } - - private void animateHoverExit() { - removeHoverHandlerCallbacks(); - - if (!mIsHovered) { - return; - } - - mHoverHandler.postDelayed(mHoverExitRunnable, HOVER_TIMEOUT_MS); - } - - @Override - public boolean isSelected() { - return mIsSelected; - } - - private void removeHoverHandlerCallbacks() { - mHoverHandler.removeCallbacks(mHoverEnterRunnable); - mHoverHandler.removeCallbacks(mHoverExitRunnable); - } -} diff --git a/src/com/android/wallpaper/picker/individual/CircularImageView.java b/src/com/android/wallpaper/picker/individual/CircularImageView.java new file mode 100644 index 0000000..86bf394 --- /dev/null +++ b/src/com/android/wallpaper/picker/individual/CircularImageView.java @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.wallpaper.picker.individual; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Path; +import android.util.AttributeSet; +import android.widget.ImageView; + +/** + * A view where the image can be optionally clipped to have a circular border. + */ +public class CircularImageView extends ImageView { + private boolean mClipped = false; + + private boolean mPathSet = false; + private Path mPath; + + public CircularImageView(Context context) { + super(context); + } + + public CircularImageView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public CircularImageView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + /** + * Returns whether the image is clipped with a circular boundary. + */ + public boolean getClipped() { + return mClipped; + } + + /** + * Modifies how the image is clipped. When called with true, the image + * is clipped with a circular boundary; with false, the default boundary. + * + * @param clippedValue Whether the image is clipped with a circular + * boundary. + */ + public void setClipped(boolean clippedValue) { + mClipped = clippedValue; + invalidate(); + requestLayout(); + } + + @Override + protected void onDraw(Canvas canvas) { + if (mClipped) { + if (!mPathSet) { + // Computes path. + mPath = new Path(); + mPath.addCircle( + getWidth() / 2, + getHeight() / 2, + getHeight() / 2, + Path.Direction.CW); + mPathSet = true; + } + canvas.clipPath(mPath); + } + + super.onDraw(canvas); + } +} + diff --git a/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java b/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java index 71d70e3..3d23e50 100755 --- a/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java +++ b/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java @@ -1008,7 +1008,8 @@ public class IndividualPickerFragment extends BottomActionBarFragment ? index + 1 : index; ViewHolder holder = mImageGrid.findViewHolderForAdapterPosition(index); if (holder != null) { - holder.itemView.setActivated(isActivated); + CircularImageView thumbnail = holder.itemView.findViewById(R.id.thumbnail); + thumbnail.setClipped(isActivated); } else { // Item is not visible, make sure the item is re-bound when it becomes visible. mAdapter.notifyItemChanged(index); @@ -1023,10 +1024,7 @@ public class IndividualPickerFragment extends BottomActionBarFragment index = (shouldShowRotationTile() || mCategory.supportsCustomPhotos()) ? index + 1 : index; ViewHolder holder = mImageGrid.findViewHolderForAdapterPosition(index); - if (holder != null) { - holder.itemView.findViewById(R.id.check_circle) - .setVisibility(isApplied ? View.VISIBLE : View.GONE); - } else { + if (holder == null) { // Item is not visible, make sure the item is re-bound when it becomes visible. mAdapter.notifyItemChanged(index); } @@ -1075,6 +1073,45 @@ public class IndividualPickerFragment extends BottomActionBarFragment return mFormFactor == FormFactorChecker.FORM_FACTOR_DESKTOP && isRotationEnabled(); } + class EmptySelectionAnimator implements SelectionAnimator{ + EmptySelectionAnimator() {} + + public boolean isSelected() { + return false; + } + + /** + * Sets the UI to selected immediately with no animation. + */ + public void selectImmediately() {} + + /** + * Sets the UI to deselected immediately with no animation. + */ + public void deselectImmediately() {} + + /** + * Sets the UI to selected with a smooth animation. + */ + public void animateSelected() {} + + /** + * Sets the UI to deselected with a smooth animation. + */ + public void animateDeselected() {} + + /** + * Sets the UI to show a loading indicator. + */ + public void showLoading() {} + + /** + * Sets the UI to hide the loading indicator. + */ + public void showNotLoading() {} + + } + /** * RecyclerView Adapter subclass for the wallpaper tiles in the RecyclerView. */ @@ -1154,8 +1191,7 @@ public class IndividualPickerFragment extends BottomActionBarFragment private ViewHolder createRotationHolder(ViewGroup parent) { LayoutInflater layoutInflater = LayoutInflater.from(getActivity()); View view = layoutInflater.inflate(R.layout.grid_item_rotation_desktop, parent, false); - SelectionAnimator selectionAnimator = - new CheckmarkSelectionAnimator(getActivity(), view); + SelectionAnimator selectionAnimator = new EmptySelectionAnimator(); return new DesktopRotationHolder(getActivity(), mTileSizePx.y, view, selectionAnimator, IndividualPickerFragment.this); } @@ -1165,8 +1201,7 @@ public class IndividualPickerFragment extends BottomActionBarFragment View view = layoutInflater.inflate(R.layout.grid_item_image, parent, false); if (mFormFactor == FormFactorChecker.FORM_FACTOR_DESKTOP) { - SelectionAnimator selectionAnimator = - new CheckmarkSelectionAnimator(getActivity(), view); + SelectionAnimator selectionAnimator = new EmptySelectionAnimator(); return new SetIndividualHolder( getActivity(), mTileSizePx.y, view, selectionAnimator, @@ -1319,10 +1354,8 @@ public class IndividualPickerFragment extends BottomActionBarFragment mAppliedWallpaperInfo = wallpaper; } - holder.itemView.setActivated( - (isWallpaperApplied && !hasUserSelectedWallpaper) || isWallpaperSelected); - holder.itemView.findViewById(R.id.check_circle).setVisibility( - isWallpaperApplied ? View.VISIBLE : View.GONE); + CircularImageView thumbnail = holder.itemView.findViewById(R.id.thumbnail); + thumbnail.setClipped(isWallpaperApplied); } } diff --git a/tests/src/com/android/wallpaper/picker/individual/IndividualPickerActivityTest.java b/tests/src/com/android/wallpaper/picker/individual/IndividualPickerActivityTest.java index a4decf4..902a42c 100644 --- a/tests/src/com/android/wallpaper/picker/individual/IndividualPickerActivityTest.java +++ b/tests/src/com/android/wallpaper/picker/individual/IndividualPickerActivityTest.java @@ -61,6 +61,7 @@ import com.android.wallpaper.testing.TestFormFactorChecker; import com.android.wallpaper.testing.TestInjector; import com.android.wallpaper.testing.TestWallpaperCategory; import com.android.wallpaper.testing.TestWallpaperInfo; +import com.android.wallpaper.testing.TestWallpaperPreferences; import com.android.wallpaper.testing.TestWallpaperRotationInitializer; import org.hamcrest.Matcher; @@ -97,6 +98,9 @@ public class IndividualPickerActivityTest { private TestWallpaperCategory mTestCategory; + private TestWallpaperPreferences mPreferences; + private ArrayList mWallpapers; + @Rule public ActivityTestRule mActivityRule = new ActivityTestRule<>(IndividualPickerActivity.class, false, false); @@ -114,6 +118,15 @@ public class IndividualPickerActivityTest { sWallpaperInfo1.setAttributions(Arrays.asList( "Attribution 0", "Attribution 1", "Attribution 2")); + + sWallpaperInfo1.setCollectionId("collection"); + + mPreferences = (TestWallpaperPreferences) mInjector.getPreferences(context); + + mWallpapers = new ArrayList<>(); + mWallpapers.add(sWallpaperInfo1); + mWallpapers.add(sWallpaperInfo2); + mWallpapers.add(sWallpaperInfo3); } @After @@ -134,15 +147,8 @@ public class IndividualPickerActivityTest { private void setActivityWithMockWallpapers(boolean isRotationEnabled, @RotationInitializationState int rotationState) { - sWallpaperInfo1.setCollectionId("collection"); - - ArrayList wallpapers = new ArrayList<>(); - wallpapers.add(sWallpaperInfo1); - wallpapers.add(sWallpaperInfo2); - wallpapers.add(sWallpaperInfo3); - mTestCategory = new TestWallpaperCategory( - "Test category", "collection", wallpapers, 0 /* priority */); + "Test category", "collection", mWallpapers, 0 /* priority */); mTestCategory.setIsRotationEnabled(isRotationEnabled); mTestCategory.setRotationInitializationState(rotationState); @@ -388,4 +394,50 @@ public class IndividualPickerActivityTest { assertEquals("Attribution 0", holder.itemView.findViewById(R.id.tile) .getContentDescription()); } + + /** + * Tests whether the selected wallpaper has a clipped thumbnail: first wallpaper. + */ + @Test + public void testSelectFirstWallpaper_ShowsClippedThumbnail() { + runSelectWallpaperTest(0); + } + + /** + * Tests whether the selected wallpaper has a clipped thumbnail: second wallpaper. + */ + @Test + public void testSelectSecondWallpaper_ShowsClippedThumbnail() { + runSelectWallpaperTest(1); + } + + /** + * Tests whether the selected wallpaper has a clipped thumbnail: third wallpaper. + */ + @Test + public void testSelectThirdWallpaper_ShowsClippedThumbnail() { + runSelectWallpaperTest(2); + } + + private void runSelectWallpaperTest(int selectedWallpaperIndex) { + mPreferences.setHomeWallpaperRemoteId( + mWallpapers.get(selectedWallpaperIndex).getWallpaperId()); + + setActivityWithMockWallpapers(false /* isRotationEnabled */, + WallpaperRotationInitializer.ROTATION_NOT_INITIALIZED); + IndividualPickerActivity activity = getActivity(); + + RecyclerView recyclerView = activity.findViewById(R.id.wallpaper_grid); + + for (int index = 0; index < 3; index++) { + assertNotNull(recyclerView.findViewHolderForAdapterPosition(index)); + + CircularImageView thumbnail = + recyclerView.findViewHolderForAdapterPosition(index) + .itemView.findViewById(R.id.thumbnail); + + // Assert that only the selected wallpaper has a clipped thumbnail. + assertEquals(thumbnail.getClipped(), index == selectedWallpaperIndex); + } + } } -- cgit v1.2.3 From 3bc70f31636259d8fec55bef6d421a37448d7237 Mon Sep 17 00:00:00 2001 From: Chuck Liao Date: Mon, 15 Mar 2021 20:45:12 +0800 Subject: Rename from grid_item_permission_needed.xml to permission_needed_layout.xml. Bug: 179127643 Test: Manual Change-Id: I96c2162343136fdc3d92ea8087c975a34d63a8f0 --- res/layout/fragment_category_picker.xml | 2 +- res/layout/grid_item_permission_needed.xml | 59 ------------------------------ res/layout/permission_needed_layout.xml | 59 ++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+), 60 deletions(-) delete mode 100755 res/layout/grid_item_permission_needed.xml create mode 100755 res/layout/permission_needed_layout.xml diff --git a/res/layout/fragment_category_picker.xml b/res/layout/fragment_category_picker.xml index 0b5547c..63cf7d8 100755 --- a/res/layout/fragment_category_picker.xml +++ b/res/layout/fragment_category_picker.xml @@ -41,7 +41,7 @@ - - - - - - - - - - + + + diff --git a/res/layout/section_header.xml b/res/layout/section_header.xml index 305cd00..49dccbd 100644 --- a/res/layout/section_header.xml +++ b/res/layout/section_header.xml @@ -19,6 +19,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" + android:background="@null" app:elevation="0dp"> 26dp 100dp + + 144dp + 24dp 24dp 4dp @@ -164,6 +168,12 @@ 50dp 24dp + + -60dp + 15dp + 28dp + 42dp 54dp diff --git a/res/values/strings.xml b/res/values/strings.xml index 47da9aa..6ea6272 100755 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -344,4 +344,11 @@ The collection doesn\'t exist + + + Hide UI Preview + + + Show UI Preview + diff --git a/src/com/android/wallpaper/picker/BasePreviewActivity.java b/src/com/android/wallpaper/picker/BasePreviewActivity.java index 93f7bc5..361a095 100755 --- a/src/com/android/wallpaper/picker/BasePreviewActivity.java +++ b/src/com/android/wallpaper/picker/BasePreviewActivity.java @@ -20,6 +20,7 @@ import android.graphics.PixelFormat; import android.os.Bundle; import androidx.annotation.Nullable; +import androidx.core.view.WindowCompat; import com.android.wallpaper.R; import com.android.wallpaper.module.Injector; @@ -52,4 +53,11 @@ public abstract class BasePreviewActivity extends BaseActivity { mUserEventLogger.logAppLaunched(getIntent()); } } + + /** Allows the current activity to be full screen. */ + protected void enableFullScreen() { + WindowCompat.setDecorFitsSystemWindows(getWindow(), /* decorFitsSystemWindows= */ false); + + // Window insets are set in the PreviewFragment#onCreateView method. + } } diff --git a/src/com/android/wallpaper/picker/ImagePreviewFragment.java b/src/com/android/wallpaper/picker/ImagePreviewFragment.java index 4e0b54a..5088608 100755 --- a/src/com/android/wallpaper/picker/ImagePreviewFragment.java +++ b/src/com/android/wallpaper/picker/ImagePreviewFragment.java @@ -60,6 +60,7 @@ import com.android.wallpaper.module.BitmapCropper; import com.android.wallpaper.module.InjectorProvider; import com.android.wallpaper.module.WallpaperPersister.Destination; import com.android.wallpaper.module.WallpaperPersister.SetWallpaperCallback; +import com.android.wallpaper.util.FullScreenAnimation; import com.android.wallpaper.util.ResourceUtils; import com.android.wallpaper.util.ScreenSizeCalculator; import com.android.wallpaper.util.SizeCalculator; @@ -168,6 +169,7 @@ public class ImagePreviewFragment extends PreviewFragment { // Trim some memory from Glide to make room for the full-size image in this fragment. Glide.get(activity).setMemoryCategory(MemoryCategory.LOW); setUpLoadingIndicator(); + return view; } @@ -199,6 +201,12 @@ public class ImagePreviewFragment extends PreviewFragment { protected void onWallpaperColorsChanged(@Nullable WallpaperColors colors) { mLockScreenPreviewer.setColor(colors); + + mFullScreenAnimation.setFullScreenTextColor( + colors == null || (colors.getColorHints() + & WallpaperColors.HINT_SUPPORTS_DARK_TEXT) == 0 + ? FullScreenAnimation.FullScreenTextColor.LIGHT + : FullScreenAnimation.FullScreenTextColor.DARK); } @Override @@ -237,10 +245,7 @@ public class ImagePreviewFragment extends PreviewFragment { R.layout.wallpaper_info_view, /* root= */null); mBottomActionBar.attachViewToBottomSheetAndBindAction(mWallpaperInfoView, INFORMATION); mBottomActionBar.showActionsOnly(INFORMATION, EDIT, APPLY); - mBottomActionBar.setActionClickListener(EDIT, v -> - setEditingEnabled(mBottomActionBar.isActionSelected(EDIT)) - ); - mBottomActionBar.setActionSelectedListener(EDIT, this::setEditingEnabled); + mBottomActionBar.setActionClickListener(APPLY, this::onSetWallpaperClicked); // Update target view's accessibility param since it will be blocked by the bottom sheet @@ -259,7 +264,6 @@ public class ImagePreviewFragment extends PreviewFragment { }); // Will trigger onActionSelected callback to update the editing state. - mBottomActionBar.setDefaultSelectedButton(EDIT); mBottomActionBar.show(); // Loads wallpaper info and populate into view. setUpExploreIntentAndLabel(this::populateWallpaperInfo); @@ -520,7 +524,6 @@ public class ImagePreviewFragment extends PreviewFragment { } private class WallpaperSurfaceCallback implements SurfaceHolder.Callback { - private Surface mLastSurface; private SurfaceControlViewHost mHost; @@ -596,12 +599,16 @@ public class ImagePreviewFragment extends PreviewFragment { } }; - private void setEditingEnabled(boolean enabled) { - mTouchForwardingLayout.setForwardingEnabled(enabled); + @Override + protected void setFullScreen(boolean fullScreen) { + super.setFullScreen(fullScreen); + mTouchForwardingLayout.setForwardingEnabled(fullScreen); } private void updateScreenPreview(boolean isHomeSelected) { mWorkspaceSurface.setVisibility(isHomeSelected ? View.VISIBLE : View.INVISIBLE); mLockPreviewContainer.setVisibility(isHomeSelected ? View.INVISIBLE : View.VISIBLE); + + mFullScreenAnimation.setIsHomeSelected(isHomeSelected); } } diff --git a/src/com/android/wallpaper/picker/LivePreviewFragment.java b/src/com/android/wallpaper/picker/LivePreviewFragment.java index c7c6f54..859dc2a 100644 --- a/src/com/android/wallpaper/picker/LivePreviewFragment.java +++ b/src/com/android/wallpaper/picker/LivePreviewFragment.java @@ -18,6 +18,7 @@ package com.android.wallpaper.picker; import static com.android.wallpaper.widget.BottomActionBar.BottomAction.APPLY; import static com.android.wallpaper.widget.BottomActionBar.BottomAction.CUSTOMIZE; import static com.android.wallpaper.widget.BottomActionBar.BottomAction.DELETE; +import static com.android.wallpaper.widget.BottomActionBar.BottomAction.EDIT; import static com.android.wallpaper.widget.BottomActionBar.BottomAction.INFORMATION; import android.annotation.SuppressLint; @@ -64,6 +65,7 @@ import androidx.slice.widget.SliceView; import com.android.wallpaper.R; import com.android.wallpaper.compat.BuildCompat; import com.android.wallpaper.module.WallpaperPersister.SetWallpaperCallback; +import com.android.wallpaper.util.FullScreenAnimation; import com.android.wallpaper.util.ResourceUtils; import com.android.wallpaper.util.ScreenSizeCalculator; import com.android.wallpaper.util.SizeCalculator; @@ -213,6 +215,7 @@ public class LivePreviewFragment extends PreviewFragment implements view.removeOnLayoutChangeListener(this); } }); + return view; } @@ -257,6 +260,8 @@ public class LivePreviewFragment extends PreviewFragment implements private void updateScreenPreview(boolean isHomeSelected) { mWorkspaceSurface.setVisibility(isHomeSelected ? View.VISIBLE : View.INVISIBLE); mLockPreviewContainer.setVisibility(isHomeSelected ? View.INVISIBLE : View.VISIBLE); + + mFullScreenAnimation.setIsHomeSelected(isHomeSelected); } private void setupCurrentWallpaperPreview() { @@ -376,7 +381,7 @@ public class LivePreviewFragment extends PreviewFragment implements @Override protected void onBottomActionBarReady(BottomActionBar bottomActionBar) { super.onBottomActionBarReady(bottomActionBar); - mBottomActionBar.showActionsOnly(INFORMATION, DELETE, CUSTOMIZE, APPLY); + mBottomActionBar.showActionsOnly(INFORMATION, DELETE, EDIT, CUSTOMIZE, APPLY); mBottomActionBar.setActionClickListener(APPLY, unused -> onSetWallpaperClicked(null)); mBottomActionBar.attachViewToBottomSheetAndBindAction(mWallpaperInfoView, INFORMATION); @@ -460,6 +465,12 @@ public class LivePreviewFragment extends PreviewFragment implements @Override public void onWallpaperColorsChanged(WallpaperColors colors, int displayId) { mLockScreenPreviewer.setColor(colors); + + mFullScreenAnimation.setFullScreenTextColor( + colors == null || (colors.getColorHints() + & WallpaperColors.HINT_SUPPORTS_DARK_TEXT) == 0 + ? FullScreenAnimation.FullScreenTextColor.LIGHT + : FullScreenAnimation.FullScreenTextColor.DARK); } @Override diff --git a/src/com/android/wallpaper/picker/PreviewActivity.java b/src/com/android/wallpaper/picker/PreviewActivity.java index 3a2b917..3f571c3 100755 --- a/src/com/android/wallpaper/picker/PreviewActivity.java +++ b/src/com/android/wallpaper/picker/PreviewActivity.java @@ -49,6 +49,8 @@ public class PreviewActivity extends BasePreviewActivity implements AppbarFragme super.onCreate(savedInstanceState); setContentView(R.layout.activity_preview); + enableFullScreen(); + FragmentManager fm = getSupportFragmentManager(); Fragment fragment = fm.findFragmentById(R.id.fragment_container); diff --git a/src/com/android/wallpaper/picker/PreviewFragment.java b/src/com/android/wallpaper/picker/PreviewFragment.java index 0ff4423..f0726da 100755 --- a/src/com/android/wallpaper/picker/PreviewFragment.java +++ b/src/com/android/wallpaper/picker/PreviewFragment.java @@ -16,6 +16,7 @@ package com.android.wallpaper.picker; import static com.android.wallpaper.widget.BottomActionBar.BottomAction.APPLY; +import static com.android.wallpaper.widget.BottomActionBar.BottomAction.EDIT; import android.app.Activity; import android.content.Context; @@ -23,6 +24,7 @@ import android.content.Intent; import android.content.res.ColorStateList; import android.content.res.Resources.NotFoundException; import android.content.res.TypedArray; +import android.graphics.Insets; import android.os.Bundle; import android.util.Log; import android.view.ContextThemeWrapper; @@ -30,8 +32,11 @@ import android.view.LayoutInflater; import android.view.SurfaceView; import android.view.View; import android.view.ViewGroup; +import android.view.WindowInsets; +import android.widget.Button; import android.widget.Toast; +import androidx.activity.OnBackPressedCallback; import androidx.annotation.CallSuper; import androidx.annotation.IdRes; import androidx.annotation.IntDef; @@ -41,6 +46,7 @@ import androidx.core.widget.ContentLoadingProgressBar; import androidx.fragment.app.FragmentActivity; import com.android.wallpaper.R; +import com.android.wallpaper.compat.BuildCompat; import com.android.wallpaper.model.LiveWallpaperInfo; import com.android.wallpaper.model.WallpaperInfo; import com.android.wallpaper.module.Injector; @@ -49,6 +55,7 @@ import com.android.wallpaper.module.UserEventLogger; import com.android.wallpaper.module.WallpaperPersister.Destination; import com.android.wallpaper.module.WallpaperPreferences; import com.android.wallpaper.module.WallpaperSetter; +import com.android.wallpaper.util.FullScreenAnimation; import com.android.wallpaper.widget.BottomActionBar; import java.util.Date; @@ -140,6 +147,10 @@ public abstract class PreviewFragment extends AppbarFragment implements private SetWallpaperErrorDialogFragment mStagedSetWallpaperErrorDialogFragment; private LoadWallpaperErrorDialogFragment mStagedLoadWallpaperErrorDialogFragment; + // For full screen animations. + protected View mRootView; + protected FullScreenAnimation mFullScreenAnimation; + protected static int getAttrColor(Context context, int attr) { TypedArray ta = context.obtainStyledAttributes(new int[]{attr}); int colorAccent = ta.getColor(0, 0); @@ -182,6 +193,38 @@ public abstract class PreviewFragment extends AppbarFragment implements mLoadingProgressBar = view.findViewById(getLoadingIndicatorResId()); mLoadingProgressBar.show(); + + mRootView = view; + mFullScreenAnimation = new FullScreenAnimation(view); + + getActivity().getWindow().getDecorView().setOnApplyWindowInsetsListener( + (v, windowInsets) -> { + v.setPadding( + v.getPaddingLeft(), + 0, + v.getPaddingRight(), + 0); + + mFullScreenAnimation.setWindowInsets(windowInsets); + mFullScreenAnimation.placeViews(); + + // Consume only the top inset (status bar), to let other content in the Activity + // consume the nav bar (ie, by using "fitSystemWindows") + return BuildCompat.isAtLeastQ() + ? new WindowInsets.Builder(windowInsets).setSystemWindowInsets( + Insets.of( + windowInsets.getSystemWindowInsetLeft(), + /* top= */ 0, + windowInsets.getStableInsetRight(), + 0)).build() + : windowInsets.replaceSystemWindowInsets( + windowInsets.getSystemWindowInsetLeft(), + /* top= */ 0, + windowInsets.getStableInsetRight(), + 0); + } + ); + return view; } @@ -190,6 +233,42 @@ public abstract class PreviewFragment extends AppbarFragment implements super.onBottomActionBarReady(bottomActionBar); mBottomActionBar = bottomActionBar; // TODO: Extract the common code here. + setBottomActionBarAndToolbarActions(); + } + + protected void setBottomActionBarAndToolbarActions() { + mBottomActionBar.setActionClickListener(EDIT, (view) -> { + setFullScreen(true); + mBottomActionBar.deselectAction(EDIT); + }); + + mRootView.findViewById(R.id.hide_ui_preview_button).setOnClickListener( + (button) -> { + boolean visible = mFullScreenAnimation.getWorkspaceVisibility(); + ((Button) button).setText(visible + ? R.string.show_ui_preview_text + : R.string.hide_ui_preview_text); + mFullScreenAnimation.setWorkspaceVisibility(!visible); + } + ); + mRootView.findViewById(R.id.set_as_wallpaper_button).setOnClickListener( + this::onSetWallpaperClicked + ); + + mFullScreenAnimation.ensureBottomActionBarIsCorrectlyLocated(); + + OnBackPressedCallback callback = new OnBackPressedCallback(true) { + @Override + public void handleOnBackPressed() { + if (mFullScreenAnimation.isFullScreen()) { + setFullScreen(false); + } else { + getActivity().finish(); + } + } + }; + + getActivity().getOnBackPressedDispatcher().addCallback(this, callback); } protected List getAttributions(Context context) { @@ -381,4 +460,8 @@ public abstract class PreviewFragment extends AppbarFragment implements return getResources().getConfiguration().getLayoutDirection() == View.LAYOUT_DIRECTION_RTL; } + + protected void setFullScreen(boolean fullScreen) { + mFullScreenAnimation.startAnimation(fullScreen); + } } diff --git a/src/com/android/wallpaper/picker/StandalonePreviewActivity.java b/src/com/android/wallpaper/picker/StandalonePreviewActivity.java index 6e873df..9b652be 100755 --- a/src/com/android/wallpaper/picker/StandalonePreviewActivity.java +++ b/src/com/android/wallpaper/picker/StandalonePreviewActivity.java @@ -50,6 +50,8 @@ public class StandalonePreviewActivity extends BasePreviewActivity implements Ap super.onCreate(savedInstanceState); setContentView(R.layout.activity_preview); + enableFullScreen(); + mUserEventLogger = InjectorProvider.getInjector().getUserEventLogger(getApplicationContext()); mUserEventLogger.logStandalonePreviewLaunched(); diff --git a/src/com/android/wallpaper/picker/ViewOnlyPreviewActivity.java b/src/com/android/wallpaper/picker/ViewOnlyPreviewActivity.java index 4710f21..5e7e01d 100755 --- a/src/com/android/wallpaper/picker/ViewOnlyPreviewActivity.java +++ b/src/com/android/wallpaper/picker/ViewOnlyPreviewActivity.java @@ -51,11 +51,8 @@ public class ViewOnlyPreviewActivity extends BasePreviewActivity implements Appb protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_preview); - } - @Override - public void onAttachedToWindow() { - super.onAttachedToWindow(); + enableFullScreen(); FragmentManager fm = getSupportFragmentManager(); Fragment fragment = fm.findFragmentById(R.id.fragment_container); diff --git a/src/com/android/wallpaper/util/FullScreenAnimation.java b/src/com/android/wallpaper/util/FullScreenAnimation.java new file mode 100644 index 0000000..587464e --- /dev/null +++ b/src/com/android/wallpaper/util/FullScreenAnimation.java @@ -0,0 +1,444 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.wallpaper.util; + +import android.animation.AnimatorSet; +import android.animation.ObjectAnimator; +import android.animation.ValueAnimator; +import android.content.res.TypedArray; +import android.graphics.Insets; +import android.graphics.Point; +import android.graphics.Rect; +import android.view.Gravity; +import android.view.SurfaceView; +import android.view.View; +import android.view.WindowInsets; +import android.widget.Button; +import android.widget.FrameLayout; +import android.widget.ImageButton; +import android.widget.TextView; +import android.widget.Toolbar; + +import androidx.cardview.widget.CardView; + +import com.android.wallpaper.R; +import com.android.wallpaper.picker.TouchForwardingLayout; + +import com.google.android.material.appbar.AppBarLayout; + +/** + * A class storing information about a preview fragment's full-screen layout. + * + * Used for {@code ImagePreviewFragment} and {@code LivePreviewFragment}. + */ +public class FullScreenAnimation { + + private final View mView; + private final TouchForwardingLayout mTouchForwardingLayout; + private final SurfaceView mWorkspaceSurface; + private boolean mIsFullScreen = false; + + private boolean mScaleIsSet = false; + private boolean mWorkspaceVisibility = true; + private float mOffsetY; + private float mScale; + private float mDefaultRadius; + private int mWorkspaceWidth; + private int mWorkspaceHeight; + private float mBottomActionBarTranslation; + private float mPillButtonsTranslation; + private int mStatusBarHeight; + private int mNavigationBarHeight; + + private static final float HIDE_ICONS_TOP_RATIO = 0.25f; + private static final float HIDE_ICONS_BOTTOM_RATIO = 0.875f; + + private boolean mIsHomeSelected = true; + + /** + * Options for the full-screen text color. + * + * {@code DEFAULT} represents the default text color. + * {@code DARK} represents a text color that is dark, and should be used when the wallpaper + * supports dark text. + * {@code LIGHT} represents a text color that is light, and should be used when the wallpaper + * does not support dark text. + */ + public enum FullScreenTextColor { + DEFAULT, + DARK, + LIGHT + } + + FullScreenTextColor mFullScreenTextColor = FullScreenTextColor.DEFAULT; + private int mCurrentTextColor; + + /** + * Constructor. + * + * @param view The view containing all relevant UI elements. Equal to {@code mRootView}. + */ + public FullScreenAnimation(View view) { + mView = view; + mTouchForwardingLayout = view.findViewById(R.id.touch_forwarding_layout); + mWorkspaceSurface = view.findViewById(R.id.workspace_surface); + mCurrentTextColor = ResourceUtils.getColorAttr( + view.getContext(), + android.R.attr.textColorPrimary); + } + + /** + * Returns if the preview layout is currently in full screen. + * + * @return whether the preview layout is currently in full screen. + */ + public boolean isFullScreen() { + return mIsFullScreen; + } + + /** + * Informs this object whether the home tab is selected. + * + * Used to determine the visibility of {@code lock_screen_preview_container}. + * + * @param isHomeSelected whether the home tab is selected. + */ + public void setIsHomeSelected(boolean isHomeSelected) { + mIsHomeSelected = isHomeSelected; + } + + private int getStatusBarHeight() { + return mStatusBarHeight; + } + + private int getNavigationBarHeight() { + return mNavigationBarHeight; + } + + private int getAttributeDimension(int resId) { + final TypedArray attributes = mView.getContext().getTheme().obtainStyledAttributes( + new int[]{resId}); + int dimension = attributes.getDimensionPixelSize(0, 0); + attributes.recycle(); + return dimension; + } + + private void setViewMargins(int viewId, float marginTop, float marginBottom, boolean pillTabs) { + FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams( + FrameLayout.LayoutParams.MATCH_PARENT, + pillTabs ? FrameLayout.LayoutParams.WRAP_CONTENT + : FrameLayout.LayoutParams.MATCH_PARENT); + + layoutParams.setMargins(0, Math.round(marginTop), 0, Math.round(marginBottom)); + + if (pillTabs) { + layoutParams.gravity = Gravity.BOTTOM; + } + + mView.findViewById(viewId).setLayoutParams(layoutParams); + } + + /** + * Informs the {@code FullScreenAnimation} object about the window insets of the current + * window. + * + * Called by a {@code View.OnApplyWindowInsetsListener} defined in {@code PreviewFragment}. + * + * @param windowInsets the window insets of the current window. + */ + public void setWindowInsets(WindowInsets windowInsets) { + Insets insets = windowInsets.getInsetsIgnoringVisibility( + WindowInsets.Type.systemBars() + ); + + mStatusBarHeight = insets.top; + mNavigationBarHeight = insets.bottom; + } + + /** + * Place UI elements in the correct locations. + * + * Takes status bar and navigation bar into account. + */ + public void placeViews() { + setViewMargins(R.id.screen_preview_layout, + getStatusBarHeight() + getAttributeDimension(R.attr.actionBarSize), + getNavigationBarHeight() + + mView.getResources().getDimension(R.dimen.bottom_actions_height) + + mView.getResources().getDimension(R.dimen.pill_tabs_height), + false); + setViewMargins(R.id.bottom_action_bar_container, + 0, + getNavigationBarHeight(), + false); + setViewMargins(R.id.pill_tabs_container, + 0, + getNavigationBarHeight() + + mView.getResources().getDimension(R.dimen.bottom_actions_height), + true); + ensureToolbarIsCorrectlyLocated(); + } + + /** + * Ensures that the bottom action bar is in the correct location. + * + * Called by {@code onBottomActionBarReady}, so that the bottom action bar is correctly located + * when it is redrawn. + */ + public void ensureBottomActionBarIsCorrectlyLocated() { + float targetTranslation = mIsFullScreen ? mBottomActionBarTranslation : 0; + mView.findViewById(R.id.bottom_actionbar).setTranslationY(targetTranslation); + } + + /** + * Ensures that the toolbar is in the correct location. + * + * Called by {@code placeViews}, {@code ImageWallpaperColorThemePreviewFragment#updateToolBar}, + * and @{code LiveWallpaperColorThemePreviewFragment#updateToolBar}, so that the toolbar is + * correctly located when it is redrawn. + */ + public void ensureToolbarIsCorrectlyLocated() { + AppBarLayout.LayoutParams layoutParams = new AppBarLayout.LayoutParams( + AppBarLayout.LayoutParams.MATCH_PARENT, + AppBarLayout.LayoutParams.MATCH_PARENT); + + layoutParams.setMargins(0, getStatusBarHeight(), 0, 0); + + mView.findViewById(R.id.toolbar).setLayoutParams(layoutParams); + } + + /** + * Ensures that the text and the navigation button on the toolbar is given the correct color. + * + * Called by {@code updateToolBar}. + */ + public void ensureToolbarIsCorrectlyColored() { + TextView textView = mView.findViewById(R.id.custom_toolbar_title); + Toolbar toolbar = mView.findViewById(R.id.toolbar); + ImageButton button = (ImageButton) toolbar.getNavigationView(); + + textView.setTextColor(mCurrentTextColor); + button.setColorFilter(mCurrentTextColor); + } + + /** + * Sets the text color used for the "Preview" caption in full screen mode. + * + * @param fullScreenTextColor The desired color for the "Preview" caption in full screen mode. + */ + public void setFullScreenTextColor(FullScreenTextColor fullScreenTextColor) { + mFullScreenTextColor = fullScreenTextColor; + + animateColor(mIsFullScreen); + } + + /** + * Sets the visibility of the workspace surface (containing icons from the home screen) and + * the elements unique to the lock screen (date and time). + * + * Called when the "Hide UI Preview" button is clicked. + * + * @param visible {@code true} if the icons should be shown; + * {@code false} if they should be hidden. + */ + public void setWorkspaceVisibility(boolean visible) { + // Not using [setVisibility], because it creates a "jump". + if (visible) { + mWorkspaceSurface.setClipBounds(new Rect( + 0, + Math.round(mWorkspaceHeight * HIDE_ICONS_TOP_RATIO), + mWorkspaceWidth, + Math.round(mWorkspaceHeight * HIDE_ICONS_BOTTOM_RATIO))); + mView.findViewById(R.id.lock_screen_preview_container).setVisibility(View.VISIBLE); + } else { + int half = mWorkspaceHeight / 2; + mWorkspaceSurface.setClipBounds(new Rect( + 0, + half, + mWorkspaceWidth, + half + 1)); + mView.findViewById(R.id.lock_screen_preview_container).setVisibility(View.INVISIBLE); + } + if (mIsHomeSelected) { + mView.findViewById(R.id.lock_screen_preview_container).setVisibility(View.INVISIBLE); + } + mWorkspaceVisibility = visible; + } + + /** + * Returns the visibility of the workspace surface (containing icons from the home screen). + * + * @return the visibility of the workspace surface. + */ + public boolean getWorkspaceVisibility() { + return mWorkspaceVisibility; + } + + private void animateColor(boolean toFullScreen) { + TextView textView = mView.findViewById(R.id.custom_toolbar_title); + + int targetColor; + if (!toFullScreen || mFullScreenTextColor == FullScreenTextColor.DEFAULT) { + targetColor = ResourceUtils.getColorAttr( + mView.getContext(), + android.R.attr.textColorPrimary); + } else if (mFullScreenTextColor == FullScreenTextColor.DARK) { + targetColor = mView.getContext().getColor(android.R.color.black); + } else { + targetColor = mView.getContext().getColor(android.R.color.white); + } + + if (targetColor == mCurrentTextColor) { + return; + } + + Toolbar toolbar = mView.findViewById(R.id.toolbar); + ImageButton button = (ImageButton) toolbar.getNavigationView(); + + ValueAnimator colorAnimator = ValueAnimator.ofArgb(mCurrentTextColor, targetColor); + colorAnimator.addUpdateListener(animation -> { + int color = (int) animation.getAnimatedValue(); + textView.setTextColor(color); + button.setColorFilter(color); + }); + colorAnimator.start(); + + mCurrentTextColor = targetColor; + } + + /** + * Animates the layout to or from fullscreen. + * + * @param toFullScreen {@code true} if animating into the full screen layout; + * {@code false} if animating out of the full screen layout. + */ + public void startAnimation(boolean toFullScreen) { + // If there is no need to animate, return. + if (toFullScreen == mIsFullScreen) { + return; + } + + // If the scale is not set, compute the location and size of frame layout. + if (!mScaleIsSet) { + int[] loc = new int[2]; + mTouchForwardingLayout.getLocationInWindow(loc); + + ScreenSizeCalculator screenSizeCalculator = ScreenSizeCalculator.getInstance(); + Point screenSize = screenSizeCalculator.getScreenSize(mView.getDisplay()); + int screenWidth = screenSize.x; + int screenHeight = screenSize.y; + + mOffsetY = (float) (screenHeight / 2.0 + - (loc[1] + mTouchForwardingLayout.getHeight() / 2.0)); + + mScale = Math.max( + screenWidth / (float) mTouchForwardingLayout.getWidth(), + screenHeight / (float) mTouchForwardingLayout.getHeight()); + + mDefaultRadius = ((CardView) mWorkspaceSurface.getParent()).getRadius(); + + mWorkspaceSurface.setEnableSurfaceClipping(true); + + mWorkspaceWidth = mWorkspaceSurface.getWidth(); + mWorkspaceHeight = mWorkspaceSurface.getHeight(); + + mBottomActionBarTranslation = getNavigationBarHeight() + + mView.getResources().getDimension(R.dimen.bottom_actions_height) + + mView.getResources().getDimension(R.dimen.pill_tabs_height); + + mPillButtonsTranslation = -( + mView.getResources() + .getDimension(R.dimen.fullscreen_preview_button_margin_bottom) + + mView.getResources().getDimension(R.dimen.pill_tabs_height)); + + mScaleIsSet = true; + } + + // Perform animations. + + // Rounding animation. + // Animated version of ((CardView) mWorkspaceSurface.getParent()).setRadius(0); + float fromRadius = toFullScreen ? mDefaultRadius : 0f; + float toRadius = toFullScreen ? 0f : mDefaultRadius; + + ValueAnimator animationRounding = ValueAnimator.ofFloat(fromRadius, toRadius); + animationRounding.addUpdateListener(animation -> { + ((CardView) mWorkspaceSurface.getParent()).setRadius( + (float) animation.getAnimatedValue()); + }); + + // Animation to hide some of the home screen icons. + float fromTop = toFullScreen ? 0f : HIDE_ICONS_TOP_RATIO; + float toTop = toFullScreen ? HIDE_ICONS_TOP_RATIO : 0f; + float fromBottom = toFullScreen ? 1f : HIDE_ICONS_BOTTOM_RATIO; + float toBottom = toFullScreen ? HIDE_ICONS_BOTTOM_RATIO : 1f; + + ValueAnimator animationHide = ValueAnimator.ofFloat(0f, 1f); + animationHide.addUpdateListener(animation -> { + float t = (float) animation.getAnimatedValue(); + float top = fromTop + t * (toTop - fromTop); + float bottom = fromBottom + t * (toBottom - fromBottom); + mWorkspaceSurface.setClipBounds(new Rect( + 0, + Math.round(mWorkspaceHeight * top), + mWorkspaceWidth, + Math.round(mWorkspaceHeight * bottom))); + }); + + // Other animations. + float scale = toFullScreen ? mScale : 1f; + float offsetY = toFullScreen ? mOffsetY : 0f; + float bottomActionBarTranslation = toFullScreen ? mBottomActionBarTranslation : 0; + float pillButtonsTranslation = toFullScreen ? mPillButtonsTranslation : 0; + View frameLayout = mView.findViewById(R.id.screen_preview_layout); + + AnimatorSet animatorSet = new AnimatorSet(); + animatorSet.playTogether( + ObjectAnimator.ofFloat(frameLayout, "scaleX", scale), + ObjectAnimator.ofFloat(frameLayout, "scaleY", scale), + ObjectAnimator.ofFloat(frameLayout, "translationY", offsetY), + ObjectAnimator.ofFloat(mView.findViewById(R.id.bottom_actionbar), + "translationY", bottomActionBarTranslation), + ObjectAnimator.ofFloat(mView.findViewById(R.id.pill_tabs_container), + "translationY", bottomActionBarTranslation), + ObjectAnimator.ofFloat(mView.findViewById(R.id.fullscreen_buttons), + "translationY", pillButtonsTranslation), + animationRounding, + animationHide + ); + animatorSet.start(); + + animateColor(toFullScreen); + + // Changes appearances of some elements. + mWorkspaceVisibility = true; + + if (toFullScreen) { + ((Button) mView.findViewById(R.id.hide_ui_preview_button)).setText( + R.string.hide_ui_preview_text + ); + } + + mView.findViewById(R.id.lock_screen_preview_container).setVisibility(View.VISIBLE); + if (mIsHomeSelected) { + mView.findViewById(R.id.lock_screen_preview_container) + .setVisibility(View.INVISIBLE); + } + + mIsFullScreen = toFullScreen; + } +} -- cgit v1.2.3 From b571009da3048cdfceb3d1b823f52d675f589c15 Mon Sep 17 00:00:00 2001 From: Ching Sung Li Date: Thu, 13 May 2021 15:55:43 +0000 Subject: Revert "Explicitly detach from wallpaper service when disconnecting" This reverts commit 17b2a26cd8587395f799bfb028684cb2b658b124. Reason for revert: b/187135510#comment8 Bug: b/187135510 Change-Id: I0482afcbe44a28731aa6a8b1a8aa9bfab72ca6ae --- src/com/android/wallpaper/util/WallpaperConnection.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/com/android/wallpaper/util/WallpaperConnection.java b/src/com/android/wallpaper/util/WallpaperConnection.java index 5a37333..36bd49d 100644 --- a/src/com/android/wallpaper/util/WallpaperConnection.java +++ b/src/com/android/wallpaper/util/WallpaperConnection.java @@ -141,9 +141,8 @@ public class WallpaperConnection extends IWallpaperConnection.Stub implements Se mEngine = null; } try { - mService.detach(); mContext.unbindService(this); - } catch (IllegalArgumentException | RemoteException e) { + } catch (IllegalArgumentException e) { Log.i(TAG, "Can't unbind wallpaper service. " + "It might have crashed, just ignoring."); } -- cgit v1.2.3 From 9fe9368794239108f467835d158f6cd065abc85c Mon Sep 17 00:00:00 2001 From: Chihhang Chuang Date: Fri, 14 May 2021 22:08:37 +0800 Subject: Fix wallpaper full preview UI broken at 3-button navigation mode Before: https://screenshot.googleplex.com/4XtQusQ2rSEAmda.png After: https://screenshot.googleplex.com/44xgTycCawmnHFB.png Gesture navigation: https://screenshot.googleplex.com/9SERRcgXaT6Yoza.png Fixes: 188173389 Test: Manually Change-Id: Iaa63862e0e10e2f41b3db55b1f59be3bc47b3a4c --- src/com/android/wallpaper/util/FullScreenAnimation.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/com/android/wallpaper/util/FullScreenAnimation.java b/src/com/android/wallpaper/util/FullScreenAnimation.java index 587464e..4144da5 100644 --- a/src/com/android/wallpaper/util/FullScreenAnimation.java +++ b/src/com/android/wallpaper/util/FullScreenAnimation.java @@ -65,7 +65,7 @@ public class FullScreenAnimation { private int mNavigationBarHeight; private static final float HIDE_ICONS_TOP_RATIO = 0.25f; - private static final float HIDE_ICONS_BOTTOM_RATIO = 0.875f; + private static final float HIDE_ICONS_BOTTOM_RATIO = 0.85f; private boolean mIsHomeSelected = true; @@ -360,9 +360,9 @@ public class FullScreenAnimation { + mView.getResources().getDimension(R.dimen.bottom_actions_height) + mView.getResources().getDimension(R.dimen.pill_tabs_height); - mPillButtonsTranslation = -( - mView.getResources() - .getDimension(R.dimen.fullscreen_preview_button_margin_bottom) + mPillButtonsTranslation = -(getNavigationBarHeight() + + mView.getResources().getDimension( + R.dimen.fullscreen_preview_button_margin_bottom) + mView.getResources().getDimension(R.dimen.pill_tabs_height)); mScaleIsSet = true; -- cgit v1.2.3 From 9c1d4e4e7b2b48c4b3770d9d39cf2cfbf01510ff Mon Sep 17 00:00:00 2001 From: Chihhang Chuang Date: Fri, 14 May 2021 23:53:16 +0800 Subject: Fix wallpaper preview crashes - Launch from picker home page. - Launch from Photos. Fixes: 188147553 Test: Manually Change-Id: I64ccb33b574ccd0b5d48c0eef672bcbb4308d20e --- .../android/wallpaper/picker/ImagePreviewFragment.java | 5 +++++ src/com/android/wallpaper/util/FullScreenAnimation.java | 16 ++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/com/android/wallpaper/picker/ImagePreviewFragment.java b/src/com/android/wallpaper/picker/ImagePreviewFragment.java index 5088608..0795811 100755 --- a/src/com/android/wallpaper/picker/ImagePreviewFragment.java +++ b/src/com/android/wallpaper/picker/ImagePreviewFragment.java @@ -305,6 +305,10 @@ public class ImagePreviewFragment extends PreviewFragment { * initializing a zoom-scroll observer and click listener. */ private void initFullResView() { + if (mRawWallpaperSize == null || mFullResImageView == null) { + return; + } + // Minimum scale will only be respected under this scale type. mFullResImageView.setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_CUSTOM); // When we set a minimum scale bigger than the scale with which the full image is shown, @@ -539,6 +543,7 @@ public class ImagePreviewFragment extends PreviewFragment { R.layout.fullscreen_wallpaper_preview, null); mFullResImageView = wallpaperPreviewContainer.findViewById(R.id.full_res_image); mLowResImageView = wallpaperPreviewContainer.findViewById(R.id.low_res_image); + initFullResView(); // Scale the mWallpaperSurface based on system zoom's scale so that the wallpaper is // rendered in a larger surface than what preview shows, simulating the behavior of // the actual wallpaper surface. diff --git a/src/com/android/wallpaper/util/FullScreenAnimation.java b/src/com/android/wallpaper/util/FullScreenAnimation.java index 587464e..da86636 100644 --- a/src/com/android/wallpaper/util/FullScreenAnimation.java +++ b/src/com/android/wallpaper/util/FullScreenAnimation.java @@ -228,11 +228,15 @@ public class FullScreenAnimation { */ public void ensureToolbarIsCorrectlyColored() { TextView textView = mView.findViewById(R.id.custom_toolbar_title); + textView.setTextColor(mCurrentTextColor); + Toolbar toolbar = mView.findViewById(R.id.toolbar); + // It may be null because there's no back arrow in some cases. For example: no back arrow + // for Photos launching case. ImageButton button = (ImageButton) toolbar.getNavigationView(); - - textView.setTextColor(mCurrentTextColor); - button.setColorFilter(mCurrentTextColor); + if (button != null) { + button.setColorFilter(mCurrentTextColor); + } } /** @@ -313,7 +317,11 @@ public class FullScreenAnimation { colorAnimator.addUpdateListener(animation -> { int color = (int) animation.getAnimatedValue(); textView.setTextColor(color); - button.setColorFilter(color); + // It may be null because there's no back arrow in some cases. For example: no back + // arrow for Photos launching case. + if (button != null) { + button.setColorFilter(color); + } }); colorAnimator.start(); -- cgit v1.2.3 From 60a5bc2e8115c9662ed989cfe9eecce5f073a67b Mon Sep 17 00:00:00 2001 From: Chihhang Chuang Date: Fri, 14 May 2021 23:00:01 +0800 Subject: Enable image wallpaper scaling by default So user can scale image wallpaper on the both mid-size and full preview card, even can scale while animating. Video: https://drive.google.com/file/d/1QuvwfufeD3NNe6aPVAQub-IkKCgYQ80X/view?usp=sharing Fixes: 188178976 Test: Maunally Change-Id: I5ad44212b4e0fc51c2d0ec20d013f5680c0a020b --- src/com/android/wallpaper/picker/ImagePreviewFragment.java | 8 +------- src/com/android/wallpaper/picker/PreviewFragment.java | 10 +++------- 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/src/com/android/wallpaper/picker/ImagePreviewFragment.java b/src/com/android/wallpaper/picker/ImagePreviewFragment.java index 5088608..742bf59 100755 --- a/src/com/android/wallpaper/picker/ImagePreviewFragment.java +++ b/src/com/android/wallpaper/picker/ImagePreviewFragment.java @@ -140,6 +140,7 @@ public class ImagePreviewFragment extends PreviewFragment { mLoadingProgressBar.hide(); mContainer = view.findViewById(R.id.container); mTouchForwardingLayout = mContainer.findViewById(R.id.touch_forwarding_layout); + mTouchForwardingLayout.setForwardingEnabled(true); // Set aspect ratio on the preview card dynamically. ConstraintSet set = new ConstraintSet(); @@ -263,7 +264,6 @@ public class ImagePreviewFragment extends PreviewFragment { } }); - // Will trigger onActionSelected callback to update the editing state. mBottomActionBar.show(); // Loads wallpaper info and populate into view. setUpExploreIntentAndLabel(this::populateWallpaperInfo); @@ -597,12 +597,6 @@ public class ImagePreviewFragment extends PreviewFragment { mHost = null; } } - }; - - @Override - protected void setFullScreen(boolean fullScreen) { - super.setFullScreen(fullScreen); - mTouchForwardingLayout.setForwardingEnabled(fullScreen); } private void updateScreenPreview(boolean isHomeSelected) { diff --git a/src/com/android/wallpaper/picker/PreviewFragment.java b/src/com/android/wallpaper/picker/PreviewFragment.java index f0726da..817a258 100755 --- a/src/com/android/wallpaper/picker/PreviewFragment.java +++ b/src/com/android/wallpaper/picker/PreviewFragment.java @@ -236,9 +236,9 @@ public abstract class PreviewFragment extends AppbarFragment implements setBottomActionBarAndToolbarActions(); } - protected void setBottomActionBarAndToolbarActions() { + private void setBottomActionBarAndToolbarActions() { mBottomActionBar.setActionClickListener(EDIT, (view) -> { - setFullScreen(true); + mFullScreenAnimation.startAnimation(/* toFullScreen= */ true); mBottomActionBar.deselectAction(EDIT); }); @@ -261,7 +261,7 @@ public abstract class PreviewFragment extends AppbarFragment implements @Override public void handleOnBackPressed() { if (mFullScreenAnimation.isFullScreen()) { - setFullScreen(false); + mFullScreenAnimation.startAnimation(/* toFullScreen= */ false); } else { getActivity().finish(); } @@ -460,8 +460,4 @@ public abstract class PreviewFragment extends AppbarFragment implements return getResources().getConfiguration().getLayoutDirection() == View.LAYOUT_DIRECTION_RTL; } - - protected void setFullScreen(boolean fullScreen) { - mFullScreenAnimation.startAnimation(fullScreen); - } } -- cgit v1.2.3 From 530fc699489247bab8b6c7c2ab2ab4d154c9f15a Mon Sep 17 00:00:00 2001 From: Chihhang Chuang Date: Sat, 15 May 2021 14:19:36 +0800 Subject: Fix bottom sheet collapse issue Before: https://drive.google.com/file/d/1LKcgPCsB-KAaFstIxAzSuVw5ZFoN6ozX/view?usp=sharing After: https://drive.google.com/file/d/1geIumCsipuD2rCvgKKP_RbnhNwGLkZlo/view?usp=sharing Fixes: 188254465 Test: Manually Change-Id: I20c6241e37deae4b9a6d7bb9b07f3db58ae4e82c --- src/com/android/wallpaper/picker/PreviewFragment.java | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/src/com/android/wallpaper/picker/PreviewFragment.java b/src/com/android/wallpaper/picker/PreviewFragment.java index 817a258..9a09264 100755 --- a/src/com/android/wallpaper/picker/PreviewFragment.java +++ b/src/com/android/wallpaper/picker/PreviewFragment.java @@ -24,7 +24,6 @@ import android.content.Intent; import android.content.res.ColorStateList; import android.content.res.Resources.NotFoundException; import android.content.res.TypedArray; -import android.graphics.Insets; import android.os.Bundle; import android.util.Log; import android.view.ContextThemeWrapper; @@ -32,7 +31,6 @@ import android.view.LayoutInflater; import android.view.SurfaceView; import android.view.View; import android.view.ViewGroup; -import android.view.WindowInsets; import android.widget.Button; import android.widget.Toast; @@ -46,7 +44,6 @@ import androidx.core.widget.ContentLoadingProgressBar; import androidx.fragment.app.FragmentActivity; import com.android.wallpaper.R; -import com.android.wallpaper.compat.BuildCompat; import com.android.wallpaper.model.LiveWallpaperInfo; import com.android.wallpaper.model.WallpaperInfo; import com.android.wallpaper.module.Injector; @@ -207,21 +204,7 @@ public abstract class PreviewFragment extends AppbarFragment implements mFullScreenAnimation.setWindowInsets(windowInsets); mFullScreenAnimation.placeViews(); - - // Consume only the top inset (status bar), to let other content in the Activity - // consume the nav bar (ie, by using "fitSystemWindows") - return BuildCompat.isAtLeastQ() - ? new WindowInsets.Builder(windowInsets).setSystemWindowInsets( - Insets.of( - windowInsets.getSystemWindowInsetLeft(), - /* top= */ 0, - windowInsets.getStableInsetRight(), - 0)).build() - : windowInsets.replaceSystemWindowInsets( - windowInsets.getSystemWindowInsetLeft(), - /* top= */ 0, - windowInsets.getStableInsetRight(), - 0); + return windowInsets.consumeSystemWindowInsets(); } ); -- cgit v1.2.3 From 1e8becee2e23da236899cb7c1a4b70578eb34681 Mon Sep 17 00:00:00 2001 From: Chihhang Chuang Date: Mon, 17 May 2021 15:08:06 +0800 Subject: Collapse bottom sheet when touch static wallpaper preview To align with the behavior of live wallpapaer preview. Video: https://drive.google.com/file/d/1EeoXetOKSlS8AwIpFN6ZvE5ug6DVSKwi/view?usp=sharing Also improve the bottom action buttons behavior for live wallpaper preview. Fixes: 188375325 Test: Manually Change-Id: Id2866de8e5b37cd43891fa261e84b08699d2163f --- .../android/wallpaper/picker/ImagePreviewFragment.java | 16 ++++++++++++++++ .../android/wallpaper/picker/LivePreviewFragment.java | 10 ++++++++++ src/com/android/wallpaper/widget/BottomActionBar.java | 14 ++++++++++++++ 3 files changed, 40 insertions(+) diff --git a/src/com/android/wallpaper/picker/ImagePreviewFragment.java b/src/com/android/wallpaper/picker/ImagePreviewFragment.java index d04bd3c..089c93b 100755 --- a/src/com/android/wallpaper/picker/ImagePreviewFragment.java +++ b/src/com/android/wallpaper/picker/ImagePreviewFragment.java @@ -201,6 +201,9 @@ public class ImagePreviewFragment extends PreviewFragment { } protected void onWallpaperColorsChanged(@Nullable WallpaperColors colors) { + // Make it enabled since the buttons are disabled while wallpaper is moving. + mBottomActionBar.enableActionButtonsWithBottomSheet(true); + mLockScreenPreviewer.setColor(colors); mFullScreenAnimation.setFullScreenTextColor( @@ -356,6 +359,9 @@ public class ImagePreviewFragment extends PreviewFragment { @Override public void onCenterChanged(PointF newCenter, int origin) { super.onCenterChanged(newCenter, origin); + // Disallow bottom sheet to popup when wallpaper is moving + // by user dragging. + mBottomActionBar.enableActionButtonsWithBottomSheet(false); mImageScaleChangeCounter.incrementAndGet(); mFullResImageView.postDelayed(() -> { if (mImageScaleChangeCounter.decrementAndGet() == 0) { @@ -368,6 +374,16 @@ public class ImagePreviewFragment extends PreviewFragment { } getActivity().invalidateOptionsMenu(); }); + + mFullResImageView.setOnTouchListener((v, ev) -> { + // Consume the touch event for collapsing bottom sheet while it is expanded or + // dragging (not collapsed). + if (mBottomActionBar != null && !mBottomActionBar.isBottomSheetCollapsed()) { + mBottomActionBar.collapseBottomSheetIfExpanded(); + return true; + } + return false; + }); } private void recalculateColors() { diff --git a/src/com/android/wallpaper/picker/LivePreviewFragment.java b/src/com/android/wallpaper/picker/LivePreviewFragment.java index 859dc2a..84ad2df 100644 --- a/src/com/android/wallpaper/picker/LivePreviewFragment.java +++ b/src/com/android/wallpaper/picker/LivePreviewFragment.java @@ -427,6 +427,12 @@ public class LivePreviewFragment extends PreviewFragment implements showDeleteConfirmDialog()); } mBottomActionBar.show(); + // Action buttons are disabled when live wallpaper is not loaded. + mBottomActionBar.disableActions(); + // Enable buttons if loaded, or wait for it. + if (isLoaded()) { + mBottomActionBar.enableActions(); + } } @Override @@ -460,6 +466,10 @@ public class LivePreviewFragment extends PreviewFragment implements .setUpdateListener(value -> placeholder.setAlpha( (int) (255 * (1 - value.getAnimatedFraction())))) .start(); + + if (mBottomActionBar != null) { + mBottomActionBar.enableActions(); + } } @Override diff --git a/src/com/android/wallpaper/widget/BottomActionBar.java b/src/com/android/wallpaper/widget/BottomActionBar.java index d11af88..3a89525 100644 --- a/src/com/android/wallpaper/widget/BottomActionBar.java +++ b/src/com/android/wallpaper/widget/BottomActionBar.java @@ -207,6 +207,15 @@ public class BottomActionBar extends FrameLayout { hideBottomSheetAndDeselectButtonIfExpanded(); } + /** Enables or disables action buttons that show the bottom sheet. */ + public void enableActionButtonsWithBottomSheet(boolean enabled) { + if (enabled) { + enableActions(mContentViewMap.keySet().toArray(new BottomAction[0])); + } else { + disableActions(mContentViewMap.keySet().toArray(new BottomAction[0])); + } + } + /** * Sets a click listener to a specific action. * @@ -434,6 +443,11 @@ public class BottomActionBar extends FrameLayout { return mActionMap.get(action).isSelected(); } + /** Returns {@code true} if the state of bottom sheet is collapsed. */ + public boolean isBottomSheetCollapsed() { + return mBottomSheetBehavior.getState() == STATE_COLLAPSED; + } + /** Resets {@link BottomActionBar} to initial state. */ public void reset() { // Not visible by default, see res/layout/bottom_action_bar.xml -- cgit v1.2.3 From f4e2f8fce542ed2d9b52184138b6292916ed7740 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Mon, 17 May 2021 10:44:22 +0000 Subject: Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I18f2d896996d1688ce4fa7aa6113489878032e11 --- res/values-af/strings.xml | 4 ++++ res/values-am/strings.xml | 4 ++++ res/values-ar/strings.xml | 4 ++++ res/values-as/strings.xml | 4 ++++ res/values-az/strings.xml | 4 ++++ res/values-b+sr+Latn/strings.xml | 4 ++++ res/values-be/strings.xml | 4 ++++ res/values-bg/strings.xml | 2 ++ res/values-bn/strings.xml | 4 ++++ res/values-bs/strings.xml | 4 ++++ res/values-ca/strings.xml | 4 ++++ res/values-cs/strings.xml | 4 ++++ res/values-da/strings.xml | 4 ++++ res/values-de/strings.xml | 4 ++++ res/values-el/strings.xml | 4 ++++ res/values-en-rAU/strings.xml | 4 ++++ res/values-en-rCA/strings.xml | 4 ++++ res/values-en-rGB/strings.xml | 4 ++++ res/values-en-rIN/strings.xml | 4 ++++ res/values-en-rXC/strings.xml | 2 ++ res/values-es-rUS/strings.xml | 4 ++++ res/values-es/strings.xml | 4 ++++ res/values-et/strings.xml | 4 ++++ res/values-eu/strings.xml | 4 ++++ res/values-fa/strings.xml | 4 ++++ res/values-fi/strings.xml | 4 ++++ res/values-fr-rCA/strings.xml | 4 ++++ res/values-fr/strings.xml | 4 ++++ res/values-gl/strings.xml | 4 ++++ res/values-gu/strings.xml | 4 ++++ res/values-hi/strings.xml | 4 ++++ res/values-hr/strings.xml | 4 ++++ res/values-hu/strings.xml | 4 ++++ res/values-hy/strings.xml | 4 ++++ res/values-in/strings.xml | 4 ++++ res/values-is/strings.xml | 4 ++++ res/values-it/strings.xml | 4 ++++ res/values-iw/strings.xml | 4 ++++ res/values-ja/strings.xml | 2 ++ res/values-ka/strings.xml | 4 ++++ res/values-kk/strings.xml | 4 ++++ res/values-km/strings.xml | 4 ++++ res/values-kn/strings.xml | 4 ++++ res/values-ko/strings.xml | 4 ++++ res/values-ky/strings.xml | 4 ++++ res/values-lo/strings.xml | 4 ++++ res/values-lt/strings.xml | 4 ++++ res/values-lv/strings.xml | 4 ++++ res/values-mk/strings.xml | 4 ++++ res/values-ml/strings.xml | 4 ++++ res/values-mn/strings.xml | 2 ++ res/values-mr/strings.xml | 4 ++++ res/values-ms/strings.xml | 4 ++++ res/values-my/strings.xml | 4 ++++ res/values-nb/strings.xml | 4 ++++ res/values-ne/strings.xml | 4 ++++ res/values-nl/strings.xml | 2 ++ res/values-or/strings.xml | 4 ++++ res/values-pa/strings.xml | 4 ++++ res/values-pl/strings.xml | 4 ++++ res/values-pt-rPT/strings.xml | 4 ++++ res/values-pt/strings.xml | 4 ++++ res/values-ro/strings.xml | 4 ++++ res/values-ru/strings.xml | 4 ++++ res/values-si/strings.xml | 4 ++++ res/values-sk/strings.xml | 4 ++++ res/values-sl/strings.xml | 4 ++++ res/values-sq/strings.xml | 4 ++++ res/values-sr/strings.xml | 4 ++++ res/values-sv/strings.xml | 4 ++++ res/values-sw/strings.xml | 4 ++++ res/values-ta/strings.xml | 4 ++++ res/values-te/strings.xml | 4 ++++ res/values-th/strings.xml | 4 ++++ res/values-tl/strings.xml | 4 ++++ res/values-tr/strings.xml | 4 ++++ res/values-uk/strings.xml | 4 ++++ res/values-ur/strings.xml | 4 ++++ res/values-uz/strings.xml | 4 ++++ res/values-vi/strings.xml | 4 ++++ res/values-zh-rCN/strings.xml | 4 ++++ res/values-zh-rHK/strings.xml | 4 ++++ res/values-zh-rTW/strings.xml | 4 ++++ res/values-zu/strings.xml | 4 ++++ 84 files changed, 326 insertions(+) diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index 37c70df..cb94c4c 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -94,4 +94,8 @@ "Muurpapier" "Muurpapiervoorskou" "Die versameling bestaan nie" + + + + diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index 11c6662..4f5067c 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -94,4 +94,8 @@ "ልጣፍ" "የልጣፍ ቅድመ-እይታ" "ስብስቡ የለም" + + + + diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 10b0666..89be95a 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -94,4 +94,8 @@ "الخلفية" "معاينة عرض الشرائح" "المجموعة غير متوفرة." + + + + diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml index ba49311..14c3080 100644 --- a/res/values-as/strings.xml +++ b/res/values-as/strings.xml @@ -94,4 +94,8 @@ "ৱালপেপাৰ" "ৱালপেপাৰৰ পূৰ্বদৰ্শন" "এই সংগ্ৰহটোৰ অস্তিত্ব নাই" + + + + diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml index 4e334f6..400494d 100644 --- a/res/values-az/strings.xml +++ b/res/values-az/strings.xml @@ -94,4 +94,8 @@ "Divar kağızı" "Divar Kağızı önizləməsi" "Kolleksiya mövcud deyil" + + + + diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml index ed43ea2..ab82cd8 100644 --- a/res/values-b+sr+Latn/strings.xml +++ b/res/values-b+sr+Latn/strings.xml @@ -94,4 +94,8 @@ "Pozadina" "Pregled pozadine" "Kolekcija ne postoji" + + + + diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index e218462..2c6ccfc 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -94,4 +94,8 @@ "Шпалеры" "Перадпрагляд шпалер" "Калекцыя не існуе" + + + + diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index 1e087e5..9bdb277 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -94,4 +94,6 @@ "Тапет" "Визуализация на тапета" "Колекцията не съществува" + "Скриване на визуал. на ПИ" + "Показване на визуал. на ПИ" diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml index c0fd9b6..79b16ae 100644 --- a/res/values-bn/strings.xml +++ b/res/values-bn/strings.xml @@ -94,4 +94,8 @@ "ওয়ালপেপার" "ওয়ালপেপার প্রিভিউ করুন" "কালেকশন উপলভ্য নেই" + + + + diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml index 5d8ff9f..ed0694a 100644 --- a/res/values-bs/strings.xml +++ b/res/values-bs/strings.xml @@ -94,4 +94,8 @@ "Pozadinska slika" "Pregled pozadinske slike" "Kolekcija ne postoji" + + + + diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index 5c1139a..96b78f9 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -94,4 +94,8 @@ "Fons de pantalla" "Previsualitz. fons de pantalla" "La col·lecció no existeix" + + + + diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index 81e606f..cc7b7bb 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -94,4 +94,8 @@ "Tapeta" "Náhled prezentace" "Sbírka neexistuje" + + + + diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 0efbc9b..3175c0b 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -94,4 +94,8 @@ "Baggrund" "Forhåndsvisning af baggrund" "Samlingen eksisterer ikke" + + + + diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 4bdd8f2..f4bf3fd 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -94,4 +94,8 @@ "Hintergrund" "Hintergrundvorschau" "Die Sammlung existiert nicht" + + + + diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index cf1df9e..9ff88c4 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -94,4 +94,8 @@ "Ταπετσαρία" "Προεπισκόπηση ταπετσαρίας" "Η συλλογή δεν υπάρχει." + + + + diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml index d96b025..5b4d8a0 100644 --- a/res/values-en-rAU/strings.xml +++ b/res/values-en-rAU/strings.xml @@ -94,4 +94,8 @@ "Wallpaper" "Wallpaper preview" "The collection doesn\'t exist" + + + + diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml index d96b025..5b4d8a0 100644 --- a/res/values-en-rCA/strings.xml +++ b/res/values-en-rCA/strings.xml @@ -94,4 +94,8 @@ "Wallpaper" "Wallpaper preview" "The collection doesn\'t exist" + + + + diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index d96b025..5b4d8a0 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -94,4 +94,8 @@ "Wallpaper" "Wallpaper preview" "The collection doesn\'t exist" + + + + diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml index d96b025..5b4d8a0 100644 --- a/res/values-en-rIN/strings.xml +++ b/res/values-en-rIN/strings.xml @@ -94,4 +94,8 @@ "Wallpaper" "Wallpaper preview" "The collection doesn\'t exist" + + + + diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml index 961db68..ff487a5 100644 --- a/res/values-en-rXC/strings.xml +++ b/res/values-en-rXC/strings.xml @@ -94,4 +94,6 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‏‏‏‎‏‏‏‏‎‎‏‎‏‎‎‏‏‏‎‏‏‏‏‏‎‏‎‏‏‎‏‏‏‏‎‎‏‎‏‎‎‏‎‎‏‎‎‏‎‏‎‏‎‎‎Wallpaper‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‏‏‏‎‎‏‏‎‏‎‎‏‎‏‎‏‏‎‏‏‏‎‎‎‎‎‏‎‎‎‏‏‏‎‏‎‎‏‏‎‏‏‎‎‎‏‎‎‏‎‏‏‎‎‎‎Wallpaper preview‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‎‏‏‎‎‎‎‏‎‏‎‎‎‏‏‏‎‏‏‏‏‎‏‎‎‏‏‎‎‏‏‎‏‎‎‎‎‏‎‏‎‏‏‏‏‎‏‎‏‎‏‏‎‎‎‏‎‎‎‏‎‏‎‎The collection doesn\'t exist‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‏‏‏‎‎‏‎‏‏‏‏‎‏‏‏‎‏‎‏‏‎‏‏‎‎‏‏‎‏‏‏‏‎‎‏‏‎‏‎‏‎‎‏‎‏‎‏‏‎‏‎‎‎‏‏‏‎Hide UI Preview‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‎‏‎‏‎‏‏‏‎‏‎‎‎‏‏‎‎‎‏‏‎‏‎‎‏‎‎‎‏‏‏‏‏‏‎‎‎‏‎‎‏‎‏‏‎‏‎‏‏‎‏‎‏‏‎‎Show UI Preview‎‏‎‎‏‎" diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index 249a162..fa6263e 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -94,4 +94,8 @@ "Fondo de pantalla" "Vista previa del fondo" "La colección no existe" + + + + diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 3eabae8..567cb60 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -94,4 +94,8 @@ "Fondo de pantalla" "Vista previa de fondo" "La colección no existe" + + + + diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml index 012ce9d..1e58bda 100644 --- a/res/values-et/strings.xml +++ b/res/values-et/strings.xml @@ -94,4 +94,8 @@ "Taustapilt" "Taustapildi eelvaade" "Kogu pole olemas" + + + + diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index f3349af..cedc61e 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -94,4 +94,8 @@ "Horma-papera" "Horma-paperaren aurrebista" "Ez dago bildumarik" + + + + diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index b995635..a75c4bf 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -94,4 +94,8 @@ "کاغذدیواری" "پیش‌نمای کاغذدیواری" "مجموعه وجود ندارد" + + + + diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index 4d9c0a0..27023c3 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -94,4 +94,8 @@ "Taustakuva" "Taustakuvan esikatselu" "Kyseistä kokoelmaa ei ole olemassa" + + + + diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml index 576714c..e572045 100644 --- a/res/values-fr-rCA/strings.xml +++ b/res/values-fr-rCA/strings.xml @@ -94,4 +94,8 @@ "Fond d\'écran" "Aperçu du fond d\'écran" "La collection n\'existe pas" + + + + diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index ffe0f76..b57b108 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -94,4 +94,8 @@ "Fond d\'écran" "Aperçu du fond d\'écran" "Cette collection n\'existe pas" + + + + diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml index 2600075..885b098 100644 --- a/res/values-gl/strings.xml +++ b/res/values-gl/strings.xml @@ -94,4 +94,8 @@ "Fondo de pantalla" "Vista previa do fondo" "A colección non existe" + + + + diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml index 491df07..8035baa 100644 --- a/res/values-gu/strings.xml +++ b/res/values-gu/strings.xml @@ -94,4 +94,8 @@ "વૉલપેપર" "વૉલપેપરનો પ્રીવ્યૂ કરો" "સંગ્રહ અસ્તિત્વમાં નથી" + + + + diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index 6c0f15a..e781b61 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -94,4 +94,8 @@ "वॉलपेपर" "वॉलपेपर की झलक देखें" "वॉलपेपर का संग्रह मौजूद नहीं है" + + + + diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index ea8ff24..b1a2dcb 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -94,4 +94,8 @@ "Pozadina" "Pregled pozadine" "Zbirka ne postoji" + + + + diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index 742efba..bb1e7c3 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -94,4 +94,8 @@ "Háttérkép" "Háttérkép előnézete" "Nincs ilyen gyűjtemény" + + + + diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml index e3d2a07..cc73cf0 100644 --- a/res/values-hy/strings.xml +++ b/res/values-hy/strings.xml @@ -94,4 +94,8 @@ "Պաստառ" "Պաստառի նախադիտում" "Հավաքածուն գոյություն չունի" + + + + diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index 70150cb..7d12efb 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -94,4 +94,8 @@ "Wallpaper" "Pratinjau wallpaper" "Koleksi tidak ada" + + + + diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml index 04031ef..204bb07 100644 --- a/res/values-is/strings.xml +++ b/res/values-is/strings.xml @@ -94,4 +94,8 @@ "Veggfóður" "Forskoðun veggfóðurs" "Safnið er ekki til" + + + + diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 8b5ce43..ecb8e12 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -94,4 +94,8 @@ "Sfondo" "Anteprima sfondo" "La raccolta non esiste" + + + + diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index d5d97e5..72235b0 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -94,4 +94,8 @@ "טפט" "תצוגה מקדימה של הטפט" "האוסף לא קיים" + + + + diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index a73f2ee..9d884b4 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -94,4 +94,6 @@ "壁紙" "壁紙のプレビュー" "コレクションは存在しません" + "UI プレビューを非表示" + "UI プレビューを表示" diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml index 09cf8ce..c406210 100644 --- a/res/values-ka/strings.xml +++ b/res/values-ka/strings.xml @@ -94,4 +94,8 @@ "ფონი" "ფონის გადახედვა" "კოლექცია არ არსებობს" + + + + diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml index 2e8e6dc..dc0b50b 100644 --- a/res/values-kk/strings.xml +++ b/res/values-kk/strings.xml @@ -94,4 +94,8 @@ "Тұсқағаз" "Тұсқағазды алдын ала қарау" "Жинақ жоқ." + + + + diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml index aac84ab..0515579 100644 --- a/res/values-km/strings.xml +++ b/res/values-km/strings.xml @@ -94,4 +94,8 @@ "ផ្ទាំងរូបភាព" "ការមើលផ្ទាំង​រូបភាពសាកល្បង" "បណ្ដុំមិនមានទេ" + + + + diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml index d247d76..05ac23a 100644 --- a/res/values-kn/strings.xml +++ b/res/values-kn/strings.xml @@ -94,4 +94,8 @@ "ವಾಲ್‌ಪೇಪರ್‌" "ವಾಲ್‌ಪೇಪರ್ ಪೂರ್ವವೀಕ್ಷಣೆ" "ಸಂಗ್ರಹಣೆ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ" + + + + diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 8650033..0819f7c 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -94,4 +94,8 @@ "배경화면" "배경화면 미리보기" "컬렉션이 없습니다." + + + + diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml index 060bf09..6b27022 100644 --- a/res/values-ky/strings.xml +++ b/res/values-ky/strings.xml @@ -94,4 +94,8 @@ "Тушкагаз" "Тушкагазды алдын ала көрүү" "Мындай жыйнак жок" + + + + diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml index 1d885fa..73b3c8f 100644 --- a/res/values-lo/strings.xml +++ b/res/values-lo/strings.xml @@ -94,4 +94,8 @@ "ຮູບພື້ນຫຼັງ" "ຕົວຢ່າງຮູບພື້ນຫຼັງ" "ບໍ່ມິຄໍເລັກຊັນ" + + + + diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index def2202..8616425 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -94,4 +94,8 @@ "Ekrano fonas" "Ekrano fono peržiūra" "Rinkinio nėra" + + + + diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index 16dab29..bea8ef9 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -94,4 +94,8 @@ "Fona tapete" "Fona tapetes priekšskatījums" "Kolekcija nepastāv" + + + + diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml index 63df2c1..6fca7f2 100644 --- a/res/values-mk/strings.xml +++ b/res/values-mk/strings.xml @@ -94,4 +94,8 @@ "Тапет" "Преглед на тапет" "Збирката не постои" + + + + diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml index 99a2ff7..faa456d 100644 --- a/res/values-ml/strings.xml +++ b/res/values-ml/strings.xml @@ -94,4 +94,8 @@ "വാൾപേപ്പർ" "വാൾപേപ്പർ പ്രിവ്യൂ" "ശേഖരം നിലവിലില്ല" + + + + diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml index 680faa6..e02cae6 100644 --- a/res/values-mn/strings.xml +++ b/res/values-mn/strings.xml @@ -94,4 +94,6 @@ "Дэлгэцийн зураг" "Дэлгэцийн зургийг урьдчилан үзэх" "Ийм цуглуулга байхгүй" + "UI урьдчилан үзэлтийг нуух" + "UI урьдчилан үзэлтийг харуулах" diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml index 4ae38e8..3fdf901 100644 --- a/res/values-mr/strings.xml +++ b/res/values-mr/strings.xml @@ -94,4 +94,8 @@ "वॉलपेपर" "वॉलपेपर पूर्वावलोकन" "संग्रह अस्तित्वात नाही" + + + + diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml index 484e4cf..db772ef 100644 --- a/res/values-ms/strings.xml +++ b/res/values-ms/strings.xml @@ -94,4 +94,8 @@ "Kertas dinding" "Pratonton kertas dinding" "Koleksi tersebut tidak wujud" + + + + diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml index b220147..ea1a729 100644 --- a/res/values-my/strings.xml +++ b/res/values-my/strings.xml @@ -94,4 +94,8 @@ "နောက်ခံ" "နောက်ခံပုံ အစမ်းကြည့်ရှုခြင်း" "ဤစုစည်းမှု မရှိပါ" + + + + diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index 3b23d21..aeef21c 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -94,4 +94,8 @@ "Bakgrunn" "Forhåndsvisning av bakgrunn" "Samlingen eksisterer ikke" + + + + diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml index f5b3081..d964ec9 100644 --- a/res/values-ne/strings.xml +++ b/res/values-ne/strings.xml @@ -94,4 +94,8 @@ "वालपेपर" "वालपेपरको प्रिभ्यु" "यो सङ्ग्रह छैन" + + + + diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index 3b15f2d..0f0740e 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -94,4 +94,6 @@ "Achtergrond" "Achtergrondvoorbeeld" "De collectie bestaat niet" + "Voorbeeld van UI verbergen" + "Voorbeeld van UI tonen" diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml index f707023..e4e3207 100644 --- a/res/values-or/strings.xml +++ b/res/values-or/strings.xml @@ -94,4 +94,8 @@ "ୱାଲପେପର୍" "ୱାଲପେପରର ପ୍ରିଭ୍ୟୁ" "ସଂଗ୍ରହ ଉପଲବ୍ଧ ନାହିଁ" + + + + diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml index 9f82470..85d3ee4 100644 --- a/res/values-pa/strings.xml +++ b/res/values-pa/strings.xml @@ -94,4 +94,8 @@ "ਵਾਲਪੇਪਰ" "ਵਾਲਪੇਪਰ ਦੀ ਪੂਰਵ-ਝਲਕ" "ਸੰਗ੍ਰਹਿ ਮੌਜੂਦ ਨਹੀਂ ਹੈ" + + + + diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index ed50411..b90482b 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -94,4 +94,8 @@ "Tapeta" "Podgląd tapety" "Taka kolekcja nie istnieje" + + + + diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index 060f60d..96831be 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -94,4 +94,8 @@ "Imagem de fundo" "Pré-visual. da imagem de fundo" "A coleção não existe." + + + + diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index df1d052..fea7c92 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -94,4 +94,8 @@ "Plano de fundo" "Visualização do plano de fundo" "A coleção não existe" + + + + diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index eaaf4c0..fea8cf6 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -94,4 +94,8 @@ "Imagine de fundal" "Previzualizarea imaginii de fundal" "Colecția nu există" + + + + diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 62d17ba..e3162a9 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -94,4 +94,8 @@ "Обои" "Предварительный просмотр обоев" "Такой подборки не существует." + + + + diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml index bf81b00..18df06b 100644 --- a/res/values-si/strings.xml +++ b/res/values-si/strings.xml @@ -94,4 +94,8 @@ "වෝල්පේපරය" "වෝල්පේපර පෙරදසුන" "එකතුව නොපවතී" + + + + diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index 89b45d4..2808944 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -94,4 +94,8 @@ "Tapeta" "Ukážka tapety" "Zbierka neexistuje" + + + + diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index 2c90b21..b9aab9c 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -94,4 +94,8 @@ "Zaslonsko ozadje" "Predogled zaslonskih ozadij" "Zbirka ne obstaja" + + + + diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml index ff4a9d9..68c56b4 100644 --- a/res/values-sq/strings.xml +++ b/res/values-sq/strings.xml @@ -94,4 +94,8 @@ "Imazhi i sfondit" "Pamja paraprake e imazhit të sfondit" "Koleksioni nuk ekziston" + + + + diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index ecd2f51..f1713f2 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -94,4 +94,8 @@ "Позадина" "Преглед позадине" "Колекција не постоји" + + + + diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index 119257e..82936fb 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -94,4 +94,8 @@ "Bakgrund" "Förhandsgranska bakgrunden" "Samlingen finns inte" + + + + diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index 8ca6e68..b12ebff 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -94,4 +94,8 @@ "Mandhari" "Onyesho la kukagua mandhari" "Mkusanyiko huu haupo" + + + + diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml index 4a5b096..e69ec1e 100644 --- a/res/values-ta/strings.xml +++ b/res/values-ta/strings.xml @@ -94,4 +94,8 @@ "வால்பேப்பர்" "வால்பேப்பர் மாதிரிக்காட்சி" "இந்தத் தொகுப்பு இல்லை" + + + + diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml index e8b2d1c..2e7c3d4 100644 --- a/res/values-te/strings.xml +++ b/res/values-te/strings.xml @@ -94,4 +94,8 @@ "వాల్‌పేపర్" "వాల్‌పేపర్ ప్రివ్యూ" "ఈ సేకరణ అందుబాటులో లేదు" + + + + diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index a027d64..751728c 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -94,4 +94,8 @@ "วอลเปเปอร์" "พรีวิววอลเปเปอร์" "ไม่มีคอลเล็กชัน" + + + + diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index 3cabd22..9821f45 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -94,4 +94,8 @@ "Wallpaper" "Preview ng wallpaper" "Wala ang koleksyon" + + + + diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 008de95..e1ff0c7 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -94,4 +94,8 @@ "Duvar kağıdı" "Duvar kağıdı ön izleme" "Koleksiyon mevcut değil" + + + + diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index 9021401..28aa63a 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -94,4 +94,8 @@ "Фоновий малюнок" "Перегляд фонового малюнка" "Колекція не існує" + + + + diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml index c95c1d5..3a21cde 100644 --- a/res/values-ur/strings.xml +++ b/res/values-ur/strings.xml @@ -94,4 +94,8 @@ "وال پیپر" "وال پیپر کا پیش منظر" "مجموعہ موجود نہیں ہے" + + + + diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml index 2fb79b0..94889d4 100644 --- a/res/values-uz/strings.xml +++ b/res/values-uz/strings.xml @@ -94,4 +94,8 @@ "Fon rasmi" "Fon rasmiga razm solish" "Bunday terma mavjud emas" + + + + diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index 1c072d5..332dc73 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -94,4 +94,8 @@ "Hình nền" "Xem trước hình nền" "Bộ sưu tập không tồn tại" + + + + diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 24d4bf7..9c47ba3 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -94,4 +94,8 @@ "壁纸" "壁纸预览" "该集合不存在" + + + + diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index 6e2f7f7..62b66b5 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -94,4 +94,8 @@ "桌布" "預覽桌布" "桌布集不存在" + + + + diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 8ce3524..b60354e 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -94,4 +94,8 @@ "桌布" "桌布預覽" "這個系列不存在" + + + + diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index 3d693f5..b30454d 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -94,4 +94,8 @@ "Isithombe sangemuva" "Ukubuka kuqala kwesithombe sangemuva" "Uqoqo alutholakali" + + + + -- cgit v1.2.3 From 2cac2306aaa7a052f8b5df25fbd0bb819e6ac976 Mon Sep 17 00:00:00 2001 From: Chihhang Chuang Date: Mon, 17 May 2021 21:01:35 +0800 Subject: Make system bar transparent in StandalonePreviewActivity Before: https://drive.google.com/file/d/1tdpMwggBt9KFqriTzGh6laOSUTrvecXq/view?usp=sharing After: https://drive.google.com/file/d/1DVmZJIKjPN6zRItaigBFuUBr8S5rVKbt/view?usp=sharing Fixes: 188402903 Test: Manually Change-Id: I73d20aa07aebb0800be3bb53c4b2a4d51a71caff --- .../android/wallpaper/picker/StandalonePreviewActivity.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/com/android/wallpaper/picker/StandalonePreviewActivity.java b/src/com/android/wallpaper/picker/StandalonePreviewActivity.java index 9b652be..43c92e2 100755 --- a/src/com/android/wallpaper/picker/StandalonePreviewActivity.java +++ b/src/com/android/wallpaper/picker/StandalonePreviewActivity.java @@ -22,8 +22,11 @@ import android.net.Uri; import android.os.Binder; import android.os.Bundle; import android.util.Log; +import android.view.Window; +import android.view.WindowManager; import androidx.annotation.NonNull; +import androidx.core.view.WindowCompat; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; @@ -124,6 +127,14 @@ public class StandalonePreviewActivity extends BasePreviewActivity implements Ap return false; } + @Override + protected void enableFullScreen() { + super.enableFullScreen(); + getWindow().setFlags( + WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, + WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); + } + /** * Creates a new instance of {@link PreviewFragment} and loads the fragment into this activity's * fragment container so that it's shown to the user. -- cgit v1.2.3 From 616808f0444607403b661912e73e0037ec6207f8 Mon Sep 17 00:00:00 2001 From: Santiago Etchebehere Date: Wed, 19 May 2021 16:10:07 -0700 Subject: Properly log the RemoteException from the Workspace callback Bug: 186712316 Test: manual Change-Id: Iec2609d56dffdccc31b2e746d2b99318e0a19253 --- src/com/android/wallpaper/picker/WorkspaceSurfaceHolderCallback.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/com/android/wallpaper/picker/WorkspaceSurfaceHolderCallback.java b/src/com/android/wallpaper/picker/WorkspaceSurfaceHolderCallback.java index e8780e9..b534276 100644 --- a/src/com/android/wallpaper/picker/WorkspaceSurfaceHolderCallback.java +++ b/src/com/android/wallpaper/picker/WorkspaceSurfaceHolderCallback.java @@ -20,6 +20,7 @@ import android.content.Context; import android.os.Bundle; import android.os.Message; import android.os.RemoteException; +import android.util.Log; import android.view.Surface; import android.view.SurfaceHolder; import android.view.SurfaceView; @@ -33,6 +34,7 @@ import com.android.wallpaper.util.SurfaceViewUtils; /** A surface holder callback that renders user's workspace on the passed in surface view. */ public class WorkspaceSurfaceHolderCallback implements SurfaceHolder.Callback { + private static final String TAG = "WsSurfaceHolderCallback"; private static final String KEY_WALLPAPER_COLORS = "wallpaper_colors"; private final SurfaceView mWorkspaceSurface; private final PreviewUtils mPreviewUtils; @@ -118,7 +120,7 @@ public class WorkspaceSurfaceHolderCallback implements SurfaceHolder.Callback { try { mCallback.replyTo.send(mCallback); } catch (RemoteException e) { - e.printStackTrace(); + Log.w(TAG, "Couldn't call cleanup on workspace preview", e); } finally { mCallback = null; } -- cgit v1.2.3 From c4462d0e874f78911cb93e6f0cfefa8fa3a532c8 Mon Sep 17 00:00:00 2001 From: Chuck Liao Date: Thu, 20 May 2021 01:06:23 +0800 Subject: Update the logic for featured collections Bug: 188589807 Test: manual Change-Id: Ib20aa0c2d5097e3640896b34238c8524e2be7e34 --- src/com/android/wallpaper/model/CategoryProvider.java | 6 ++---- src/com/android/wallpaper/module/DefaultCategoryProvider.java | 4 ++-- src/com/android/wallpaper/picker/CategorySelectorFragment.java | 5 ++++- tests/src/com/android/wallpaper/testing/TestCategoryProvider.java | 2 +- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/com/android/wallpaper/model/CategoryProvider.java b/src/com/android/wallpaper/model/CategoryProvider.java index 9d2ab09..78899d8 100755 --- a/src/com/android/wallpaper/model/CategoryProvider.java +++ b/src/com/android/wallpaper/model/CategoryProvider.java @@ -66,9 +66,7 @@ public interface CategoryProvider { void resetIfNeeded(); /** - * Checks if the category is a featured category. - * - * @param category the category to be verified + * Checks if featured collection available. */ - boolean isFeaturedCategory(Category category); + boolean isFeaturedCollectionAvailable(); } diff --git a/src/com/android/wallpaper/module/DefaultCategoryProvider.java b/src/com/android/wallpaper/module/DefaultCategoryProvider.java index 9372e7a..dc9b227 100755 --- a/src/com/android/wallpaper/module/DefaultCategoryProvider.java +++ b/src/com/android/wallpaper/module/DefaultCategoryProvider.java @@ -69,7 +69,7 @@ public class DefaultCategoryProvider implements CategoryProvider { * Relative category priorities. Lower numbers correspond to higher priorities (i.e., should * appear higher in the categories list). */ - private static final int PRIORITY_MY_PHOTOS = 1; + protected static final int PRIORITY_MY_PHOTOS = 1; private static final int PRIORITY_SYSTEM = 100; private static final int PRIORITY_ON_DEVICE = 200; private static final int PRIORITY_LIVE = 300; @@ -151,7 +151,7 @@ public class DefaultCategoryProvider implements CategoryProvider { } @Override - public boolean isFeaturedCategory(Category category) { + public boolean isFeaturedCollectionAvailable() { return false; } diff --git a/src/com/android/wallpaper/picker/CategorySelectorFragment.java b/src/com/android/wallpaper/picker/CategorySelectorFragment.java index 0455f47..a506bca 100644 --- a/src/com/android/wallpaper/picker/CategorySelectorFragment.java +++ b/src/com/android/wallpaper/picker/CategorySelectorFragment.java @@ -122,6 +122,7 @@ public class CategorySelectorFragment extends AppbarFragment { private ArrayList mCategories = new ArrayList<>(); private Point mTileSizePx; private boolean mAwaitingCategories; + private boolean mIsFeaturedCollectionAvailable; public CategorySelectorFragment() { mAdapter = new CategoryAdapter(mCategories); @@ -250,6 +251,8 @@ public class CategorySelectorFragment extends AppbarFragment { mAdapter.notifyItemRemoved(mAdapter.getItemCount() - 1); mAwaitingCategories = false; } + + mIsFeaturedCollectionAvailable = mCategoryProvider.isFeaturedCollectionAvailable(); } void notifyDataSetChanged() { @@ -443,7 +446,7 @@ public class CategorySelectorFragment extends AppbarFragment { return ITEM_VIEW_TYPE_MY_PHOTOS; } - if (mCategoryProvider.isFeaturedCategory(mCategories.get(position))) { + if (mIsFeaturedCollectionAvailable && (position == 1 || position == 2)) { return ITEM_VIEW_TYPE_FEATURED_CATEGORY; } diff --git a/tests/src/com/android/wallpaper/testing/TestCategoryProvider.java b/tests/src/com/android/wallpaper/testing/TestCategoryProvider.java index 4922b42..d43a8a0 100644 --- a/tests/src/com/android/wallpaper/testing/TestCategoryProvider.java +++ b/tests/src/com/android/wallpaper/testing/TestCategoryProvider.java @@ -98,7 +98,7 @@ public class TestCategoryProvider implements CategoryProvider { } @Override - public boolean isFeaturedCategory(Category category) { + public boolean isFeaturedCollectionAvailable() { return false; } -- cgit v1.2.3 From 3aa8d4d37ab751835ef925b044ccc570fe081bb5 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Thu, 20 May 2021 17:23:26 +0000 Subject: Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I52e22bdd75aeeab578fb70e46c9cb7a0f18aa277 --- res/values-af/strings.xml | 6 ++---- res/values-am/strings.xml | 6 ++---- res/values-ar/strings.xml | 6 ++---- res/values-az/strings.xml | 6 ++---- res/values-b+sr+Latn/strings.xml | 6 ++---- res/values-be/strings.xml | 6 ++---- res/values-bs/strings.xml | 6 ++---- res/values-ca/strings.xml | 6 ++---- res/values-cs/strings.xml | 6 ++---- res/values-da/strings.xml | 6 ++---- res/values-de/strings.xml | 6 ++---- res/values-el/strings.xml | 6 ++---- res/values-en-rAU/strings.xml | 6 ++---- res/values-en-rCA/strings.xml | 6 ++---- res/values-en-rGB/strings.xml | 6 ++---- res/values-en-rIN/strings.xml | 6 ++---- res/values-es-rUS/strings.xml | 6 ++---- res/values-es/strings.xml | 6 ++---- res/values-et/strings.xml | 6 ++---- res/values-eu/strings.xml | 6 ++---- res/values-fa/strings.xml | 6 ++---- res/values-fi/strings.xml | 6 ++---- res/values-fr-rCA/strings.xml | 6 ++---- res/values-fr/strings.xml | 6 ++---- res/values-gl/strings.xml | 6 ++---- res/values-hi/strings.xml | 6 ++---- res/values-hr/strings.xml | 6 ++---- res/values-hu/strings.xml | 6 ++---- res/values-hy/strings.xml | 6 ++---- res/values-in/strings.xml | 6 ++---- res/values-is/strings.xml | 6 ++---- res/values-it/strings.xml | 6 ++---- res/values-iw/strings.xml | 6 ++---- res/values-ka/strings.xml | 6 ++---- res/values-kk/strings.xml | 6 ++---- res/values-km/strings.xml | 6 ++---- res/values-kn/strings.xml | 6 ++---- res/values-ko/strings.xml | 6 ++---- res/values-ky/strings.xml | 6 ++---- res/values-lo/strings.xml | 6 ++---- res/values-lt/strings.xml | 6 ++---- res/values-lv/strings.xml | 6 ++---- res/values-mk/strings.xml | 6 ++---- res/values-ml/strings.xml | 6 ++---- res/values-mr/strings.xml | 6 ++---- res/values-ms/strings.xml | 6 ++---- res/values-my/strings.xml | 6 ++---- res/values-nb/strings.xml | 6 ++---- res/values-or/strings.xml | 6 ++---- res/values-pa/strings.xml | 6 ++---- res/values-pl/strings.xml | 6 ++---- res/values-pt-rPT/strings.xml | 6 ++---- res/values-pt/strings.xml | 6 ++---- res/values-ro/strings.xml | 6 ++---- res/values-ru/strings.xml | 6 ++---- res/values-si/strings.xml | 6 ++---- res/values-sk/strings.xml | 6 ++---- res/values-sl/strings.xml | 6 ++---- res/values-sq/strings.xml | 6 ++---- res/values-sr/strings.xml | 6 ++---- res/values-sv/strings.xml | 6 ++---- res/values-sw/strings.xml | 6 ++---- res/values-ta/strings.xml | 6 ++---- res/values-th/strings.xml | 6 ++---- res/values-tl/strings.xml | 6 ++---- res/values-tr/strings.xml | 6 ++---- res/values-uk/strings.xml | 6 ++---- res/values-ur/strings.xml | 6 ++---- res/values-uz/strings.xml | 6 ++---- res/values-vi/strings.xml | 6 ++---- res/values-zh-rCN/strings.xml | 6 ++---- res/values-zh-rHK/strings.xml | 6 ++---- res/values-zh-rTW/strings.xml | 6 ++---- res/values-zu/strings.xml | 6 ++---- 74 files changed, 148 insertions(+), 296 deletions(-) diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index cb94c4c..f883d34 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -94,8 +94,6 @@ "Muurpapier" "Muurpapiervoorskou" "Die versameling bestaan nie" - - - - + "Versteek UI-voorskou" + "Wys UI-voorskou" diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index 4f5067c..aed7c2c 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -94,8 +94,6 @@ "ልጣፍ" "የልጣፍ ቅድመ-እይታ" "ስብስቡ የለም" - - - - + "የዩአይ ቅድመ-ዕይታን ደብቅ" + "የዩአይ ቅድመ-ዕይታን አሳይ" diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 89be95a..68693aa 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -94,8 +94,6 @@ "الخلفية" "معاينة عرض الشرائح" "المجموعة غير متوفرة." - - - - + "إخفاء معاينة واجهة المستخدم" + "عرض معاينة واجهة المستخدم" diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml index 400494d..6e510ba 100644 --- a/res/values-az/strings.xml +++ b/res/values-az/strings.xml @@ -94,8 +94,6 @@ "Divar kağızı" "Divar Kağızı önizləməsi" "Kolleksiya mövcud deyil" - - - - + "UI Önizləməsini gizlədin" + "UI Önizləməsini göstərin" diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml index ab82cd8..d40bda5 100644 --- a/res/values-b+sr+Latn/strings.xml +++ b/res/values-b+sr+Latn/strings.xml @@ -94,8 +94,6 @@ "Pozadina" "Pregled pozadine" "Kolekcija ne postoji" - - - - + "Sakrij korisnički interfejs" + "Prikaži korisnički interfejs" diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index 2c6ccfc..73a6fbd 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -94,8 +94,6 @@ "Шпалеры" "Перадпрагляд шпалер" "Калекцыя не існуе" - - - - + "Схаваць перадпрагляд UI" + "Паказаць перадпрагляд UI" diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml index ed0694a..882428a 100644 --- a/res/values-bs/strings.xml +++ b/res/values-bs/strings.xml @@ -94,8 +94,6 @@ "Pozadinska slika" "Pregled pozadinske slike" "Kolekcija ne postoji" - - - - + "Sakrij pregled UI-a" + "Prikaži pregled UI-a" diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index 96b78f9..607c71f 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -94,8 +94,6 @@ "Fons de pantalla" "Previsualitz. fons de pantalla" "La col·lecció no existeix" - - - - + "Amaga la previsualització de IU" + "Mostra la previsualització de IU" diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index cc7b7bb..814a0f3 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -94,8 +94,6 @@ "Tapeta" "Náhled prezentace" "Sbírka neexistuje" - - - - + "Skrýt náhled rozhraní" + "Zobrazit náhled rozhraní" diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 3175c0b..0efa961 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -94,8 +94,6 @@ "Baggrund" "Forhåndsvisning af baggrund" "Samlingen eksisterer ikke" - - - - + "Skjul forhåndsvisning af brugerflade" + "Vis forhåndsvisning af brugerflade" diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index f4bf3fd..f0bca06 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -94,8 +94,6 @@ "Hintergrund" "Hintergrundvorschau" "Die Sammlung existiert nicht" - - - - + "UI-Vorschau ausblenden" + "UI-Vorschau einblenden" diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 9ff88c4..5b9dda0 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -94,8 +94,6 @@ "Ταπετσαρία" "Προεπισκόπηση ταπετσαρίας" "Η συλλογή δεν υπάρχει." - - - - + "Απόκρυψη προεπ/σης διεπ.χρήστη" + "Εμφάνιση προεπ/σης διεπ.χρήστη" diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml index 5b4d8a0..750a2d0 100644 --- a/res/values-en-rAU/strings.xml +++ b/res/values-en-rAU/strings.xml @@ -94,8 +94,6 @@ "Wallpaper" "Wallpaper preview" "The collection doesn\'t exist" - - - - + "Hide UI preview" + "Show UI preview" diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml index 5b4d8a0..750a2d0 100644 --- a/res/values-en-rCA/strings.xml +++ b/res/values-en-rCA/strings.xml @@ -94,8 +94,6 @@ "Wallpaper" "Wallpaper preview" "The collection doesn\'t exist" - - - - + "Hide UI preview" + "Show UI preview" diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index 5b4d8a0..750a2d0 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -94,8 +94,6 @@ "Wallpaper" "Wallpaper preview" "The collection doesn\'t exist" - - - - + "Hide UI preview" + "Show UI preview" diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml index 5b4d8a0..750a2d0 100644 --- a/res/values-en-rIN/strings.xml +++ b/res/values-en-rIN/strings.xml @@ -94,8 +94,6 @@ "Wallpaper" "Wallpaper preview" "The collection doesn\'t exist" - - - - + "Hide UI preview" + "Show UI preview" diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index fa6263e..eac521c 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -94,8 +94,6 @@ "Fondo de pantalla" "Vista previa del fondo" "La colección no existe" - - - - + "Ocultar vista previa de la IU" + "Mostrar vista previa de la IU" diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 567cb60..01bec6a 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -94,8 +94,6 @@ "Fondo de pantalla" "Vista previa de fondo" "La colección no existe" - - - - + "Ocultar vista previa de UI" + "Mostrar vista previa de UI" diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml index 1e58bda..9c92c68 100644 --- a/res/values-et/strings.xml +++ b/res/values-et/strings.xml @@ -94,8 +94,6 @@ "Taustapilt" "Taustapildi eelvaade" "Kogu pole olemas" - - - - + "Peida kasutajaliidese eelvaade" + "Kuva kasutajaliidese eelvaade" diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index cedc61e..2bfc243 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -94,8 +94,6 @@ "Horma-papera" "Horma-paperaren aurrebista" "Ez dago bildumarik" - - - - + "Ezkutatu EIaren aurrebista" + "Erakutsi EIaren aurrebista" diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index a75c4bf..620edaa 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -94,8 +94,6 @@ "کاغذدیواری" "پیش‌نمای کاغذدیواری" "مجموعه وجود ندارد" - - - - + "پنهان کردن پیش‌نمای رابط کاربری" + "نمایش دادن پیش‌نمای رابط کاربری" diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index 27023c3..5c1e9c9 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -94,8 +94,6 @@ "Taustakuva" "Taustakuvan esikatselu" "Kyseistä kokoelmaa ei ole olemassa" - - - - + "Piilota UI:n esikatselu" + "Näytä UI:n esikatselu" diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml index e572045..795294c 100644 --- a/res/values-fr-rCA/strings.xml +++ b/res/values-fr-rCA/strings.xml @@ -94,8 +94,6 @@ "Fond d\'écran" "Aperçu du fond d\'écran" "La collection n\'existe pas" - - - - + "Masquer l\'aperçu de l\'IU" + "Afficher l\'aperçu de l\'IU" diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index b57b108..8664237 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -94,8 +94,6 @@ "Fond d\'écran" "Aperçu du fond d\'écran" "Cette collection n\'existe pas" - - - - + "Masquer l\'aperçu de l\'UI" + "Afficher l\'aperçu de l\'UI" diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml index 885b098..2c431cc 100644 --- a/res/values-gl/strings.xml +++ b/res/values-gl/strings.xml @@ -94,8 +94,6 @@ "Fondo de pantalla" "Vista previa do fondo" "A colección non existe" - - - - + "Ocultar vista previa da IU" + "Mostrar vista previa da IU" diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index e781b61..8877c1c 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -94,8 +94,6 @@ "वॉलपेपर" "वॉलपेपर की झलक देखें" "वॉलपेपर का संग्रह मौजूद नहीं है" - - - - + "यूज़र इंटरफ़ेस की झलक छिपाएं" + "यूज़र इंटरफ़ेस की झलक दिखाएं" diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index b1a2dcb..31052b9 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -94,8 +94,6 @@ "Pozadina" "Pregled pozadine" "Zbirka ne postoji" - - - - + "Sakrij pregled koris. sučelja" + "Prikaži pregled koris. sučelja" diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index bb1e7c3..50ca3fa 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -94,8 +94,6 @@ "Háttérkép" "Háttérkép előnézete" "Nincs ilyen gyűjtemény" - - - - + "UI előnézetének elrejtése" + "UI előnézetének megjelenítése" diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml index cc73cf0..ae654bf 100644 --- a/res/values-hy/strings.xml +++ b/res/values-hy/strings.xml @@ -94,8 +94,6 @@ "Պաստառ" "Պաստառի նախադիտում" "Հավաքածուն գոյություն չունի" - - - - + "Թաքցնել նախադիտման էկրանը" + "Ցուցադրել նախադիտման էկրանը" diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index 7d12efb..b7dd161 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -94,8 +94,6 @@ "Wallpaper" "Pratinjau wallpaper" "Koleksi tidak ada" - - - - + "Sembunyikan Pratinjau UI" + "Tampilkan Pratinjau UI" diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml index 204bb07..9f80b25 100644 --- a/res/values-is/strings.xml +++ b/res/values-is/strings.xml @@ -94,8 +94,6 @@ "Veggfóður" "Forskoðun veggfóðurs" "Safnið er ekki til" - - - - + "Fela forskoðun notendaviðmóts" + "Sýna forskoðun notendaviðmóts" diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index ecb8e12..a1d73c9 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -94,8 +94,6 @@ "Sfondo" "Anteprima sfondo" "La raccolta non esiste" - - - - + "Nascondi UI Anteprima" + "Mostra UI Anteprima" diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index 72235b0..c85ab18 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -94,8 +94,6 @@ "טפט" "תצוגה מקדימה של הטפט" "האוסף לא קיים" - - - - + "ללא תצוגה מקדימה בממשק המשתמש" + "עם תצוגה מקדימה בממשק המשתמש" diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml index c406210..408a26b 100644 --- a/res/values-ka/strings.xml +++ b/res/values-ka/strings.xml @@ -94,8 +94,6 @@ "ფონი" "ფონის გადახედვა" "კოლექცია არ არსებობს" - - - - + "UI გადახედვის დამალვა" + "UI გადახედვის გამოჩენა" diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml index dc0b50b..8da40a4 100644 --- a/res/values-kk/strings.xml +++ b/res/values-kk/strings.xml @@ -94,8 +94,6 @@ "Тұсқағаз" "Тұсқағазды алдын ала қарау" "Жинақ жоқ." - - - - + "Алдын ала қарау экранын жасыру" + "Алдын ала қарау экранын көрсету" diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml index 0515579..4ec72a8 100644 --- a/res/values-km/strings.xml +++ b/res/values-km/strings.xml @@ -94,8 +94,6 @@ "ផ្ទាំងរូបភាព" "ការមើលផ្ទាំង​រូបភាពសាកល្បង" "បណ្ដុំមិនមានទេ" - - - - + "លាក់ការមើល UI សាកល្បង" + "បង្ហាញការមើល UI សាកល្បង" diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml index 05ac23a..9d3638c 100644 --- a/res/values-kn/strings.xml +++ b/res/values-kn/strings.xml @@ -94,8 +94,6 @@ "ವಾಲ್‌ಪೇಪರ್‌" "ವಾಲ್‌ಪೇಪರ್ ಪೂರ್ವವೀಕ್ಷಣೆ" "ಸಂಗ್ರಹಣೆ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ" - - - - + "UI ಪೂರ್ವವೀಕ್ಷಣೆಯನ್ನು ಮರೆಮಾಡಿ" + "UI ಪೂರ್ವವೀಕ್ಷಣೆಯನ್ನು ತೋರಿಸಿ" diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 0819f7c..15e9008 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -94,8 +94,6 @@ "배경화면" "배경화면 미리보기" "컬렉션이 없습니다." - - - - + "UI 미리보기 숨기기" + "UI 미리보기 표시" diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml index 6b27022..6701529 100644 --- a/res/values-ky/strings.xml +++ b/res/values-ky/strings.xml @@ -94,8 +94,6 @@ "Тушкагаз" "Тушкагазды алдын ала көрүү" "Мындай жыйнак жок" - - - - + "Алдын ала көрүү экранын жашыруу" + "Алдын ала көрүү экранын көрсөтүү" diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml index 73b3c8f..3ab17f6 100644 --- a/res/values-lo/strings.xml +++ b/res/values-lo/strings.xml @@ -94,8 +94,6 @@ "ຮູບພື້ນຫຼັງ" "ຕົວຢ່າງຮູບພື້ນຫຼັງ" "ບໍ່ມິຄໍເລັກຊັນ" - - - - + "ເຊື່ອງຕົວຢ່າງສ່ວນຕິດຕໍ່ຜູ້ໃຊ້" + "ສະແດງຕົວຢ່າງສ່ວນຕິດຕໍ່ຜູ້ໃຊ້" diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index 8616425..9c17903 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -94,8 +94,6 @@ "Ekrano fonas" "Ekrano fono peržiūra" "Rinkinio nėra" - - - - + "Slėpti NS peržiūrą" + "Rodyti NS peržiūrą" diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index bea8ef9..741b792 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -94,8 +94,6 @@ "Fona tapete" "Fona tapetes priekšskatījums" "Kolekcija nepastāv" - - - - + "Paslēpt saskarnes priekšskatījumu" + "Rādīt saskarnes priekšskatījumu" diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml index 6fca7f2..9f63cfc 100644 --- a/res/values-mk/strings.xml +++ b/res/values-mk/strings.xml @@ -94,8 +94,6 @@ "Тапет" "Преглед на тапет" "Збирката не постои" - - - - + "Сокриј го прегледот на UI" + "Прикажи го прегледот на UI" diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml index faa456d..562c761 100644 --- a/res/values-ml/strings.xml +++ b/res/values-ml/strings.xml @@ -94,8 +94,6 @@ "വാൾപേപ്പർ" "വാൾപേപ്പർ പ്രിവ്യൂ" "ശേഖരം നിലവിലില്ല" - - - - + "UI പ്രിവ്യൂ മറയ്‌ക്കുക" + "UI പ്രിവ്യൂ കാണിക്കുക" diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml index 3fdf901..bf7ea38 100644 --- a/res/values-mr/strings.xml +++ b/res/values-mr/strings.xml @@ -94,8 +94,6 @@ "वॉलपेपर" "वॉलपेपर पूर्वावलोकन" "संग्रह अस्तित्वात नाही" - - - - + "UI पूर्वावलोकन लपवा" + "UI पूर्वावलोकन दाखवा" diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml index db772ef..7b9d14e 100644 --- a/res/values-ms/strings.xml +++ b/res/values-ms/strings.xml @@ -94,8 +94,6 @@ "Kertas dinding" "Pratonton kertas dinding" "Koleksi tersebut tidak wujud" - - - - + "Sembunyikan Pratontotn UI" + "Tunjukkan Pratonton UI" diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml index ea1a729..fbb2076 100644 --- a/res/values-my/strings.xml +++ b/res/values-my/strings.xml @@ -94,8 +94,6 @@ "နောက်ခံ" "နောက်ခံပုံ အစမ်းကြည့်ရှုခြင်း" "ဤစုစည်းမှု မရှိပါ" - - - - + "UI အစမ်းကြည့်ခြင်းကို ဝှက်ရန်" + "UI အစမ်းကြည့်ခြင်းကို ပြရန်" diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index aeef21c..950cf23 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -94,8 +94,6 @@ "Bakgrunn" "Forhåndsvisning av bakgrunn" "Samlingen eksisterer ikke" - - - - + "Skjul UI-forhåndsvisning" + "Vis UI-forhåndsvisning" diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml index e4e3207..555bb64 100644 --- a/res/values-or/strings.xml +++ b/res/values-or/strings.xml @@ -94,8 +94,6 @@ "ୱାଲପେପର୍" "ୱାଲପେପରର ପ୍ରିଭ୍ୟୁ" "ସଂଗ୍ରହ ଉପଲବ୍ଧ ନାହିଁ" - - - - + "UI ପ୍ରିଭ୍ୟୁକୁ ଲୁଚାନ୍ତୁ" + "UI ପ୍ରିଭ୍ୟୁ ଦେଖାନ୍ତୁ" diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml index 85d3ee4..c5a6864 100644 --- a/res/values-pa/strings.xml +++ b/res/values-pa/strings.xml @@ -94,8 +94,6 @@ "ਵਾਲਪੇਪਰ" "ਵਾਲਪੇਪਰ ਦੀ ਪੂਰਵ-ਝਲਕ" "ਸੰਗ੍ਰਹਿ ਮੌਜੂਦ ਨਹੀਂ ਹੈ" - - - - + "UI ਦੀ ਪੂਰਵ-ਝਲਕ ਲੁਕਾਓ" + "UI ਦੀ ਪੂਰਵ-ਝਲਕ ਦਿਖਾਓ" diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index b90482b..ad7fd31 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -94,8 +94,6 @@ "Tapeta" "Podgląd tapety" "Taka kolekcja nie istnieje" - - - - + "Ukryj podgląd UI" + "Pokaż podgląd UI" diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index 96831be..3eab136 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -94,8 +94,6 @@ "Imagem de fundo" "Pré-visual. da imagem de fundo" "A coleção não existe." - - - - + "Ocultar pré-visualização da IU" + "Mostrar pré-visualização da IU" diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index fea7c92..8b27103 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -94,8 +94,6 @@ "Plano de fundo" "Visualização do plano de fundo" "A coleção não existe" - - - - + "Ocultar visualização da IU" + "Mostrar visualização da IU" diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index fea8cf6..ae2b870 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -94,8 +94,6 @@ "Imagine de fundal" "Previzualizarea imaginii de fundal" "Colecția nu există" - - - - + "Ascunde previzualizarea IU" + "Afișează previzualizarea IU" diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index e3162a9..e333566 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -94,8 +94,6 @@ "Обои" "Предварительный просмотр обоев" "Такой подборки не существует." - - - - + "Скрыть экран предпросмотра" + "Предпросмотр интерфейса" diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml index 18df06b..1c3f458 100644 --- a/res/values-si/strings.xml +++ b/res/values-si/strings.xml @@ -94,8 +94,6 @@ "වෝල්පේපරය" "වෝල්පේපර පෙරදසුන" "එකතුව නොපවතී" - - - - + "UI පෙරදසුන සඟවන්න" + "UI පෙරදසුන පෙන්වන්න" diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index 2808944..e8b5d8d 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -94,8 +94,6 @@ "Tapeta" "Ukážka tapety" "Zbierka neexistuje" - - - - + "Skryť ukážku použ. rozhrania" + "Zobr. ukážku použ. rozhrania" diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index b9aab9c..898e4c5 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -94,8 +94,6 @@ "Zaslonsko ozadje" "Predogled zaslonskih ozadij" "Zbirka ne obstaja" - - - - + "Skrij predogled upor. vmesnika" + "Pokaži predogled upo. vmesnika" diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml index 68c56b4..4820403 100644 --- a/res/values-sq/strings.xml +++ b/res/values-sq/strings.xml @@ -94,8 +94,6 @@ "Imazhi i sfondit" "Pamja paraprake e imazhit të sfondit" "Koleksioni nuk ekziston" - - - - + "Fshih pamjen paraprake të ndërfaqes së përdoruesit" + "Shfaq pamjen paraprake të ndërfaqes së përdoruesit" diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index f1713f2..8d5adda 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -94,8 +94,6 @@ "Позадина" "Преглед позадине" "Колекција не постоји" - - - - + "Сакриј кориснички интерфејс" + "Прикажи кориснички интерфејс" diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index 82936fb..8eb236f 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -94,8 +94,6 @@ "Bakgrund" "Förhandsgranska bakgrunden" "Samlingen finns inte" - - - - + "Dölj förhandsgranskning av UI" + "Visa förhandsgranskning av UI" diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index b12ebff..685d17e 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -94,8 +94,6 @@ "Mandhari" "Onyesho la kukagua mandhari" "Mkusanyiko huu haupo" - - - - + "Ficha Onyesho la Kukagua Kiolesura" + "Onyesha Onyesho la Kukagua Kiolesura" diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml index e69ec1e..e515c4c 100644 --- a/res/values-ta/strings.xml +++ b/res/values-ta/strings.xml @@ -94,8 +94,6 @@ "வால்பேப்பர்" "வால்பேப்பர் மாதிரிக்காட்சி" "இந்தத் தொகுப்பு இல்லை" - - - - + "UI மாதிரிக்காட்சியை மறை" + "UI மாதிரிக்காட்சியைக் காட்டு" diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index 751728c..340031e 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -94,8 +94,6 @@ "วอลเปเปอร์" "พรีวิววอลเปเปอร์" "ไม่มีคอลเล็กชัน" - - - - + "ซ่อนตัวอย่าง UI" + "แสดงตัวอย่าง UI" diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index 9821f45..8345260 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -94,8 +94,6 @@ "Wallpaper" "Preview ng wallpaper" "Wala ang koleksyon" - - - - + "Itago ang Preview ng UI" + "Ipakita ang Preview ng UI" diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index e1ff0c7..ea8a3dd 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -94,8 +94,6 @@ "Duvar kağıdı" "Duvar kağıdı ön izleme" "Koleksiyon mevcut değil" - - - - + "Arayüz Önizlemesini Gizle" + "Arayüz Önizlemesini Göster" diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index 28aa63a..978c09b 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -94,8 +94,6 @@ "Фоновий малюнок" "Перегляд фонового малюнка" "Колекція не існує" - - - - + "Сховати інтерфейс перегляду" + "Показати інтерфейс перегляду" diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml index 3a21cde..57dacea 100644 --- a/res/values-ur/strings.xml +++ b/res/values-ur/strings.xml @@ -94,8 +94,6 @@ "وال پیپر" "وال پیپر کا پیش منظر" "مجموعہ موجود نہیں ہے" - - - - + "‏UI کا پیش منظر چھپائیں" + "‏UI کا پیش منظر دکھائیں" diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml index 94889d4..7165716 100644 --- a/res/values-uz/strings.xml +++ b/res/values-uz/strings.xml @@ -94,8 +94,6 @@ "Fon rasmi" "Fon rasmiga razm solish" "Bunday terma mavjud emas" - - - - + "Interfeys namunasini berkitish" + "Interfeys namunasini chiqarish" diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index 332dc73..3b29b08 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -94,8 +94,6 @@ "Hình nền" "Xem trước hình nền" "Bộ sưu tập không tồn tại" - - - - + "Ẩn giao diện người dùng xem trước" + "Hiện giao diện người dùng xem trước" diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 9c47ba3..02e1df2 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -94,8 +94,6 @@ "壁纸" "壁纸预览" "该集合不存在" - - - - + "隐藏界面预览" + "显示界面预览" diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index 62b66b5..dcad964 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -94,8 +94,6 @@ "桌布" "預覽桌布" "桌布集不存在" - - - - + "隱藏使用者介面預覽" + "顯示使用者介面預覽" diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index b60354e..845637e 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -94,8 +94,6 @@ "桌布" "桌布預覽" "這個系列不存在" - - - - + "隱藏使用者介面預覽畫面" + "顯示使用者介面預覽畫面" diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index b30454d..890b986 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -94,8 +94,6 @@ "Isithombe sangemuva" "Ukubuka kuqala kwesithombe sangemuva" "Uqoqo alutholakali" - - - - + "Fihla ukuhlola kuqala kwe-UI" + "Bonisa ukuhlola kuqala kwe-UI" -- cgit v1.2.3 From 76bf453e099d550dbf61e44c22b3ec83e373e465 Mon Sep 17 00:00:00 2001 From: Chihhang Chuang Date: Fri, 21 May 2021 16:34:57 +0800 Subject: Add ripple effect for buttons - Full preview buttons - Set wallpaper dialog buttons - Pill tabs - Bottom action buttons Also update the background color of full preview buttons to match mock. Video: https://drive.google.com/file/d/1yYadkkmsXYdRxiBaK2fvTfDx_d02jYRH/view?usp=sharing Fixes: 188749249 Fixes: 188749913 Fixes: 188749287 Fixes: 188749075 Test: Manually Change-Id: I5d8c4e94b981e57eb68f57d985b570b052cd3157 --- res/drawable/bottom_action_button_background.xml | 33 ++++++++++++++---------- res/drawable/dialog_option_background.xml | 15 +++++++---- res/drawable/fullscreen_button_background.xml | 20 ++++++++++++++ res/layout/fullscreen_buttons.xml | 6 +++-- res/layout/pill_tabs.xml | 3 ++- 5 files changed, 55 insertions(+), 22 deletions(-) create mode 100644 res/drawable/fullscreen_button_background.xml diff --git a/res/drawable/bottom_action_button_background.xml b/res/drawable/bottom_action_button_background.xml index 0a56ef1..e1b3554 100644 --- a/res/drawable/bottom_action_button_background.xml +++ b/res/drawable/bottom_action_button_background.xml @@ -14,18 +14,23 @@ See the License for the specific language governing permissions and limitations under the License. --> - - - - - - + + + + + + + + + + + + + + + + - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/res/drawable/dialog_option_background.xml b/res/drawable/dialog_option_background.xml index 166aa80..efb5891 100644 --- a/res/drawable/dialog_option_background.xml +++ b/res/drawable/dialog_option_background.xml @@ -14,8 +14,13 @@ See the License for the specific language governing permissions and limitations under the License. --> - - - - \ No newline at end of file + + + + + + + + \ No newline at end of file diff --git a/res/drawable/fullscreen_button_background.xml b/res/drawable/fullscreen_button_background.xml new file mode 100644 index 0000000..e3a0052 --- /dev/null +++ b/res/drawable/fullscreen_button_background.xml @@ -0,0 +1,20 @@ + + + + + \ No newline at end of file diff --git a/res/layout/fullscreen_buttons.xml b/res/layout/fullscreen_buttons.xml index e30a506..663e962 100644 --- a/res/layout/fullscreen_buttons.xml +++ b/res/layout/fullscreen_buttons.xml @@ -31,11 +31,12 @@ android:layout_gravity="center" android:layout_marginEnd="@dimen/fullscreen_preview_button_margin_between" android:layout_weight="1" - android:background="@drawable/pill_tabs_background" + android:background="@drawable/fullscreen_button_background" android:gravity="center" android:text="@string/hide_ui_preview_text" android:textAlignment="center" android:textAppearance="@style/PillTabsTextAppearance" + android:textColor="@color/text_color_primary_on_accent" android:visibility="visible"> @@ -46,11 +47,12 @@ android:layout_gravity="center" android:layout_marginStart="@dimen/fullscreen_preview_button_margin_between" android:layout_weight="1" - android:background="@drawable/pill_tabs_background" + android:background="@drawable/fullscreen_button_background" android:gravity="center" android:text="@string/set_wallpaper_button_text" android:textAlignment="center" android:textAppearance="@style/PillTabsTextAppearance" + android:textColor="@color/text_color_primary_on_accent" android:visibility="visible"> diff --git a/res/layout/pill_tabs.xml b/res/layout/pill_tabs.xml index fd14b75..e5284ef 100644 --- a/res/layout/pill_tabs.xml +++ b/res/layout/pill_tabs.xml @@ -22,7 +22,8 @@ android:layout_width="match_parent" android:layout_height="@dimen/pill_tabs_height" android:background="@drawable/pill_tabs_background" - app:tabRippleColor="@null" + app:tabRippleColor="?android:colorControlHighlight" + app:tabUnboundedRipple="true" app:tabGravity="fill" app:tabIndicator="@drawable/pill_tabs_indicator_background" app:tabIndicatorColor="?androidprv:attr/colorAccentPrimary" -- cgit v1.2.3 From 1b7f208cdf6e98269504f82726d9fe4bc44f12c3 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Fri, 21 May 2021 11:15:20 -0700 Subject: Remove WallpaperPicker2 BuildCompat packages/apps/WallpaperPicker2 has its own copy of BuildCompat, supposedly to allow overriding the SDK version in tests, but that feature is never used and having an extra copy causes more work every time the platform version is updated or finalized. Remove it and use checks against android.os.Build.VERSION.SDK_INT instead. Future checks against development versions should use the offical androidx.core.os.BuildCompat. Bug: 186121492 Test: m WallpaperPicker2 Change-Id: I2c92e97219d01d439da5b8b49a7c1da8e34984e2 --- .../wallpaper/asset/ExifInterfaceCompat.java | 8 +- .../wallpaper/backup/MissingHashCodeGenerator.java | 4 +- src/com/android/wallpaper/compat/BuildCompat.java | 109 --------------------- .../wallpaper/compat/WallpaperManagerCompat.java | 7 +- .../android/wallpaper/model/LiveWallpaperInfo.java | 4 +- .../module/DefaultWallpaperPersister.java | 6 +- .../module/DefaultWallpaperRefresher.java | 10 +- .../module/LockWallpaperStatusChecker.java | 4 +- .../module/RotationWallpaperUpdateReceiver.java | 4 +- .../wallpaper/picker/LivePreviewFragment.java | 4 +- .../wallpaper/picker/TopLevelPickerActivity.java | 3 +- .../android/wallpaper/util/DiskBasedLogger.java | 9 +- .../testing/TestCurrentWallpaperInfoFactory.java | 4 +- .../wallpaper/testing/TestWallpaperRefresher.java | 4 +- 14 files changed, 36 insertions(+), 144 deletions(-) delete mode 100755 src/com/android/wallpaper/compat/BuildCompat.java diff --git a/src/com/android/wallpaper/asset/ExifInterfaceCompat.java b/src/com/android/wallpaper/asset/ExifInterfaceCompat.java index 6b2938e..30e2a44 100644 --- a/src/com/android/wallpaper/asset/ExifInterfaceCompat.java +++ b/src/com/android/wallpaper/asset/ExifInterfaceCompat.java @@ -1,12 +1,12 @@ package com.android.wallpaper.asset; -import com.android.wallpaper.compat.BuildCompat; +import android.os.Build; + +import androidx.exifinterface.media.ExifInterface; import java.io.IOException; import java.io.InputStream; -import androidx.exifinterface.media.ExifInterface; - /** * Provides access to basic ExifInterface APIs using {@link android.media.ExifInterface} in OMR1+ * SDK or SupportLibrary's {@link ExifInterface} for earlier SDK versions. @@ -29,7 +29,7 @@ class ExifInterfaceCompat { public ExifInterfaceCompat(InputStream inputStream) throws IOException { // O-MR1 added support for more formats (HEIF), which Support Library cannot implement, // so use the framework version for SDK 27+ - if (BuildCompat.isAtLeastOMR1()) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) { mFrameworkExifInterface = new android.media.ExifInterface(inputStream); } else { mSupportExifInterface = new ExifInterface(inputStream); diff --git a/src/com/android/wallpaper/backup/MissingHashCodeGenerator.java b/src/com/android/wallpaper/backup/MissingHashCodeGenerator.java index f934fe7..0c16572 100755 --- a/src/com/android/wallpaper/backup/MissingHashCodeGenerator.java +++ b/src/com/android/wallpaper/backup/MissingHashCodeGenerator.java @@ -20,8 +20,8 @@ import android.app.WallpaperManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; +import android.os.Build; -import com.android.wallpaper.compat.BuildCompat; import com.android.wallpaper.module.Injector; import com.android.wallpaper.module.InjectorProvider; import com.android.wallpaper.module.WallpaperPreferences; @@ -42,7 +42,7 @@ public class MissingHashCodeGenerator extends BroadcastReceiver { // This receiver is a no-op on pre-N Android and should only respond to a MY_PACKAGE_REPLACED // intent. if (!intent.getAction().equals(Intent.ACTION_MY_PACKAGE_REPLACED) - || !BuildCompat.isAtLeastN()) { + || Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { return; } diff --git a/src/com/android/wallpaper/compat/BuildCompat.java b/src/com/android/wallpaper/compat/BuildCompat.java deleted file mode 100755 index fd1a1c5..0000000 --- a/src/com/android/wallpaper/compat/BuildCompat.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (C) 2017 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.wallpaper.compat; - -import android.os.Build; -import android.os.Build.VERSION; -import android.os.Build.VERSION_CODES; - -/** - * Provides the SDK version in a manner that can be stubbed out in a test environment. - */ -public class BuildCompat { - public static final int JB_MR2_SDK_VERSION = VERSION_CODES.JELLY_BEAN_MR2; - public static final int L_SDK_VERSION = VERSION_CODES.LOLLIPOP; - public static final int N_SDK_VERSION = Build.VERSION_CODES.N; - public static final int N_MR1_SDK_VERSION = Build.VERSION_CODES.N_MR1; - - private static int sSdk = Build.VERSION.SDK_INT; - - /** - * Returns whether the framework on the current Android device is JellyBean MR2 (API 18) or - * higher. Used to determine if it's safe to use APIs added in that API version such as - * HandlerThread#quitSafely. - */ - public static boolean isAtLeastJBMR2() { - return sSdk >= JB_MR2_SDK_VERSION; - } - - /** - * Returns whether the framework on the current Android device is L (API 21) or higher. Used to - * determine whether framework classes introduced in L such as JobScheduler can be used on this - * device. - */ - public static boolean isAtLeastL() { - return sSdk >= L_SDK_VERSION; - } - - /** - * Returns whether the framework on the current Android device is N or higher. Used to determine - * whether new N-specific wallpaper APIs are available. - */ - public static boolean isAtLeastN() { - return sSdk >= N_SDK_VERSION; - } - - /** - * Returns whether the framework on the current Android device is N-MR1 or higher. Used to - * determine whether new N-MR1-specific wallpaper APIs are available. - */ - public static boolean isAtLeastNMR1() { - return sSdk >= N_MR1_SDK_VERSION; - } - - /** - * Returns whether the framework on the current Android device is N-MR2 or higher. Used to - * determine if new N-MR2 specific API behavior is present on the device. - */ - public static boolean isAtLeastNMR2() { - return sSdk > N_MR1_SDK_VERSION - || (sSdk == N_MR1_SDK_VERSION && VERSION.RELEASE.equals("7.1.2")); - } - - /** - * Returns whether the framework on the current Android device is O or higher. - */ - public static boolean isAtLeastO() { - return sSdk >= Build.VERSION_CODES.O; - } - - /** - * Returns whether the framework on the current Android device is O-MR1 or higher. - */ - public static boolean isAtLeastOMR1() { - return sSdk >= VERSION_CODES.O_MR1; - } - - /** - * Sets the SDK version that BuildCompat will consider the current device to be on. Used for - * testing only. - */ - public static void setSdkVersionForTesting(int sdk) { - sSdk = sdk; - } - - public static boolean isAtLeastQ() { - return sSdk >= VERSION_CODES.Q; - } - - /** - * Returns whether the framework on the current Android device is S or higher. - */ - public static boolean isAtLeastS() { - return sSdk >= VERSION_CODES.S - || "S".equals(VERSION.CODENAME); // TODO: remove once build version for S is updated - } -} diff --git a/src/com/android/wallpaper/compat/WallpaperManagerCompat.java b/src/com/android/wallpaper/compat/WallpaperManagerCompat.java index ef834a1..c0b6a9e 100755 --- a/src/com/android/wallpaper/compat/WallpaperManagerCompat.java +++ b/src/com/android/wallpaper/compat/WallpaperManagerCompat.java @@ -20,13 +20,14 @@ import android.content.Context; import android.graphics.Bitmap; import android.graphics.Rect; import android.graphics.drawable.Drawable; +import android.os.Build; import android.os.ParcelFileDescriptor; +import androidx.annotation.IntDef; + import java.io.IOException; import java.io.InputStream; -import androidx.annotation.IntDef; - /** * An abstraction over WallpaperManager to allow for the transitional state in which the N SDK * is not yet ready but we need to use new N API methods. Provides wrapper methods for the new @@ -41,7 +42,7 @@ public abstract class WallpaperManagerCompat { public static WallpaperManagerCompat getInstance(Context context) { synchronized (sInstanceLock) { if (sInstance == null) { - if (BuildCompat.isAtLeastN()) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { sInstance = new WallpaperManagerCompatVN(context.getApplicationContext()); } else { sInstance = new WallpaperManagerCompatV16(context.getApplicationContext()); diff --git a/src/com/android/wallpaper/model/LiveWallpaperInfo.java b/src/com/android/wallpaper/model/LiveWallpaperInfo.java index 0bc467f..6b69a0c 100755 --- a/src/com/android/wallpaper/model/LiveWallpaperInfo.java +++ b/src/com/android/wallpaper/model/LiveWallpaperInfo.java @@ -24,6 +24,7 @@ import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.res.Resources; import android.net.Uri; +import android.os.Build; import android.os.Parcel; import android.service.wallpaper.WallpaperService; import android.text.TextUtils; @@ -35,7 +36,6 @@ import androidx.annotation.Nullable; import com.android.wallpaper.R; import com.android.wallpaper.asset.Asset; import com.android.wallpaper.asset.LiveWallpaperThumbAsset; -import com.android.wallpaper.compat.BuildCompat; import com.android.wallpaper.module.InjectorProvider; import com.android.wallpaper.module.LiveWallpaperInfoFactory; import com.android.wallpaper.util.ActivityUtils; @@ -354,7 +354,7 @@ public class LiveWallpaperInfo extends WallpaperInfo { @Override public String getActionUrl(Context context) { - if (BuildCompat.isAtLeastNMR1()) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) { try { Uri wallpaperContextUri = mInfo.loadContextUri(context.getPackageManager()); if (wallpaperContextUri != null) { diff --git a/src/com/android/wallpaper/module/DefaultWallpaperPersister.java b/src/com/android/wallpaper/module/DefaultWallpaperPersister.java index 0060f99..4892e6a 100755 --- a/src/com/android/wallpaper/module/DefaultWallpaperPersister.java +++ b/src/com/android/wallpaper/module/DefaultWallpaperPersister.java @@ -28,6 +28,7 @@ import android.graphics.PointF; import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.os.AsyncTask; +import android.os.Build; import android.os.ParcelFileDescriptor; import android.util.Log; import android.view.Display; @@ -41,7 +42,6 @@ import com.android.wallpaper.asset.Asset.DimensionsReceiver; import com.android.wallpaper.asset.BitmapUtils; import com.android.wallpaper.asset.StreamableAsset; import com.android.wallpaper.asset.StreamableAsset.StreamReceiver; -import com.android.wallpaper.compat.BuildCompat; import com.android.wallpaper.compat.WallpaperManagerCompat; import com.android.wallpaper.model.WallpaperInfo; import com.android.wallpaper.module.BitmapCropper.Callback; @@ -695,7 +695,7 @@ public class DefaultWallpaperPersister implements WallpaperPersister { && mWallpaperPreferences.getWallpaperPresentationMode() == WallpaperPreferences.PRESENTATION_MODE_ROTATING && !wasLockWallpaperSet - && BuildCompat.isAtLeastN()) { + && Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { copyRotatingWallpaperToLock(); } setImageWallpaperMetadata(mDestination, wallpaperId); @@ -785,7 +785,7 @@ public class DefaultWallpaperPersister implements WallpaperPersister { } private void setImageWallpaperHomeMetadata(int homeWallpaperId) { - if (BuildCompat.isAtLeastN()) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { mWallpaperPreferences.setHomeWallpaperManagerId(homeWallpaperId); } diff --git a/src/com/android/wallpaper/module/DefaultWallpaperRefresher.java b/src/com/android/wallpaper/module/DefaultWallpaperRefresher.java index d85e04e..5a43af1 100755 --- a/src/com/android/wallpaper/module/DefaultWallpaperRefresher.java +++ b/src/com/android/wallpaper/module/DefaultWallpaperRefresher.java @@ -22,12 +22,12 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; import android.os.AsyncTask; +import android.os.Build; import android.os.ParcelFileDescriptor; import android.util.Log; import com.android.wallpaper.R; import com.android.wallpaper.asset.BitmapUtils; -import com.android.wallpaper.compat.BuildCompat; import com.android.wallpaper.compat.WallpaperManagerCompat; import com.android.wallpaper.model.WallpaperMetadata; @@ -101,7 +101,9 @@ public class DefaultWallpaperRefresher implements WallpaperRefresher { boolean isLockScreenWallpaperCurrentlySet = LockWallpaperStatusChecker .isLockWallpaperSet(mAppContext); - if (!BuildCompat.isAtLeastN() || !isLockScreenWallpaperCurrentlySet) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N + || !isLockScreenWallpaperCurrentlySet) { + // Return only home metadata if pre-N device or lock screen wallpaper is not explicitly set. wallpaperMetadatas.add(new WallpaperMetadata( mWallpaperPreferences.getHomeWallpaperAttributions(), @@ -164,7 +166,7 @@ public class DefaultWallpaperRefresher implements WallpaperRefresher { Arrays.asList(mAppContext.getResources().getString(R.string.fallback_wallpaper_title))); // Set wallpaper ID if at least N or set a hash code if an earlier version of Android. - if (BuildCompat.isAtLeastN()) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { mWallpaperPreferences.setHomeWallpaperManagerId(mWallpaperManagerCompat.getWallpaperId( WallpaperManagerCompat.FLAG_SYSTEM)); } else { @@ -277,7 +279,7 @@ public class DefaultWallpaperRefresher implements WallpaperRefresher { // Use WallpaperManager IDs to check same-ness of image wallpaper on N+ versions of Android // only when there is no saved bitmap hash code (which could be leftover from a previous build // of the app that did not use wallpaper IDs). - if (BuildCompat.isAtLeastN() && savedBitmapHash == 0) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && savedBitmapHash == 0) { return mWallpaperPreferences.getHomeWallpaperManagerId() == mWallpaperManagerCompat.getWallpaperId(WallpaperManagerCompat.FLAG_SYSTEM); } diff --git a/src/com/android/wallpaper/module/LockWallpaperStatusChecker.java b/src/com/android/wallpaper/module/LockWallpaperStatusChecker.java index 2ae93b0..754c95a 100755 --- a/src/com/android/wallpaper/module/LockWallpaperStatusChecker.java +++ b/src/com/android/wallpaper/module/LockWallpaperStatusChecker.java @@ -16,10 +16,10 @@ package com.android.wallpaper.module; import android.content.Context; +import android.os.Build; import android.os.ParcelFileDescriptor; import android.util.Log; -import com.android.wallpaper.compat.BuildCompat; import com.android.wallpaper.compat.WallpaperManagerCompat; import java.io.IOException; @@ -37,7 +37,7 @@ public class LockWallpaperStatusChecker { */ public static boolean isLockWallpaperSet(Context context) { // Lock screen wallpapers are not supported until Android N. - if (!BuildCompat.isAtLeastN()) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { return false; } diff --git a/src/com/android/wallpaper/module/RotationWallpaperUpdateReceiver.java b/src/com/android/wallpaper/module/RotationWallpaperUpdateReceiver.java index 4fbc20d..c372d25 100644 --- a/src/com/android/wallpaper/module/RotationWallpaperUpdateReceiver.java +++ b/src/com/android/wallpaper/module/RotationWallpaperUpdateReceiver.java @@ -20,8 +20,8 @@ import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; +import android.os.Build; -import com.android.wallpaper.compat.BuildCompat; import com.android.wallpaper.util.DiskBasedLogger; import com.android.wallpaper.util.FileMover; @@ -46,7 +46,7 @@ public class RotationWallpaperUpdateReceiver extends BroadcastReceiver { if (intent.getAction() == null || !(intent.getAction().equals(Intent.ACTION_MY_PACKAGE_REPLACED) || intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) - || !BuildCompat.isAtLeastN()) { + || Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { DiskBasedLogger.e( TAG, "Unexpected action or Android version!", diff --git a/src/com/android/wallpaper/picker/LivePreviewFragment.java b/src/com/android/wallpaper/picker/LivePreviewFragment.java index 84ad2df..aba453f 100644 --- a/src/com/android/wallpaper/picker/LivePreviewFragment.java +++ b/src/com/android/wallpaper/picker/LivePreviewFragment.java @@ -37,6 +37,7 @@ import android.graphics.Point; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.net.Uri; +import android.os.Build; import android.os.Bundle; import android.os.RemoteException; import android.service.wallpaper.IWallpaperConnection; @@ -63,7 +64,6 @@ import androidx.slice.widget.SliceLiveData; import androidx.slice.widget.SliceView; import com.android.wallpaper.R; -import com.android.wallpaper.compat.BuildCompat; import com.android.wallpaper.module.WallpaperPersister.SetWallpaperCallback; import com.android.wallpaper.util.FullScreenAnimation; import com.android.wallpaper.util.ResourceUtils; @@ -490,7 +490,7 @@ public class LivePreviewFragment extends PreviewFragment implements @SuppressLint("NewApi") //Already checking with isAtLeastQ protected Uri getSettingsSliceUri(android.app.WallpaperInfo info) { - if (BuildCompat.isAtLeastQ()) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { return info.getSettingsSliceUri(); } return null; diff --git a/src/com/android/wallpaper/picker/TopLevelPickerActivity.java b/src/com/android/wallpaper/picker/TopLevelPickerActivity.java index f55a2f3..7fe51df 100755 --- a/src/com/android/wallpaper/picker/TopLevelPickerActivity.java +++ b/src/com/android/wallpaper/picker/TopLevelPickerActivity.java @@ -48,7 +48,6 @@ import androidx.fragment.app.FragmentManager; import com.android.wallpaper.R; import com.android.wallpaper.asset.Asset; -import com.android.wallpaper.compat.BuildCompat; import com.android.wallpaper.compat.ButtonDrawableSetterCompat; import com.android.wallpaper.config.Flags; import com.android.wallpaper.model.Category; @@ -275,7 +274,7 @@ public class TopLevelPickerActivity extends BaseActivity implements WallpapersUi view.getPaddingRight(), view.getPaddingBottom()); // Consume only the top inset (status bar), to let other content in the Activity consume // the nav bar (ie, by using "fitSystemWindows") - if (BuildCompat.isAtLeastQ()) { + if (VERSION.SDK_INT >= VERSION_CODES.Q) { WindowInsets.Builder builder = new WindowInsets.Builder(windowInsets); builder.setSystemWindowInsets(Insets.of(windowInsets.getSystemWindowInsetLeft(), 0, windowInsets.getStableInsetRight(), diff --git a/src/com/android/wallpaper/util/DiskBasedLogger.java b/src/com/android/wallpaper/util/DiskBasedLogger.java index 5111376..350aaff 100755 --- a/src/com/android/wallpaper/util/DiskBasedLogger.java +++ b/src/com/android/wallpaper/util/DiskBasedLogger.java @@ -24,7 +24,8 @@ import android.os.HandlerThread; import android.os.Process; import android.util.Log; -import com.android.wallpaper.compat.BuildCompat; +import androidx.annotation.Nullable; +import androidx.annotation.VisibleForTesting; import java.io.BufferedReader; import java.io.Closeable; @@ -41,9 +42,6 @@ import java.util.Date; import java.util.Locale; import java.util.concurrent.TimeUnit; -import androidx.annotation.Nullable; -import androidx.annotation.VisibleForTesting; - /** * Logs messages to logcat and for debuggable build types ("eng" or "userdebug") also mirrors logs * to a disk-based log buffer. @@ -72,7 +70,8 @@ public class DiskBasedLogger { if (sLoggerThread != null && sLoggerThread.isAlive()) { // HandlerThread#quitSafely was added in JB-MR2, so prefer to use that instead of #quit. - boolean isQuitSuccessful = BuildCompat.isAtLeastJBMR2() + boolean isQuitSuccessful = + Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2 ? sLoggerThread.quitSafely() : sLoggerThread.quit(); diff --git a/tests/src/com/android/wallpaper/testing/TestCurrentWallpaperInfoFactory.java b/tests/src/com/android/wallpaper/testing/TestCurrentWallpaperInfoFactory.java index 3e8c665..63cdf29 100644 --- a/tests/src/com/android/wallpaper/testing/TestCurrentWallpaperInfoFactory.java +++ b/tests/src/com/android/wallpaper/testing/TestCurrentWallpaperInfoFactory.java @@ -16,8 +16,8 @@ package com.android.wallpaper.testing; import android.content.Context; +import android.os.Build; -import com.android.wallpaper.compat.BuildCompat; import com.android.wallpaper.model.WallpaperInfo; import com.android.wallpaper.module.CurrentWallpaperInfoFactory; import com.android.wallpaper.module.InjectorProvider; @@ -48,7 +48,7 @@ public class TestCurrentWallpaperInfoFactory implements CurrentWallpaperInfoFact homeWallpaperMetadata.getCollectionId()); WallpaperInfo lockWallpaper = null; - if (lockWallpaperMetadata != null && BuildCompat.isAtLeastN()) { + if (lockWallpaperMetadata != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { lockWallpaper = createTestWallpaperInfo( lockWallpaperMetadata.getAttributions(), lockWallpaperMetadata.getActionUrl(), diff --git a/tests/src/com/android/wallpaper/testing/TestWallpaperRefresher.java b/tests/src/com/android/wallpaper/testing/TestWallpaperRefresher.java index 97961fe..558c3cb 100644 --- a/tests/src/com/android/wallpaper/testing/TestWallpaperRefresher.java +++ b/tests/src/com/android/wallpaper/testing/TestWallpaperRefresher.java @@ -18,8 +18,8 @@ package com.android.wallpaper.testing; import android.app.WallpaperManager; import android.content.Context; +import android.os.Build; -import com.android.wallpaper.compat.BuildCompat; import com.android.wallpaper.model.WallpaperMetadata; import com.android.wallpaper.module.InjectorProvider; import com.android.wallpaper.module.WallpaperPreferences; @@ -45,7 +45,7 @@ public class TestWallpaperRefresher implements WallpaperRefresher { WallpaperPreferences prefs = InjectorProvider.getInjector().getPreferences(mAppContext); - if (BuildCompat.isAtLeastN() && prefs.getLockWallpaperId() > 0) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && prefs.getLockWallpaperId() > 0) { listener.onRefreshed( new WallpaperMetadata( prefs.getHomeWallpaperAttributions(), -- cgit v1.2.3 From a80f384b892aed3f36653ac1024bd9803c98570c Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Sat, 22 May 2021 13:21:18 +0000 Subject: Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I9ce69cb0a86434c847e281cf8038ce8a420c108b --- res/values-as/strings.xml | 6 ++---- res/values-bn/strings.xml | 6 ++---- res/values-es-rUS/strings.xml | 4 ++-- res/values-gu/strings.xml | 6 ++---- res/values-te/strings.xml | 6 ++---- 5 files changed, 10 insertions(+), 18 deletions(-) diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml index 14c3080..1649415 100644 --- a/res/values-as/strings.xml +++ b/res/values-as/strings.xml @@ -94,8 +94,6 @@ "ৱালপেপাৰ" "ৱালপেপাৰৰ পূৰ্বদৰ্শন" "এই সংগ্ৰহটোৰ অস্তিত্ব নাই" - - - - + "UIৰ পূৰ্বদৰ্শন লুকুৱাওক" + "UIৰ পূৰ্বদৰ্শন দেখুৱাওক" diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml index 79b16ae..3c8a345 100644 --- a/res/values-bn/strings.xml +++ b/res/values-bn/strings.xml @@ -94,8 +94,6 @@ "ওয়ালপেপার" "ওয়ালপেপার প্রিভিউ করুন" "কালেকশন উপলভ্য নেই" - - - - + "UI প্রিভিউ লুকান" + "UI প্রিভিউ দেখুন" diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index eac521c..b81d3a7 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -30,11 +30,11 @@ "Fondo de pantalla diario" "Pantalla principal y de bloqueo" "Pantalla principal" - "Pantalla bloqueada" + "Pantalla de bloqueo" "Pantalla principal y bloqueada" "Establecer como fondo de pantalla en" "Pantalla principal" - "Pantalla bloqueada" + "Pantalla de bloqueo" "Página principal y bloqueada" "Fondo de pantalla rotatorio con imágenes" "Para mostrar el fondo de pantalla actual aquí, %1$s necesita acceso al almacenamiento de tu dispositivo." diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml index 8035baa..8eabd24 100644 --- a/res/values-gu/strings.xml +++ b/res/values-gu/strings.xml @@ -94,8 +94,6 @@ "વૉલપેપર" "વૉલપેપરનો પ્રીવ્યૂ કરો" "સંગ્રહ અસ્તિત્વમાં નથી" - - - - + "UIનો પ્રીવ્યૂ છુપાવો" + "UIનો પ્રીવ્યૂ બતાવો" diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml index 2e7c3d4..a43d84c 100644 --- a/res/values-te/strings.xml +++ b/res/values-te/strings.xml @@ -94,8 +94,6 @@ "వాల్‌పేపర్" "వాల్‌పేపర్ ప్రివ్యూ" "ఈ సేకరణ అందుబాటులో లేదు" - - - - + "UI ప్రివ్యూని దాచిపెట్టు" + "UI ప్రివ్యూని చూపించు" -- cgit v1.2.3 From 0f1c1fd586b41c4e33a518879ac2ee6db1ee7186 Mon Sep 17 00:00:00 2001 From: Kunhung Li Date: Sun, 23 May 2021 13:05:22 +0800 Subject: Fix toolbar up arrow does not align RTL mode Change up arrow icon can be automatically mirrored. Screenshot: https://screenshot.googleplex.com/8kP2mqWZ523AmqW https://screenshot.googleplex.com/8sr6X37qaZkGMQT https://screenshot.googleplex.com/7bb5LXYxiyJoWic https://screenshot.googleplex.com/9aXuxYHQvHSjzaf Bug: 188381323 Test: manual Change-Id: I0b79614ce6de9556fb9e5c1d3cd349fa3e87d53c --- src/com/android/wallpaper/picker/AppbarFragment.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/com/android/wallpaper/picker/AppbarFragment.java b/src/com/android/wallpaper/picker/AppbarFragment.java index e74ecbe..2faac76 100644 --- a/src/com/android/wallpaper/picker/AppbarFragment.java +++ b/src/com/android/wallpaper/picker/AppbarFragment.java @@ -152,6 +152,7 @@ public abstract class AppbarFragment extends BottomActionBarFragment private void setUpUpArrow() { Drawable backIcon = getResources().getDrawable(R.drawable.material_ic_arrow_back_black_24, null).mutate(); + backIcon.setAutoMirrored(true); backIcon.setTint( ResourceUtils.getColorAttr(getActivity(), android.R.attr.textColorPrimary)); mToolbar.setNavigationIcon(backIcon); -- cgit v1.2.3 From 66438874728daa086fe25d9f14c28fa6ab06ad53 Mon Sep 17 00:00:00 2001 From: Chuck Liao Date: Fri, 21 May 2021 19:58:56 +0800 Subject: Remove the options menu related APIs Remove the useless options menu related code in the full preview, otherwise it will cause Java crash (IllegalStateException) in some situation(b/188810523). Bug: 188810523 Test: manual Change-Id: I4533b956c3ff71b1dd17b9249229edc4fe0915ed --- src/com/android/wallpaper/picker/ImagePreviewFragment.java | 1 - src/com/android/wallpaper/picker/PreviewFragment.java | 2 -- 2 files changed, 3 deletions(-) diff --git a/src/com/android/wallpaper/picker/ImagePreviewFragment.java b/src/com/android/wallpaper/picker/ImagePreviewFragment.java index 089c93b..2becd49 100755 --- a/src/com/android/wallpaper/picker/ImagePreviewFragment.java +++ b/src/com/android/wallpaper/picker/ImagePreviewFragment.java @@ -372,7 +372,6 @@ public class ImagePreviewFragment extends PreviewFragment { }); mFullResImageView.post(this::recalculateColors); } - getActivity().invalidateOptionsMenu(); }); mFullResImageView.setOnTouchListener((v, ev) -> { diff --git a/src/com/android/wallpaper/picker/PreviewFragment.java b/src/com/android/wallpaper/picker/PreviewFragment.java index 9a09264..9fa56dd 100755 --- a/src/com/android/wallpaper/picker/PreviewFragment.java +++ b/src/com/android/wallpaper/picker/PreviewFragment.java @@ -171,8 +171,6 @@ public abstract class PreviewFragment extends AppbarFragment implements mWallpaperSetter = new WallpaperSetter(injector.getWallpaperPersister(appContext), injector.getPreferences(appContext), mUserEventLogger, mTestingModeEnabled); - setHasOptionsMenu(true); - Activity activity = getActivity(); List attributions = getAttributions(activity); if (attributions.size() > 0 && attributions.get(0) != null) { -- cgit v1.2.3 From 6006b589e4b0dc5884f0e14cbd1c155458e00ebd Mon Sep 17 00:00:00 2001 From: Chihhang Chuang Date: Tue, 25 May 2021 14:15:28 +0800 Subject: Update text contrast for option title Screenshot: https://screenshot.googleplex.com/4kDeDJyFmoCZ3wc.png Fixes: 187386422 Test: Manually Change-Id: I076f5610c3c68d8a3ed28c5c73cf2c573a11dbfd --- res/color/option_title_color.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/res/color/option_title_color.xml b/res/color/option_title_color.xml index 6166f4d..3241d8e 100644 --- a/res/color/option_title_color.xml +++ b/res/color/option_title_color.xml @@ -20,7 +20,7 @@ android:color="?android:textColorPrimary" /> + android:color="?android:textColorSecondary" /> + android:color="?android:textColorSecondary"/> -- cgit v1.2.3 From 5d94cb6cd8add9fbb321b61bbac0aadf9b2a0f70 Mon Sep 17 00:00:00 2001 From: Chihhang Chuang Date: Tue, 25 May 2021 18:10:22 +0800 Subject: Fix null context IllegalStateException received from recalculating colors Fixes: 189061825 Test: Manually Change-Id: I9d1ccb118a09330485972cb52fb9d5899ba3ef2c --- .../wallpaper/picker/ImagePreviewFragment.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/com/android/wallpaper/picker/ImagePreviewFragment.java b/src/com/android/wallpaper/picker/ImagePreviewFragment.java index 2becd49..d4c8ef5 100755 --- a/src/com/android/wallpaper/picker/ImagePreviewFragment.java +++ b/src/com/android/wallpaper/picker/ImagePreviewFragment.java @@ -386,9 +386,16 @@ public class ImagePreviewFragment extends PreviewFragment { } private void recalculateColors() { + Context context = getContext(); + if (context == null) { + Log.e(TAG, "Got null context, skip recalculating colors"); + return; + } + BitmapCropper bitmapCropper = InjectorProvider.getInjector().getBitmapCropper(); bitmapCropper.cropAndScaleBitmap(mWallpaperAsset, mFullResImageView.getScale(), - calculateCropRect(), /* adjustForRtl= */ false, new BitmapCropper.Callback() { + calculateCropRect(context), /* adjustForRtl= */ false, + new BitmapCropper.Callback() { @Override public void onBitmapCropped(Bitmap croppedBitmap) { onWallpaperColorsChanged(WallpaperColors.fromBitmap(croppedBitmap)); @@ -495,9 +502,9 @@ public class ImagePreviewFragment extends PreviewFragment { mFullResImageView.setScaleAndCenter(minWallpaperZoom, centerPosition); } - private Rect calculateCropRect() { + private Rect calculateCropRect(Context context) { float wallpaperZoom = mFullResImageView.getScale(); - Context context = requireContext().getApplicationContext(); + Context appContext = context.getApplicationContext(); Rect visibleFileRect = new Rect(); mFullResImageView.visibleFileRect(visibleFileRect); @@ -508,10 +515,10 @@ public class ImagePreviewFragment extends PreviewFragment { int minCrop = Math.min(cropWidth, cropHeight); Point hostViewSize = new Point(cropWidth, cropHeight); - Resources res = context.getResources(); + Resources res = appContext.getResources(); Point cropSurfaceSize = WallpaperCropUtils.calculateCropSurfaceSize(res, maxCrop, minCrop); - Rect cropRect = WallpaperCropUtils.calculateCropRect(context, hostViewSize, + Rect cropRect = WallpaperCropUtils.calculateCropRect(appContext, hostViewSize, cropSurfaceSize, mRawWallpaperSize, visibleFileRect, wallpaperZoom); return cropRect; } @@ -519,7 +526,7 @@ public class ImagePreviewFragment extends PreviewFragment { @Override protected void setCurrentWallpaper(@Destination int destination) { mWallpaperSetter.setCurrentWallpaper(getActivity(), mWallpaper, mWallpaperAsset, - destination, mFullResImageView.getScale(), calculateCropRect(), + destination, mFullResImageView.getScale(), calculateCropRect(getContext()), new SetWallpaperCallback() { @Override public void onSuccess(WallpaperInfo wallpaperInfo) { -- cgit v1.2.3 From ee027215d87895425e2cf7105415d80c3b0b62d8 Mon Sep 17 00:00:00 2001 From: Kunhung Li Date: Fri, 7 May 2021 12:11:54 +0800 Subject: Refine launch Settings scope Settings related launch scope should cover Settings search. Bug: 188631495 Test: manual Change-Id: I1c03c93f0ee8e85dc564a780bd52465c6de181f1 --- src/com/android/wallpaper/util/ActivityUtils.java | 25 ++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/com/android/wallpaper/util/ActivityUtils.java b/src/com/android/wallpaper/util/ActivityUtils.java index 833e60a..c4d49f8 100755 --- a/src/com/android/wallpaper/util/ActivityUtils.java +++ b/src/com/android/wallpaper/util/ActivityUtils.java @@ -15,6 +15,7 @@ */ package com.android.wallpaper.util; +import static com.android.wallpaper.util.LaunchSourceUtils.LAUNCH_SETTINGS_SEARCH; import static com.android.wallpaper.util.LaunchSourceUtils.LAUNCH_SOURCE_SETTINGS; import static com.android.wallpaper.util.LaunchSourceUtils.WALLPAPER_LAUNCH_SOURCE; @@ -59,17 +60,35 @@ public final class ActivityUtils { } /** - * Return true if wallpaper launch source is from Settings. + * Returns true if wallpaper launch source is from Settings related. * * @param intent activity intent. */ - public static boolean isLaunchedFromSettings(Intent intent) { + public static boolean isLaunchedFromSettingsRelated(Intent intent) { + return isLaunchedFromSettings(intent) || isLaunchedFromSettingsSearch(intent); + } + + /** + * Returns true if wallpaper launch source is from Settings. + * + * @param intent activity intent. + */ + private static boolean isLaunchedFromSettings(Intent intent) { return (intent != null && TextUtils.equals(LAUNCH_SOURCE_SETTINGS, intent.getStringExtra(WALLPAPER_LAUNCH_SOURCE))); } /** - * Return true if wallpaper is in SUW mode. + * Returns true if wallpaper launch source is from Settings Search. + * + * @param intent activity intent. + */ + private static boolean isLaunchedFromSettingsSearch(Intent intent) { + return (intent != null && intent.hasExtra(LAUNCH_SETTINGS_SEARCH)); + } + + /** + * Returns true if wallpaper is in SUW mode. * * @param context activity's context. */ -- cgit v1.2.3 From b85fdba0c3829320e48936cc6287b97b11db9326 Mon Sep 17 00:00:00 2001 From: Santiago Etchebehere Date: Wed, 26 May 2021 20:41:32 -0700 Subject: Update the color of the checkmark to spec Bug: 189382737 Test: manual Change-Id: I7f8b94bb32d98b185f35922f53f2e19f22d1667a --- res/drawable/ic_check_24dp.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/drawable/ic_check_24dp.xml b/res/drawable/ic_check_24dp.xml index 737ef28..63c2a0c 100644 --- a/res/drawable/ic_check_24dp.xml +++ b/res/drawable/ic_check_24dp.xml @@ -4,6 +4,6 @@ android:viewportWidth="24" android:viewportHeight="24"> -- cgit v1.2.3 From 18fb4ed0416326feeefdd45cbcd1633cc1fc9a8c Mon Sep 17 00:00:00 2001 From: Chihhang Chuang Date: Thu, 27 May 2021 11:58:23 +0800 Subject: Add container for full preview buttons Bug: 189392144 Test: Manually Change-Id: Ie3c2188e981c8bec6aaf8fbcebc57fd0c6924b49 --- res/layout/fragment_image_preview_v2.xml | 10 +++++++++- res/layout/fragment_live_preview_v2.xml | 10 +++++++++- res/layout/fullscreen_buttons.xml | 3 --- src/com/android/wallpaper/picker/PreviewFragment.java | 12 +++++++++--- src/com/android/wallpaper/util/FullScreenAnimation.java | 2 +- 5 files changed, 28 insertions(+), 9 deletions(-) diff --git a/res/layout/fragment_image_preview_v2.xml b/res/layout/fragment_image_preview_v2.xml index dabe47f..845c504 100644 --- a/res/layout/fragment_image_preview_v2.xml +++ b/res/layout/fragment_image_preview_v2.xml @@ -95,7 +95,15 @@ - + + + diff --git a/res/layout/fragment_live_preview_v2.xml b/res/layout/fragment_live_preview_v2.xml index f773e8d..a2eefba 100644 --- a/res/layout/fragment_live_preview_v2.xml +++ b/res/layout/fragment_live_preview_v2.xml @@ -75,7 +75,15 @@ - + + + diff --git a/res/layout/fullscreen_buttons.xml b/res/layout/fullscreen_buttons.xml index 663e962..151d423 100644 --- a/res/layout/fullscreen_buttons.xml +++ b/res/layout/fullscreen_buttons.xml @@ -18,9 +18,6 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="@dimen/pill_tabs_height" android:layout_width="match_parent" - android:layout_gravity="bottom|center" - android:layout_marginBottom="@dimen/fullscreen_preview_button_margin" - android:paddingHorizontal="@dimen/pill_tabs_horizontal_margin" android:orientation="horizontal" android:weightSum="2"> diff --git a/src/com/android/wallpaper/picker/PreviewFragment.java b/src/com/android/wallpaper/picker/PreviewFragment.java index 9fa56dd..2b530b1 100755 --- a/src/com/android/wallpaper/picker/PreviewFragment.java +++ b/src/com/android/wallpaper/picker/PreviewFragment.java @@ -214,18 +214,24 @@ public abstract class PreviewFragment extends AppbarFragment implements super.onBottomActionBarReady(bottomActionBar); mBottomActionBar = bottomActionBar; // TODO: Extract the common code here. - setBottomActionBarAndToolbarActions(); + setBottomActionBarAndFullScreenActions(); } - private void setBottomActionBarAndToolbarActions() { + private void setBottomActionBarAndFullScreenActions() { mBottomActionBar.setActionClickListener(EDIT, (view) -> { mFullScreenAnimation.startAnimation(/* toFullScreen= */ true); mBottomActionBar.deselectAction(EDIT); }); - mRootView.findViewById(R.id.hide_ui_preview_button).setOnClickListener( + // Update the button text for the current workspace visibility. + Button hideUiPreviewButton = mRootView.findViewById(R.id.hide_ui_preview_button); + hideUiPreviewButton.setText(mFullScreenAnimation.getWorkspaceVisibility() + ? R.string.hide_ui_preview_text + : R.string.show_ui_preview_text); + hideUiPreviewButton.setOnClickListener( (button) -> { boolean visible = mFullScreenAnimation.getWorkspaceVisibility(); + // Update the button text for the next workspace visibility. ((Button) button).setText(visible ? R.string.show_ui_preview_text : R.string.hide_ui_preview_text); diff --git a/src/com/android/wallpaper/util/FullScreenAnimation.java b/src/com/android/wallpaper/util/FullScreenAnimation.java index cad62be..a2ed8b0 100644 --- a/src/com/android/wallpaper/util/FullScreenAnimation.java +++ b/src/com/android/wallpaper/util/FullScreenAnimation.java @@ -423,7 +423,7 @@ public class FullScreenAnimation { "translationY", bottomActionBarTranslation), ObjectAnimator.ofFloat(mView.findViewById(R.id.pill_tabs_container), "translationY", bottomActionBarTranslation), - ObjectAnimator.ofFloat(mView.findViewById(R.id.fullscreen_buttons), + ObjectAnimator.ofFloat(mView.findViewById(R.id.fullscreen_buttons_container), "translationY", pillButtonsTranslation), animationRounding, animationHide -- cgit v1.2.3 From 2fee38bcc5182ab34ad3276204abdd8de5e44b26 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Thu, 27 May 2021 05:25:08 +0000 Subject: Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I0f090ac81d2e4fa3d20eac809be3dd694daff228 --- res/values-zh-rTW/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 845637e..c2b99ad 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -29,11 +29,11 @@ "目前設定的桌布" "每日桌布" "主螢幕和螢幕鎖定" - "主螢幕" + "主畫面" "螢幕鎖定" "主螢幕和螢幕鎖定" "設定以下畫面的桌布:" - "主螢幕" + "主畫面" "螢幕鎖定" "主畫面和螢幕鎖定畫面" "輪播圖片桌布" -- cgit v1.2.3 From 724a03cf44c5551d6a8cbf7c0a90660465203f09 Mon Sep 17 00:00:00 2001 From: Ching-Sung Li Date: Thu, 27 May 2021 16:05:05 +0800 Subject: Post workspace preview request task as Runnable Bug: 189410297 Test: Manual Change-Id: Iffa7a301d17c606be93288ff77945b06f1da3c9c --- .../picker/WorkspaceSurfaceHolderCallback.java | 23 +++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/com/android/wallpaper/picker/WorkspaceSurfaceHolderCallback.java b/src/com/android/wallpaper/picker/WorkspaceSurfaceHolderCallback.java index b534276..5deee5e 100644 --- a/src/com/android/wallpaper/picker/WorkspaceSurfaceHolderCallback.java +++ b/src/com/android/wallpaper/picker/WorkspaceSurfaceHolderCallback.java @@ -97,16 +97,21 @@ public class WorkspaceSurfaceHolderCallback implements SurfaceHolder.Callback { if ((mShouldUseWallpaperColors && !mIsWallpaperColorsReady) || mLastSurface == null) { return; } - Bundle result = requestPreview(mWorkspaceSurface); - if (result != null) { - mWorkspaceSurface.setChildSurfacePackage( - SurfaceViewUtils.getSurfacePackage(result)); - mCallback = SurfaceViewUtils.getCallback(result); - - if (mNeedsToCleanUp) { - cleanUp(); + mWorkspaceSurface.post(() -> { + if (mWorkspaceSurface == null) { + return; } - } + Bundle result = requestPreview(mWorkspaceSurface); + if (result != null) { + mWorkspaceSurface.setChildSurfacePackage( + SurfaceViewUtils.getSurfacePackage(result)); + mCallback = SurfaceViewUtils.getCallback(result); + + if (mNeedsToCleanUp) { + cleanUp(); + } + } + }); } @Override -- cgit v1.2.3 From b69e993ce5e859613f1a63122ddb312e369b5428 Mon Sep 17 00:00:00 2001 From: Ching-Sung Li Date: Tue, 25 May 2021 20:03:01 +0800 Subject: Add indicator badge to decorate grid item Bug: 188734434 Test: Manual Change-Id: Id7d54172af1a0e08d87fe93fc1336912513130d3 --- res/drawable/ic_download_badge.xml | 17 +++++++++++++++++ res/layout/grid_item_image.xml | 9 +++++++++ res/values/dimens.xml | 6 ++++++ .../picker/individual/IndividualPickerFragment.java | 4 ++-- 4 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 res/drawable/ic_download_badge.xml diff --git a/res/drawable/ic_download_badge.xml b/res/drawable/ic_download_badge.xml new file mode 100644 index 0000000..2947bc4 --- /dev/null +++ b/res/drawable/ic_download_badge.xml @@ -0,0 +1,17 @@ + + + + + + + + + + \ No newline at end of file diff --git a/res/layout/grid_item_image.xml b/res/layout/grid_item_image.xml index 2524b68..f111062 100755 --- a/res/layout/grid_item_image.xml +++ b/res/layout/grid_item_image.xml @@ -62,6 +62,15 @@ android:layout_height="wrap_content" android:layout_centerInParent="true" /> + + 12dp 18dp + + 24dp + 16dp + 8dp + 12dp + 16dp 16dp diff --git a/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java b/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java index 85171d6..84f2e7a 100755 --- a/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java +++ b/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java @@ -598,7 +598,7 @@ public class IndividualPickerFragment extends AppbarFragment mImageGrid, (BottomSheetHost) getParentFragment(), getNumColumns())); } - private boolean isFewerColumnLayout() { + boolean isFewerColumnLayout() { return mWallpapers != null && mWallpapers.size() <= MAX_CAPACITY_IN_FEWER_COLUMN_LAYOUT; } @@ -1142,7 +1142,7 @@ public class IndividualPickerFragment extends AppbarFragment } } - private boolean shouldShowRotationTile() { + boolean shouldShowRotationTile() { return mFormFactor == FormFactorChecker.FORM_FACTOR_DESKTOP && isRotationEnabled(); } -- cgit v1.2.3 From db7a378d77b9135585ecb8cbf98ca4d1ee891cbf Mon Sep 17 00:00:00 2001 From: Chuck Liao Date: Mon, 31 May 2021 19:57:42 +0800 Subject: Update font family for setting wallpaper dialog Screenshots Before: https://screenshot.googleplex.com/68kE9gmdL6BDdi8.png After: https://screenshot.googleplex.com/5Ld2ZukmnJ4HNea.png Bug: 188492647 Test: manual Change-Id: Ibb54d8891f2bf5990c1bad1bfb9eedf25dcb7b5d --- res/values/styles.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/res/values/styles.xml b/res/values/styles.xml index 893ea49..13aceeb 100755 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -143,6 +143,7 @@ diff --git a/src/com/android/wallpaper/asset/LiveWallpaperThumbAsset.java b/src/com/android/wallpaper/asset/LiveWallpaperThumbAsset.java index 30bf566..3d59d1c 100755 --- a/src/com/android/wallpaper/asset/LiveWallpaperThumbAsset.java +++ b/src/com/android/wallpaper/asset/LiveWallpaperThumbAsset.java @@ -32,7 +32,10 @@ import android.widget.ImageView; import com.bumptech.glide.Glide; import com.bumptech.glide.load.Key; +import com.bumptech.glide.load.MultiTransformation; import com.bumptech.glide.load.engine.DiskCacheStrategy; +import com.bumptech.glide.load.resource.bitmap.BitmapTransformation; +import com.bumptech.glide.load.resource.bitmap.FitCenter; import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions; import com.bumptech.glide.request.RequestOptions; @@ -106,6 +109,19 @@ public class LiveWallpaperThumbAsset extends Asset { .into(imageView); } + @Override + public void loadLowResDrawable(Activity activity, ImageView imageView, int placeholderColor, + BitmapTransformation transformation) { + MultiTransformation multiTransformation = + new MultiTransformation(new FitCenter(), transformation); + Glide.with(activity) + .asDrawable() + .load(LiveWallpaperThumbAsset.this) + .apply(RequestOptions.bitmapTransform(multiTransformation) + .placeholder(new ColorDrawable(placeholderColor))) + .into(imageView); + } + /** * Returns a Glide cache key. */ diff --git a/src/com/android/wallpaper/picker/LivePreviewFragment.java b/src/com/android/wallpaper/picker/LivePreviewFragment.java index 84ad2df..b92170e 100644 --- a/src/com/android/wallpaper/picker/LivePreviewFragment.java +++ b/src/com/android/wallpaper/picker/LivePreviewFragment.java @@ -103,10 +103,14 @@ public class LivePreviewFragment extends PreviewFragment implements protected WallpaperInfoView mWallpaperInfoView; protected CardView mHomePreviewCard; protected ImageView mHomePreview; + protected SurfaceView mWorkspaceSurface; + protected WallpaperSurfaceCallback mWallpaperSurfaceCallback; + protected WorkspaceSurfaceHolderCallback mWorkspaceSurfaceCallback; + protected ViewGroup mLockPreviewContainer; + protected LockScreenPreviewer2 mLockScreenPreviewer; private Intent mDeleteIntent; private Intent mSettingsIntent; - private SliceView mSettingsSliceView; private LiveData mSettingsLiveData; private View mLoadingScrim; @@ -114,14 +118,8 @@ public class LivePreviewFragment extends PreviewFragment implements private ViewGroup mPreviewContainer; private TouchForwardingLayout mTouchForwardingLayout; private SurfaceView mWallpaperSurface; - private WallpaperSurfaceCallback mWallpaperSurfaceCallback; private Optional mLastSelectedTabPositionOptional = Optional.empty(); - protected SurfaceView mWorkspaceSurface; - protected WorkspaceSurfaceHolderCallback mWorkspaceSurfaceCallback; - protected ViewGroup mLockPreviewContainer; - protected LockScreenPreviewer2 mLockScreenPreviewer; - @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -165,6 +163,7 @@ public class LivePreviewFragment extends PreviewFragment implements View view = super.onCreateView(inflater, container, savedInstanceState); mLoadingScrim = view.findViewById(R.id.loading); + mLoadingProgressBar.hide(); setUpLoadingIndicator(); Activity activity = requireActivity(); @@ -312,7 +311,7 @@ public class LivePreviewFragment extends PreviewFragment implements mWallpaperSurface.getHolder().removeCallback(mWallpaperSurfaceCallback); } - private void previewLiveWallpaper(ImageView thumbnailView) { + protected void previewLiveWallpaper(ImageView thumbnailView) { thumbnailView.post(() -> { Activity activity = getActivity(); if (activity == null) { @@ -320,10 +319,12 @@ public class LivePreviewFragment extends PreviewFragment implements } if (mWallpaperSurfaceCallback.getHomeImageWallpaper() != null) { mWallpaper.getThumbAsset(activity.getApplicationContext()) - .loadPreviewImage(activity, + .loadLowResDrawable(activity, mWallpaperSurfaceCallback.getHomeImageWallpaper(), ResourceUtils.getColorAttr(getActivity(), - android.R.attr.colorSecondary)); + android.R.attr.colorSecondary), + new WallpaperPreviewBitmapTransformation( + activity.getApplicationContext(), isRtl())); } setUpLiveWallpaperPreview(mWallpaper, thumbnailView, @@ -332,8 +333,9 @@ public class LivePreviewFragment extends PreviewFragment implements }); } - private void setUpLiveWallpaperPreview(com.android.wallpaper.model.WallpaperInfo homeWallpaper, - ImageView previewView, Drawable thumbnail) { + protected void setUpLiveWallpaperPreview( + com.android.wallpaper.model.WallpaperInfo homeWallpaper, ImageView previewView, + Drawable thumbnail) { Activity activity = getActivity(); if (activity == null || activity.isFinishing()) { return; @@ -449,9 +451,6 @@ public class LivePreviewFragment extends PreviewFragment implements .setInterpolator(AnimationUtils.loadInterpolator(activity, android.R.interpolator.fast_out_linear_in)) .withEndAction(() -> { - if (mLoadingProgressBar != null) { - mLoadingProgressBar.hide(); - } mLoadingScrim.setVisibility(View.GONE); })); final Drawable placeholder = mHomePreview.getDrawable() == null -- cgit v1.2.3 From 90add2cdf44df6740cbaec7b462377c9e7b3cf66 Mon Sep 17 00:00:00 2001 From: Kunhung Li Date: Wed, 2 Jun 2021 15:09:50 +0800 Subject: Correct wallpaper color tabs height Before: https://screenshot.googleplex.com/7qKzDDZN6hQZtjG After: https://screenshot.googleplex.com/3Aiz4UuWBFCxwAn Bug: 189488569 Test: manual Change-Id: I9d577463a86f978f7762ac858ceca89aad4f9ccd --- res/values/dimens.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 183c67a..fa8fee1 100755 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -170,7 +170,7 @@ 20dp - 60dp + 56dp 50dp 24dp -- cgit v1.2.3 From 03375d79e4bca93b8a172a0232aeeba4d9be3e80 Mon Sep 17 00:00:00 2001 From: James O'Leary Date: Wed, 2 Jun 2021 10:05:57 -0400 Subject: Compress wallpaper to PNG instead of JPEG when setting wallpaper JPEG is a 'lossy' format, meaning, when image bytes are encoded to JPEG, the decoded JPEG's image bytes won't match the input, no matter how high the compression quality. Using PNG ensures the same pixels Wallpaper Picker used to generate the image preview are the same pixels the system will use to quantize the image, ensuring any colors Wallpaper Picker shows will be the same colors applied to the system. Alternatively, WallpaperPicker could compress to JPEG then decompress, and use that Bitmap with WallpaperColors.fromBitmap, but that adds unnecessary work IMHO. It is better to have the image bytes always match what the user is seeing in the preview than use lossy compression + add latency. Bug: 189931209 Test: Log lines in WallpaperColors/WallpaperManagerService/ WallpaperPicker/Palette log the hash of their version of the Bitmap's bytes. Without this change, the hash differs between the preview and framework's view of it. Change-Id: I1ca71ccfc62d203ef65d4dfec661e36f91c2c221 --- src/com/android/wallpaper/module/DefaultWallpaperPersister.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/android/wallpaper/module/DefaultWallpaperPersister.java b/src/com/android/wallpaper/module/DefaultWallpaperPersister.java index 0060f99..bf86585 100755 --- a/src/com/android/wallpaper/module/DefaultWallpaperPersister.java +++ b/src/com/android/wallpaper/module/DefaultWallpaperPersister.java @@ -484,7 +484,7 @@ public class DefaultWallpaperPersister implements WallpaperPersister { private int setBitmapToWallpaperManagerCompat(Bitmap wallpaperBitmap, boolean allowBackup, int whichWallpaper) { ByteArrayOutputStream tmpOut = new ByteArrayOutputStream(); - if (wallpaperBitmap.compress(CompressFormat.JPEG, DEFAULT_COMPRESS_QUALITY, tmpOut)) { + if (wallpaperBitmap.compress(CompressFormat.PNG, DEFAULT_COMPRESS_QUALITY, tmpOut)) { try { byte[] outByteArray = tmpOut.toByteArray(); return mWallpaperManagerCompat.setStream( -- cgit v1.2.3 From f09b9b2abbf91360bca23ce89596c6918d1a2204 Mon Sep 17 00:00:00 2001 From: James O'Leary Date: Wed, 2 Jun 2021 10:12:42 -0400 Subject: Ensure wallpaper isn't cropped unnecessarily This fix is somewhat hard to understand without log lines throughout the method. Without this change, availableExtraHeightTopAndBottom seems to always be -1, which ends up _insetting_ the image 1 pixel at the top and bottom. Variable names indicate availableExtraHeightTopAndBottom was expected to _always_ be a positive value, so the image would be _outset_ not inset. This ends up causing inconsistency between WallpaperPicker's preview and the wallpaper as applied. ex. on my Pixel 4a, the expected height is 1625, but without rounding, this method ends up returning 1623, slightly offsetting the image from its expected location. Bug: 189931209 Test: Log lines throughout ImagePickerFragment, test against a bunch of wallpapers. Change-Id: Ic9dc1fe34808c1cc25717369cf49f8b4c1047f7b --- src/com/android/wallpaper/util/WallpaperCropUtils.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/android/wallpaper/util/WallpaperCropUtils.java b/src/com/android/wallpaper/util/WallpaperCropUtils.java index bff7a67..eaf0e4a 100755 --- a/src/com/android/wallpaper/util/WallpaperCropUtils.java +++ b/src/com/android/wallpaper/util/WallpaperCropUtils.java @@ -193,8 +193,8 @@ public final class WallpaperCropUtils { public static Rect calculateCropRect(Context context, float wallpaperZoom, Point wallpaperSize, Point defaultCropSurfaceSize, Point targetHostSize, int scrollX, int scrollY) { // Calculate Rect of wallpaper in physical pixel terms (i.e., scaled to current zoom). - int scaledWallpaperWidth = (int) (wallpaperSize.x * wallpaperZoom); - int scaledWallpaperHeight = (int) (wallpaperSize.y * wallpaperZoom); + int scaledWallpaperWidth = Math.round(wallpaperSize.x * wallpaperZoom); + int scaledWallpaperHeight = Math.round(wallpaperSize.y * wallpaperZoom); Rect rect = new Rect(); rect.set(0, 0, scaledWallpaperWidth, scaledWallpaperHeight); -- cgit v1.2.3 From 80eacac5464ced6e03b8834757e7273cd391beb9 Mon Sep 17 00:00:00 2001 From: Chuck Liao Date: Mon, 31 May 2021 17:37:00 +0800 Subject: Use the framework new added textColorOnAccent attribute -Use textColorOnAccent for the text color on top of colorAccentPrimary. -Gradle build has trouble referencing this private attribute in styles.xml/colors.xml directly, same as ag/14216601. Screenshots Light: https://screenshot.googleplex.com/BjVmcqCdEy4pXt6.png https://screenshot.googleplex.com/3tcaEPq25KC3hgU.png https://screenshot.googleplex.com/B4P29GGZz69U9LR.png https://screenshot.googleplex.com/SA9wjLYcMfdUWQ5.png Dark: https://screenshot.googleplex.com/8eNocA2mjgyxpax.png https://screenshot.googleplex.com/8a6skXxnTFsjaf4.png https://screenshot.googleplex.com/AMXE7kv6zcCyv4D.png https://screenshot.googleplex.com/AEcVKc3Tya8HDtn.png Bug: 187763995 Test: manual Change-Id: I6c625b5d6c4fcf57311b6baf6af681608eaee027 --- res/color/bottom_action_button_color_tint.xml | 5 +++-- res/layout/dialog_set_wallpaper.xml | 10 +++++++--- res/layout/fullscreen_buttons.xml | 5 +++-- res/layout/pill_tabs.xml | 2 +- res/values/colors.xml | 3 --- res/values/styles.xml | 3 ++- 6 files changed, 16 insertions(+), 12 deletions(-) diff --git a/res/color/bottom_action_button_color_tint.xml b/res/color/bottom_action_button_color_tint.xml index 860a532..8381c2f 100644 --- a/res/color/bottom_action_button_color_tint.xml +++ b/res/color/bottom_action_button_color_tint.xml @@ -14,11 +14,12 @@ See the License for the specific language governing permissions and limitations under the License. --> - + + android:color="?androidprv:attr/textColorOnAccent" /> \ No newline at end of file diff --git a/res/layout/dialog_set_wallpaper.xml b/res/layout/dialog_set_wallpaper.xml index e28ce8a..81d6253 100755 --- a/res/layout/dialog_set_wallpaper.xml +++ b/res/layout/dialog_set_wallpaper.xml @@ -16,6 +16,7 @@ --> @@ -34,21 +35,24 @@ style="@style/set_wallpaper_destination_item" android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="@string/set_wallpaper_home_screen_destination" /> + android:text="@string/set_wallpaper_home_screen_destination" + android:textColor="?androidprv:attr/textColorOnAccent" /> @@ -49,7 +50,7 @@ android:text="@string/set_wallpaper_button_text" android:textAlignment="center" android:textAppearance="@style/PillTabsTextAppearance" - android:textColor="@color/text_color_primary_on_accent" + android:textColor="?androidprv:attr/textColorOnAccent" android:visibility="visible"> diff --git a/res/layout/pill_tabs.xml b/res/layout/pill_tabs.xml index e5284ef..a4d01db 100644 --- a/res/layout/pill_tabs.xml +++ b/res/layout/pill_tabs.xml @@ -30,5 +30,5 @@ app:tabIndicatorFullWidth="true" app:tabIndicatorGravity="stretch" app:tabTextColor="@color/tab_text_color" - app:tabSelectedTextColor="@color/text_color_primary_on_accent" + app:tabSelectedTextColor="?androidprv:attr/textColorOnAccent" app:tabTextAppearance="@style/PillTabsTextAppearance" /> diff --git a/res/values/colors.xml b/res/values/colors.xml index 0c144f1..2c4b336 100755 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -34,7 +34,4 @@ #B0000000 @android:color/transparent - - - @*android:color/text_color_primary_device_default_light diff --git a/res/values/styles.xml b/res/values/styles.xml index 5299a10..729b4ce 100755 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -142,13 +142,14 @@ + - + diff --git a/src/com/android/wallpaper/widget/BottomActionBar.java b/src/com/android/wallpaper/widget/BottomActionBar.java index fda4c8b..8c0169b 100644 --- a/src/com/android/wallpaper/widget/BottomActionBar.java +++ b/src/com/android/wallpaper/widget/BottomActionBar.java @@ -24,12 +24,16 @@ import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.Button; import android.widget.FrameLayout; +import android.widget.ImageView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.core.widget.ImageViewCompat; import com.android.wallpaper.R; +import com.android.wallpaper.util.ResourceUtils; import com.android.wallpaper.util.SizeCalculator; import com.google.android.material.bottomsheet.BottomSheetBehavior; @@ -127,6 +131,7 @@ public class BottomActionBar extends FrameLayout { mBottomSheetView = findViewById(R.id.action_bottom_sheet); SizeCalculator.adjustBackgroundCornerRadius(mBottomSheetView); + setColor(context); mBottomSheetBehavior = (QueueStateBottomSheetBehavior) BottomSheetBehavior.from( mBottomSheetView); @@ -460,6 +465,26 @@ public class BottomActionBar extends FrameLayout { mSelectedAction = null; } + /** Dynamic update color with {@code Context}. */ + public void setColor(Context context) { + mBottomSheetView.setBackground(context.getDrawable(R.drawable.bottom_sheet_background)); + + ViewGroup actionTabs = findViewById(R.id.action_tabs); + actionTabs.setBackgroundColor( + ResourceUtils.getColorAttr(context, android.R.attr.colorBackground)); + for (int i = 0; i < actionTabs.getChildCount(); i++) { + View v = actionTabs.getChildAt(i); + if (v instanceof ImageView) { + v.setBackground(context.getDrawable(R.drawable.bottom_action_button_background)); + ImageViewCompat.setImageTintList((ImageView) v, + context.getColorStateList(R.color.bottom_action_button_color_tint)); + } + } + Button applyButton = findViewById(R.id.action_apply_text_button); + applyButton.setBackground(context.getDrawable(R.drawable.btn_transparent_background)); + applyButton.setTextColor(ResourceUtils.getColorAttr(context, android.R.attr.colorAccent)); + } + private void updateSelectedState(BottomAction bottomAction, boolean selected) { View bottomActionView = mActionMap.get(bottomAction); if (bottomActionView.isSelected() == selected) { -- cgit v1.2.3 From c09c7fc8d0bdffc46a3dd8b9ef77c5db84cdbd50 Mon Sep 17 00:00:00 2001 From: Chihhang Chuang Date: Wed, 23 Jun 2021 18:20:30 +0800 Subject: Add null check for IWallpaperEngine to avoid NPE Because #onServiceDisconnected sets IWallpaperEngine instance to null, so it could lead a NPE. Fixes: 191622496 Test: Manually Change-Id: I00c9c885853c2377ddb9eee120aac9c95243bdc1 --- src/com/android/wallpaper/util/WallpaperConnection.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/com/android/wallpaper/util/WallpaperConnection.java b/src/com/android/wallpaper/util/WallpaperConnection.java index 36bd49d..06b4619 100644 --- a/src/com/android/wallpaper/util/WallpaperConnection.java +++ b/src/com/android/wallpaper/util/WallpaperConnection.java @@ -68,7 +68,7 @@ public class WallpaperConnection extends IWallpaperConnection.Stub implements Se private final SurfaceView mContainerView; private final SurfaceView mSecondContainerView; private IWallpaperService mService; - private IWallpaperEngine mEngine; + @Nullable private IWallpaperEngine mEngine; private boolean mConnected; private boolean mIsVisible; private boolean mIsEngineVisible; @@ -216,6 +216,7 @@ public class WallpaperConnection extends IWallpaperConnection.Stub implements Se /** * Returns the engine handled by this WallpaperConnection */ + @Nullable public IWallpaperEngine getEngine() { return mEngine; } @@ -309,6 +310,10 @@ public class WallpaperConnection extends IWallpaperConnection.Stub implements Se } private void mirrorAndReparent(SurfaceView parentSurface) { + if (mEngine == null) { + Log.i(TAG, "Engine is null, was the service disconnected?"); + return; + } try { SurfaceControl parentSC = parentSurface.getSurfaceControl(); SurfaceControl wallpaperMirrorSC = mEngine.mirrorSurfaceControl(); -- cgit v1.2.3 From 540fb752cb3b38b89c9e4174d2733233103b9ce3 Mon Sep 17 00:00:00 2001 From: Chuck Liao Date: Tue, 22 Jun 2021 01:27:10 +0800 Subject: Support wallpaper only mode for new UI Also - Make CustomizationPickerActivity support SUW flow (No edge-to-edge, no up arrow, and not go back to Launcher Home) - Clean up some useless code Video: https://drive.google.com/file/d/158oZ6NeXGy5z7qVagr-AvMFq8NHMG9oE/view?usp=sharing&resourcekey=0-hmnctnlRBEWsJEMEwkObhQ Bug: 191606414 Test: manual Change-Id: Ic1a14e57ccb17c618a8f0212ec943a2493a5c778 --- .../picker/CustomizationPickerActivity.java | 73 +++++++--------------- .../picker/CustomizationPickerFragment.java | 2 +- .../wallpaper/picker/WallpaperOnlyFragment.java | 42 +++++++++++++ src/com/android/wallpaper/util/ActivityUtils.java | 10 +++ 4 files changed, 75 insertions(+), 52 deletions(-) create mode 100644 src/com/android/wallpaper/picker/WallpaperOnlyFragment.java diff --git a/src/com/android/wallpaper/picker/CustomizationPickerActivity.java b/src/com/android/wallpaper/picker/CustomizationPickerActivity.java index 16bfffe..d97f598 100644 --- a/src/com/android/wallpaper/picker/CustomizationPickerActivity.java +++ b/src/com/android/wallpaper/picker/CustomizationPickerActivity.java @@ -15,9 +15,11 @@ */ package com.android.wallpaper.picker; +import static com.android.wallpaper.util.ActivityUtils.isSUWMode; +import static com.android.wallpaper.util.ActivityUtils.isWallpaperOnlyMode; + import android.app.Activity; import android.content.Intent; -import android.os.Build; import android.os.Bundle; import android.provider.Settings; import android.text.TextUtils; @@ -61,12 +63,7 @@ public class CustomizationPickerActivity extends FragmentActivity implements App FragmentTransactionChecker, PermissionRequester, CategorySelectorFragmentHost, IndividualPickerFragmentHost, WallpaperPreviewNavigator { - public static final String WALLPAPER_FLAVOR_EXTRA = - "com.android.launcher3.WALLPAPER_FLAVOR"; - public static final String WALLPAPER_FOCUS = "focus_wallpaper"; - private static final String TAG = "CustomizationPickerActivity"; - private static final String WALLPAPER_ONLY = "wallpaper_only"; private WallpaperPickerDelegate mDelegate; private UserEventLogger mUserEventLogger; @@ -87,17 +84,11 @@ public class CustomizationPickerActivity extends FragmentActivity implements App // Restore this Activity's state before restoring contained Fragments state. super.onCreate(savedInstanceState); - if (WALLPAPER_ONLY.equals(getIntent().getStringExtra(WALLPAPER_FLAVOR_EXTRA)) - || !supportCustomizationSections()) { - skipToWallpaperPicker(); - return; - } - setContentView(R.layout.activity_customization_picker); mBottomActionBar = findViewById(R.id.bottom_actionbar); // See go/pdr-edge-to-edge-guide. - WindowCompat.setDecorFitsSystemWindows(getWindow(), /* decorFitsSystemWindows= */ false); + WindowCompat.setDecorFitsSystemWindows(getWindow(), isSUWMode(this)); Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container); if (fragment == null) { @@ -108,8 +99,10 @@ public class CustomizationPickerActivity extends FragmentActivity implements App injector.getPreferences(this).incrementAppLaunched(); DailyLoggingAlarmScheduler.setAlarm(getApplicationContext()); - // Switch to the customization picker fragment. - switchFragment(CustomizationPickerFragment.newInstance(getString(R.string.app_name))); + // Switch to the target fragment. + switchFragment(isWallpaperOnlyMode(getIntent()) + ? WallpaperOnlyFragment.newInstance(getString(R.string.wallpaper_app_name)) + : CustomizationPickerFragment.newInstance(getString(R.string.app_name))); } // Deep link case @@ -146,8 +139,7 @@ public class CustomizationPickerActivity extends FragmentActivity implements App protected void onResume() { super.onResume(); mIsSafeToCommitFragmentTransaction = true; - boolean wallpaperOnly = - WALLPAPER_ONLY.equals(getIntent().getStringExtra(WALLPAPER_FLAVOR_EXTRA)); + boolean wallpaperOnly = isWallpaperOnlyMode(getIntent()); boolean provisioned = Settings.Global.getInt(getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 0) != 0; @@ -170,38 +162,6 @@ public class CustomizationPickerActivity extends FragmentActivity implements App super.onStop(); } - @Override - protected void onNewIntent(Intent intent) { - super.onNewIntent(intent); - if (WALLPAPER_ONLY.equals(intent.getStringExtra(WALLPAPER_FLAVOR_EXTRA))) { - Log.d(TAG, "WALLPAPER_ONLY intent, reverting to Wallpaper Picker"); - skipToWallpaperPicker(); - } - } - - private void skipToWallpaperPicker() { - Intent intent = new Intent(this, TopLevelPickerActivity.class); - - if (getIntent() != null && getIntent().getExtras() != null) { - intent.putExtras(getIntent().getExtras()); - } - - if (DeepLinkUtils.isDeepLink(getIntent())) { - intent.setData(getIntent().getData()); - } - startActivity(intent); - finish(); - } - - private boolean supportCustomizationSections() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S - || "S".equals(Build.VERSION.CODENAME)) { - return true; - } - Log.d(TAG, "Build version < S, customization sections feature is not supported"); - return false; - } - @Override public void onBackPressed() { Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container); @@ -348,7 +308,11 @@ public class CustomizationPickerActivity extends FragmentActivity implements App protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (mDelegate.handleActivityResult(requestCode, resultCode, data)) { - finishActivityWithResultOk(); + if (isSUWMode(this)) { + finishActivityForSUW(); + } else { + finishActivityWithResultOk(); + } } } @@ -361,6 +325,13 @@ public class CustomizationPickerActivity extends FragmentActivity implements App LaunchUtils.launchHome(this); } + private void finishActivityForSUW() { + overridePendingTransition(R.anim.fade_in, R.anim.fade_out); + // Return RESULT_CANCELED to make the "Change wallpaper" tile in SUW not be disabled. + setResult(Activity.RESULT_CANCELED); + finish(); + } + @Override public BottomActionBar getBottomActionBar() { return mBottomActionBar; @@ -379,6 +350,6 @@ public class CustomizationPickerActivity extends FragmentActivity implements App @Override public boolean isUpArrowSupported() { - return true; + return !isSUWMode(this); } } diff --git a/src/com/android/wallpaper/picker/CustomizationPickerFragment.java b/src/com/android/wallpaper/picker/CustomizationPickerFragment.java index 75f1b46..2d330c2 100644 --- a/src/com/android/wallpaper/picker/CustomizationPickerFragment.java +++ b/src/com/android/wallpaper/picker/CustomizationPickerFragment.java @@ -161,7 +161,7 @@ public class CustomizationPickerFragment extends AppbarFragment implements mSectionControllers.addAll(getAvailableSections(allSectionControllers)); } - private List> getAvailableSections ( + protected List> getAvailableSections( List> controllers) { return controllers.stream() .filter(controller -> { diff --git a/src/com/android/wallpaper/picker/WallpaperOnlyFragment.java b/src/com/android/wallpaper/picker/WallpaperOnlyFragment.java new file mode 100644 index 0000000..b59b853 --- /dev/null +++ b/src/com/android/wallpaper/picker/WallpaperOnlyFragment.java @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.wallpaper.picker; + +import com.android.wallpaper.model.CustomizationSectionController; +import com.android.wallpaper.model.WallpaperSectionController; + +import java.util.List; +import java.util.stream.Collectors; + +/** The Fragment UI for wallpaper only section. */ +public class WallpaperOnlyFragment extends CustomizationPickerFragment { + + /** Initiates WallpaperOnlyFragment instance. */ + public static WallpaperOnlyFragment newInstance(CharSequence title) { + WallpaperOnlyFragment fragment = new WallpaperOnlyFragment(); + fragment.setArguments(AppbarFragment.createArguments(title)); + return fragment; + } + + @Override + protected List> getAvailableSections( + List> controllers) { + List> wallpaperOnlySections = controllers.stream() + .filter(controller -> controller instanceof WallpaperSectionController) + .collect(Collectors.toList()); + return super.getAvailableSections(wallpaperOnlySections); + } +} diff --git a/src/com/android/wallpaper/util/ActivityUtils.java b/src/com/android/wallpaper/util/ActivityUtils.java index eb2adb2..1fccd2f 100755 --- a/src/com/android/wallpaper/util/ActivityUtils.java +++ b/src/com/android/wallpaper/util/ActivityUtils.java @@ -97,4 +97,14 @@ public final class ActivityUtils { context.getContentResolver(), Settings.Secure.USER_SETUP_COMPLETE, SUW_COMPLETE) == SUW_NOT_YET); } + + /** + * Returns true if it's wallpaper only mode. + * + * @param intent activity intent. + */ + public static boolean isWallpaperOnlyMode(Intent intent) { + return "wallpaper_only".equals( + intent.getStringExtra("com.android.launcher3.WALLPAPER_FLAVOR")); + } } \ No newline at end of file -- cgit v1.2.3 From d2f46be62cf030bc4c6e192ba5b96019cf299e2b Mon Sep 17 00:00:00 2001 From: Ching-Sung Li Date: Tue, 22 Jun 2021 20:55:28 +0800 Subject: Fix missing workspace in live wallpaper's preview Don't do early clean up for WorkspaceSurfaceHolderCallback to prevent workspace SurfaceView stop rendering in wallpaper preview. Bug: 191740901 Test: Manual Change-Id: Ic797532db02ff71e2a203a2920dfcc64c3671a8c --- res/layout/fragment_image_preview.xml | 88 +++++++++++++++++++++ res/layout/fragment_image_preview_v2.xml | 88 --------------------- res/layout/fragment_live_preview.xml | 92 ++++++++++++++++++++++ res/layout/fragment_live_preview_v2.xml | 92 ---------------------- .../wallpaper/picker/ImagePreviewFragment.java | 5 +- .../wallpaper/picker/LivePreviewFragment.java | 12 +-- .../android/wallpaper/picker/PreviewFragment.java | 12 +-- 7 files changed, 192 insertions(+), 197 deletions(-) create mode 100644 res/layout/fragment_image_preview.xml delete mode 100644 res/layout/fragment_image_preview_v2.xml create mode 100644 res/layout/fragment_live_preview.xml delete mode 100644 res/layout/fragment_live_preview_v2.xml diff --git a/res/layout/fragment_image_preview.xml b/res/layout/fragment_image_preview.xml new file mode 100644 index 0000000..46b4b88 --- /dev/null +++ b/res/layout/fragment_image_preview.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/layout/fragment_image_preview_v2.xml b/res/layout/fragment_image_preview_v2.xml deleted file mode 100644 index 46b4b88..0000000 --- a/res/layout/fragment_image_preview_v2.xml +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/res/layout/fragment_live_preview.xml b/res/layout/fragment_live_preview.xml new file mode 100644 index 0000000..dc8273c --- /dev/null +++ b/res/layout/fragment_live_preview.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/layout/fragment_live_preview_v2.xml b/res/layout/fragment_live_preview_v2.xml deleted file mode 100644 index dc8273c..0000000 --- a/res/layout/fragment_live_preview_v2.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/com/android/wallpaper/picker/ImagePreviewFragment.java b/src/com/android/wallpaper/picker/ImagePreviewFragment.java index 4a3fb73..0ceaa3d 100755 --- a/src/com/android/wallpaper/picker/ImagePreviewFragment.java +++ b/src/com/android/wallpaper/picker/ImagePreviewFragment.java @@ -123,7 +123,7 @@ public class ImagePreviewFragment extends PreviewFragment { @Override protected int getLayoutResId() { - return R.layout.fragment_image_preview_v2; + return R.layout.fragment_image_preview; } @Override @@ -584,8 +584,7 @@ public class ImagePreviewFragment extends PreviewFragment { mWallpaperSurface.setBackgroundColor(placeHolderColor); mWallpaperAsset.loadLowResDrawable(activity, mLowResImageView, placeHolderColor, - new WallpaperPreviewBitmapTransformation( - activity.getApplicationContext(), isRtl())); + mPreviewBitmapTransformation); wallpaperPreviewContainer.measure( makeMeasureSpec(width, EXACTLY), diff --git a/src/com/android/wallpaper/picker/LivePreviewFragment.java b/src/com/android/wallpaper/picker/LivePreviewFragment.java index aa9193e..8b8ed44 100644 --- a/src/com/android/wallpaper/picker/LivePreviewFragment.java +++ b/src/com/android/wallpaper/picker/LivePreviewFragment.java @@ -117,7 +117,6 @@ public class LivePreviewFragment extends PreviewFragment implements private ViewGroup mPreviewContainer; private TouchForwardingLayout mTouchForwardingLayout; private SurfaceView mWallpaperSurface; - private WallpaperPreviewBitmapTransformation mPreviewBitmapTransformation; private Future mPlaceholderColorFuture; @Override @@ -132,8 +131,6 @@ public class LivePreviewFragment extends PreviewFragment implements mDeleteIntent.setPackage(info.getPackageName()); mDeleteIntent.putExtra(EXTRA_LIVE_WALLPAPER_INFO, info); } - mPreviewBitmapTransformation = new WallpaperPreviewBitmapTransformation( - requireContext().getApplicationContext(), isRtl()); String settingsActivity = getSettingsActivity(info); if (settingsActivity != null) { mSettingsIntent = new Intent(); @@ -234,9 +231,7 @@ public class LivePreviewFragment extends PreviewFragment implements @Override protected void updateScreenPreview(boolean isHomeSelected) { mWorkspaceSurface.setVisibility(isHomeSelected ? View.VISIBLE : View.INVISIBLE); - if (!isHomeSelected) { - mWorkspaceSurfaceCallback.cleanUp(); - } + mLockPreviewContainer.setVisibility(isHomeSelected ? View.INVISIBLE : View.VISIBLE); mFullScreenAnimation.setIsHomeSelected(isHomeSelected); @@ -398,8 +393,7 @@ public class LivePreviewFragment extends PreviewFragment implements } } - final String deleteAction = getDeleteAction(mWallpaper.getWallpaperComponent()); - if (TextUtils.isEmpty(deleteAction)) { + if (TextUtils.isEmpty(getDeleteAction(mWallpaper.getWallpaperComponent()))) { mBottomActionBar.hideActions(DELETE); } else { mBottomActionBar.setActionClickListener(DELETE, listener -> @@ -458,7 +452,7 @@ public class LivePreviewFragment extends PreviewFragment implements @Override protected int getLayoutResId() { - return R.layout.fragment_live_preview_v2; + return R.layout.fragment_live_preview; } @Override diff --git a/src/com/android/wallpaper/picker/PreviewFragment.java b/src/com/android/wallpaper/picker/PreviewFragment.java index 1249a61..a94e1f6 100755 --- a/src/com/android/wallpaper/picker/PreviewFragment.java +++ b/src/com/android/wallpaper/picker/PreviewFragment.java @@ -132,6 +132,7 @@ public abstract class PreviewFragment extends AppbarFragment implements protected boolean mTestingModeEnabled; protected WallpaperInfo mWallpaper; + protected WallpaperPreviewBitmapTransformation mPreviewBitmapTransformation; protected WallpaperSetter mWallpaperSetter; protected UserEventLogger mUserEventLogger; protected BottomActionBar mBottomActionBar; @@ -139,6 +140,10 @@ public abstract class PreviewFragment extends AppbarFragment implements protected Intent mExploreIntent; protected CharSequence mActionLabel; + // For full screen animations. + protected View mRootView; + protected FullScreenAnimation mFullScreenAnimation; + /** * Staged error dialog fragments that were unable to be shown when the hosting activity didn't * allow committing fragment transactions. @@ -146,10 +151,6 @@ public abstract class PreviewFragment extends AppbarFragment implements private SetWallpaperErrorDialogFragment mStagedSetWallpaperErrorDialogFragment; private LoadWallpaperErrorDialogFragment mStagedLoadWallpaperErrorDialogFragment; - // For full screen animations. - protected View mRootView; - protected FullScreenAnimation mFullScreenAnimation; - @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -158,6 +159,8 @@ public abstract class PreviewFragment extends AppbarFragment implements mUserEventLogger = injector.getUserEventLogger(appContext); mWallpaper = getArguments().getParcelable(ARG_WALLPAPER); + mPreviewBitmapTransformation = new WallpaperPreviewBitmapTransformation( + appContext, isRtl()); //noinspection ResourceType mPreviewMode = getArguments().getInt(ARG_PREVIEW_MODE); @@ -204,7 +207,6 @@ public abstract class PreviewFragment extends AppbarFragment implements protected void onBottomActionBarReady(BottomActionBar bottomActionBar) { super.onBottomActionBarReady(bottomActionBar); mBottomActionBar = bottomActionBar; - // TODO: Extract the common code here. setBottomActionBarAndFullScreenActions(); } -- cgit v1.2.3 From 17222cdb1413c7d728f5b112ac736c8153f57f86 Mon Sep 17 00:00:00 2001 From: Chihhang Chuang Date: Thu, 24 Jun 2021 21:42:22 +0800 Subject: Update colors for separated tabs Some views reference to different colors for drak/light theme. Mock: https://screenshot.googleplex.com/7hixZw3tVdVKYbk.png Screenshots: - Light: https://screenshot.googleplex.com/3d2svF5hGCbFaU2.png - Dark: https://screenshot.googleplex.com/Auhtbosyh7TQGSe.png Bug: 191945576 Test: Manually Change-Id: Ie412dd2fc24824434f664fa6eecb8429f3777482 --- res/color-night/separated_tabs_indicator_color.xml | 20 ++++++++++++++++++++ res/color-night/separated_tabs_text_color.xml | 21 +++++++++++++++++++++ res/color/separated_tabs_indicator_color.xml | 20 ++++++++++++++++++++ res/color/separated_tabs_text_color.xml | 21 +++++++++++++++++++++ res/color/tab_text_color.xml | 5 ----- .../separated_tabs_indicator_background.xml | 3 +-- res/layout/separated_tabs.xml | 6 ++---- 7 files changed, 85 insertions(+), 11 deletions(-) create mode 100644 res/color-night/separated_tabs_indicator_color.xml create mode 100644 res/color-night/separated_tabs_text_color.xml create mode 100644 res/color/separated_tabs_indicator_color.xml create mode 100644 res/color/separated_tabs_text_color.xml delete mode 100644 res/color/tab_text_color.xml diff --git a/res/color-night/separated_tabs_indicator_color.xml b/res/color-night/separated_tabs_indicator_color.xml new file mode 100644 index 0000000..7313a16 --- /dev/null +++ b/res/color-night/separated_tabs_indicator_color.xml @@ -0,0 +1,20 @@ + + + + + diff --git a/res/color-night/separated_tabs_text_color.xml b/res/color-night/separated_tabs_text_color.xml new file mode 100644 index 0000000..8fb9488 --- /dev/null +++ b/res/color-night/separated_tabs_text_color.xml @@ -0,0 +1,21 @@ + + + + + + + \ No newline at end of file diff --git a/res/color/separated_tabs_indicator_color.xml b/res/color/separated_tabs_indicator_color.xml new file mode 100644 index 0000000..cbce7d0 --- /dev/null +++ b/res/color/separated_tabs_indicator_color.xml @@ -0,0 +1,20 @@ + + + + + \ No newline at end of file diff --git a/res/color/separated_tabs_text_color.xml b/res/color/separated_tabs_text_color.xml new file mode 100644 index 0000000..96f3193 --- /dev/null +++ b/res/color/separated_tabs_text_color.xml @@ -0,0 +1,21 @@ + + + + + + + \ No newline at end of file diff --git a/res/color/tab_text_color.xml b/res/color/tab_text_color.xml deleted file mode 100644 index 70b364a..0000000 --- a/res/color/tab_text_color.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/res/drawable/separated_tabs_indicator_background.xml b/res/drawable/separated_tabs_indicator_background.xml index 942810a..05e52e5 100644 --- a/res/drawable/separated_tabs_indicator_background.xml +++ b/res/drawable/separated_tabs_indicator_background.xml @@ -15,11 +15,10 @@ limitations under the License. --> - + diff --git a/res/layout/separated_tabs.xml b/res/layout/separated_tabs.xml index 1445101..e23ea05 100644 --- a/res/layout/separated_tabs.xml +++ b/res/layout/separated_tabs.xml @@ -16,7 +16,6 @@ --> -- cgit v1.2.3 From f97f159c0a490362c7ede2314a625c59a8dffbb9 Mon Sep 17 00:00:00 2001 From: Chihhang Chuang Date: Thu, 24 Jun 2021 16:51:04 +0800 Subject: Make the content view of bottom sheet updatable for context theme Because we change the color mechanism of BottomActionBar recently. Before: https://screenshot.googleplex.com/4PHW3TwRonBLths.png After: https://screenshot.googleplex.com/8jmV4jr2uPAp3Ds.png Fixes: 191940562 Test: Manually Change-Id: Id399ebdedc3135a636af3af3b7274eb2e67f675a --- .../wallpaper/picker/ImagePreviewFragment.java | 21 +---- .../wallpaper/picker/LivePreviewFragment.java | 61 +++++++----- .../android/wallpaper/picker/PreviewFragment.java | 102 ++++++++++++++------- .../android/wallpaper/widget/BottomActionBar.java | 77 ++++++++++++++-- 4 files changed, 178 insertions(+), 83 deletions(-) diff --git a/src/com/android/wallpaper/picker/ImagePreviewFragment.java b/src/com/android/wallpaper/picker/ImagePreviewFragment.java index 0ceaa3d..251b073 100755 --- a/src/com/android/wallpaper/picker/ImagePreviewFragment.java +++ b/src/com/android/wallpaper/picker/ImagePreviewFragment.java @@ -72,7 +72,6 @@ import com.android.wallpaper.util.WallpaperCropUtils; import com.android.wallpaper.widget.BottomActionBar; import com.android.wallpaper.widget.BottomActionBar.AccessibilityCallback; import com.android.wallpaper.widget.LockScreenPreviewer; -import com.android.wallpaper.widget.WallpaperInfoView; import com.bumptech.glide.Glide; import com.bumptech.glide.MemoryCategory; @@ -105,7 +104,6 @@ public class ImagePreviewFragment extends PreviewFragment { private TouchForwardingLayout mTouchForwardingLayout; private ConstraintLayout mContainer; private SurfaceView mWallpaperSurface; - private WallpaperInfoView mWallpaperInfoView; private AtomicInteger mImageScaleChangeCounter = new AtomicInteger(0); protected SurfaceView mWorkspaceSurface; @@ -225,10 +223,8 @@ public class ImagePreviewFragment extends PreviewFragment { @Override protected void onBottomActionBarReady(BottomActionBar bottomActionBar) { super.onBottomActionBarReady(bottomActionBar); - mWallpaperInfoView = (WallpaperInfoView) - LayoutInflater.from(getContext()).inflate( - R.layout.wallpaper_info_view, /* root= */null); - mBottomActionBar.attachViewToBottomSheetAndBindAction(mWallpaperInfoView, INFORMATION); + mBottomActionBar.bindBottomSheetContentWithAction( + new WallpaperInfoContent(getContext()), INFORMATION); mBottomActionBar.showActionsOnly(INFORMATION, EDIT, APPLY); mBottomActionBar.setActionClickListener(APPLY, this::onSetWallpaperClicked); @@ -255,8 +251,6 @@ public class ImagePreviewFragment extends PreviewFragment { }); mBottomActionBar.show(); - // Loads wallpaper info and populate into view. - setUpExploreIntentAndLabel(this::populateWallpaperInfo); // To avoid applying the wallpaper when the wallpaper's not parsed. mBottomActionBar.disableActions(); // If the wallpaper is parsed, enable the bottom action bar. @@ -378,17 +372,6 @@ public class ImagePreviewFragment extends PreviewFragment { }); } - private void populateWallpaperInfo() { - if (mWallpaperInfoView != null && mWallpaper != null) { - mWallpaperInfoView.populateWallpaperInfo( - mWallpaper, - mActionLabel, - WallpaperInfoHelper.shouldShowExploreButton( - getContext(), mExploreIntent), - this::onExploreClicked); - } - } - /** * Makes the MosaicView visible with an alpha fade-in animation while fading out the loading * indicator. diff --git a/src/com/android/wallpaper/picker/LivePreviewFragment.java b/src/com/android/wallpaper/picker/LivePreviewFragment.java index 8b8ed44..ec17767 100644 --- a/src/com/android/wallpaper/picker/LivePreviewFragment.java +++ b/src/com/android/wallpaper/picker/LivePreviewFragment.java @@ -31,6 +31,7 @@ import android.app.WallpaperColors; import android.app.WallpaperInfo; import android.app.WallpaperManager; import android.content.ComponentName; +import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; @@ -73,9 +74,9 @@ import com.android.wallpaper.util.WallpaperConnection; import com.android.wallpaper.util.WallpaperSurfaceCallback; import com.android.wallpaper.widget.BottomActionBar; import com.android.wallpaper.widget.BottomActionBar.AccessibilityCallback; +import com.android.wallpaper.widget.BottomActionBar.BottomSheetContent; import com.android.wallpaper.widget.LockScreenPreviewer; import com.android.wallpaper.widget.WallpaperColorsLoader; -import com.android.wallpaper.widget.WallpaperInfoView; import java.util.Locale; import java.util.concurrent.ExecutionException; @@ -101,7 +102,6 @@ public class LivePreviewFragment extends PreviewFragment implements * @see IWallpaperConnection */ protected WallpaperConnection mWallpaperConnection; - protected WallpaperInfoView mWallpaperInfoView; protected CardView mHomePreviewCard; protected SurfaceView mWorkspaceSurface; protected WallpaperSurfaceCallback mWallpaperSurfaceCallback; @@ -164,17 +164,6 @@ public class LivePreviewFragment extends PreviewFragment implements Activity activity = requireActivity(); mScreenSize = ScreenSizeCalculator.getInstance().getScreenSize( activity.getWindowManager().getDefaultDisplay()); - - mWallpaperInfoView = (WallpaperInfoView) LayoutInflater.from(getContext()) - .inflate(R.layout.wallpaper_info_view, /* root= */ null); - setUpExploreIntentAndLabel( - () -> mWallpaperInfoView.populateWallpaperInfo( - mWallpaper, - mActionLabel, - WallpaperInfoHelper.shouldShowExploreButton(getContext(), mExploreIntent), - this::onExploreClicked) - ); - mPreviewContainer = view.findViewById(R.id.live_wallpaper_preview); mTouchForwardingLayout = view.findViewById(R.id.touch_forwarding_layout); // Set aspect ratio on the preview card. @@ -271,7 +260,8 @@ public class LivePreviewFragment extends PreviewFragment implements @Override public void onDestroyView() { super.onDestroyView(); - if (mSettingsLiveData != null && mSettingsLiveData.hasObservers()) { + if (mSettingsLiveData != null && mSettingsLiveData.hasObservers() + && mSettingsSliceView != null) { mSettingsLiveData.removeObserver(mSettingsSliceView); mSettingsLiveData = null; } @@ -353,7 +343,8 @@ public class LivePreviewFragment extends PreviewFragment implements super.onBottomActionBarReady(bottomActionBar); mBottomActionBar.showActionsOnly(INFORMATION, DELETE, EDIT, CUSTOMIZE, APPLY); mBottomActionBar.setActionClickListener(APPLY, unused -> onSetWallpaperClicked(null)); - mBottomActionBar.attachViewToBottomSheetAndBindAction(mWallpaperInfoView, INFORMATION); + mBottomActionBar.bindBottomSheetContentWithAction( + new WallpaperInfoContent(getContext()), INFORMATION); View separatedTabsContainer = getView().findViewById(R.id.separated_tabs_container); // Update target view's accessibility param since it will be blocked by the bottom sheet @@ -376,14 +367,9 @@ public class LivePreviewFragment extends PreviewFragment implements }); final Uri uriSettingsSlice = getSettingsSliceUri(mWallpaper.getWallpaperComponent()); if (uriSettingsSlice != null) { - View previewPage = LayoutInflater.from(getContext()) - .inflate(R.layout.preview_customize_settings, null); - mSettingsSliceView = previewPage.findViewById(R.id.settings_slice); - mSettingsSliceView.setMode(SliceView.MODE_LARGE); - mSettingsSliceView.setScrollable(false); mSettingsLiveData = SliceLiveData.fromUri(requireContext(), uriSettingsSlice); - mSettingsLiveData.observeForever(mSettingsSliceView); - mBottomActionBar.attachViewToBottomSheetAndBindAction(previewPage, CUSTOMIZE); + mBottomActionBar.bindBottomSheetContentWithAction( + new PreviewCustomizeSettingsContent(getContext()), CUSTOMIZE); } else { if (mSettingsIntent != null) { mBottomActionBar.setActionClickListener(CUSTOMIZE, listener -> @@ -546,4 +532,35 @@ public class LivePreviewFragment extends PreviewFragment implements private boolean isPackagePreInstalled(ApplicationInfo info) { return info != null && (info.flags & ApplicationInfo.FLAG_SYSTEM) != 0; } + + private final class PreviewCustomizeSettingsContent extends BottomSheetContent { + + private PreviewCustomizeSettingsContent(Context context) { + super(context); + } + + @Override + public int getViewId() { + return R.layout.preview_customize_settings; + } + + @Override + public void onViewCreated(View previewPage) { + mSettingsSliceView = previewPage.findViewById(R.id.settings_slice); + mSettingsSliceView.setMode(SliceView.MODE_LARGE); + mSettingsSliceView.setScrollable(false); + if (mSettingsLiveData != null) { + mSettingsLiveData.observeForever(mSettingsSliceView); + } + } + + @Override + public void onRecreateView(View oldPreviewPage) { + super.onRecreateView(oldPreviewPage); + if (mSettingsLiveData != null && mSettingsLiveData.hasObservers() + && mSettingsSliceView != null) { + mSettingsLiveData.removeObserver(mSettingsSliceView); + } + } + } } diff --git a/src/com/android/wallpaper/picker/PreviewFragment.java b/src/com/android/wallpaper/picker/PreviewFragment.java index a94e1f6..1c4b5ec 100755 --- a/src/com/android/wallpaper/picker/PreviewFragment.java +++ b/src/com/android/wallpaper/picker/PreviewFragment.java @@ -51,6 +51,8 @@ import com.android.wallpaper.module.WallpaperPreferences; import com.android.wallpaper.module.WallpaperSetter; import com.android.wallpaper.util.FullScreenAnimation; import com.android.wallpaper.widget.BottomActionBar; +import com.android.wallpaper.widget.BottomActionBar.BottomSheetContent; +import com.android.wallpaper.widget.WallpaperInfoView; import com.google.android.material.tabs.TabLayout; @@ -136,14 +138,12 @@ public abstract class PreviewFragment extends AppbarFragment implements protected WallpaperSetter mWallpaperSetter; protected UserEventLogger mUserEventLogger; protected BottomActionBar mBottomActionBar; - - protected Intent mExploreIntent; - protected CharSequence mActionLabel; - // For full screen animations. protected View mRootView; protected FullScreenAnimation mFullScreenAnimation; + + /** * Staged error dialog fragments that were unable to be shown when the hosting activity didn't * allow committing fragment transactions. @@ -290,23 +290,6 @@ public abstract class PreviewFragment extends AppbarFragment implements } } - protected void setUpExploreIntentAndLabel(@Nullable Runnable callback) { - Context context = getContext(); - if (context == null) { - return; - } - - WallpaperInfoHelper.loadExploreIntent(context, mWallpaper, - (actionLabel, exploreIntent) -> { - mActionLabel = actionLabel; - mExploreIntent = exploreIntent; - if (callback != null) { - callback.run(); - } - } - ); - } - protected abstract boolean isLoaded(); @Override @@ -348,17 +331,6 @@ public abstract class PreviewFragment extends AppbarFragment implements mWallpaper instanceof LiveWallpaperInfo); } - protected void onExploreClicked(View button) { - if (getContext() == null) { - return; - } - Context context = getContext(); - mUserEventLogger.logActionClicked(mWallpaper.getCollectionId(context), - mWallpaper.getActionLabelRes(context)); - - startActivity(mExploreIntent); - } - protected void setUpTabs(TabLayout tabs) { tabs.addTab(tabs.newTab().setText(getContext().getString(R.string.home_screen_message))); tabs.addTab(tabs.newTab().setText(getContext().getString(R.string.lock_screen_message))); @@ -454,4 +426,70 @@ public abstract class PreviewFragment extends AppbarFragment implements return getResources().getConfiguration().getLayoutDirection() == View.LAYOUT_DIRECTION_RTL; } + + protected final class WallpaperInfoContent extends BottomSheetContent { + + @Nullable private Intent mExploreIntent; + private CharSequence mActionLabel; + + protected WallpaperInfoContent(Context context) { + super(context); + } + + @Override + public int getViewId() { + return R.layout.wallpaper_info_view; + } + + @Override + public void onViewCreated(WallpaperInfoView view) { + if (mWallpaper == null) { + return; + } + + if (mActionLabel == null) { + setUpExploreIntentAndLabel(() -> populateWallpaperInfo(view)); + } else { + populateWallpaperInfo(view); + } + } + + private void setUpExploreIntentAndLabel(@Nullable Runnable callback) { + Context context = getContext(); + if (context == null) { + return; + } + + WallpaperInfoHelper.loadExploreIntent(context, mWallpaper, + (actionLabel, exploreIntent) -> { + mActionLabel = actionLabel; + mExploreIntent = exploreIntent; + if (callback != null) { + callback.run(); + } + } + ); + } + + private void onExploreClicked(View button) { + Context context = getContext(); + if (context == null) { + return; + } + + mUserEventLogger.logActionClicked(mWallpaper.getCollectionId(context), + mWallpaper.getActionLabelRes(context)); + + startActivity(mExploreIntent); + } + + private void populateWallpaperInfo(WallpaperInfoView view) { + view.populateWallpaperInfo( + mWallpaper, + mActionLabel, + WallpaperInfoHelper.shouldShowExploreButton( + getContext(), mExploreIntent), + this::onExploreClicked); + } + } } diff --git a/src/com/android/wallpaper/widget/BottomActionBar.java b/src/com/android/wallpaper/widget/BottomActionBar.java index 8c0169b..c20d578 100644 --- a/src/com/android/wallpaper/widget/BottomActionBar.java +++ b/src/com/android/wallpaper/widget/BottomActionBar.java @@ -28,6 +28,7 @@ import android.widget.Button; import android.widget.FrameLayout; import android.widget.ImageView; +import androidx.annotation.LayoutRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.widget.ImageViewCompat; @@ -96,6 +97,52 @@ public class BottomActionBar extends FrameLayout { void onBottomSheetExpanded(); } + /** + * Object to host content view for bottom sheet to display. + * + *

The view would be created in the constructor. + */ + public static abstract class BottomSheetContent { + + private T mContentView; + private boolean mIsVisible; + + public BottomSheetContent(Context context) { + mContentView = createView(context); + setVisibility(false); + } + + /** Gets the view id to inflate. */ + @LayoutRes + public abstract int getViewId(); + + /** Gets called when the content view is created. */ + public abstract void onViewCreated(T view); + + /** Gets called when the current content view is going to recreate. */ + public void onRecreateView(T oldView) {} + + private void recreateView(Context context) { + // Inform that the view is going to recreate. + onRecreateView(mContentView); + // Create a new view with the given context. + mContentView = createView(context); + setVisibility(mIsVisible); + } + + private T createView(Context context) { + T contentView = (T) LayoutInflater.from(context).inflate(getViewId(), null); + onViewCreated(contentView); + contentView.setFocusable(true); + return contentView; + } + + private void setVisibility(boolean isVisible) { + mIsVisible = isVisible; + mContentView.setVisibility(mIsVisible ? VISIBLE : GONE); + } + } + // TODO(b/154299462): Separate downloadable related actions from WallpaperPicker. /** The action items in the bottom action bar. */ public enum BottomAction { @@ -103,7 +150,8 @@ public class BottomActionBar extends FrameLayout { } private final Map mActionMap = new EnumMap<>(BottomAction.class); - private final Map mContentViewMap = new EnumMap<>(BottomAction.class); + private final Map> mContentViewMap = + new EnumMap<>(BottomAction.class); private final Map mActionSelectedListeners = new EnumMap<>(BottomAction.class); @@ -185,17 +233,16 @@ public class BottomActionBar extends FrameLayout { } /** - * Adds content view to the bottom sheet and binds with a {@code BottomAction} to - * expand / collapse the bottom sheet. + * Binds the {@code bottomSheetContent} with the {@code action}, the {@code action} button + * would be able to expand/collapse the bottom sheet to show the content. * - * @param contentView the view with content to be added on the bottom sheet + * @param bottomSheetContent the content object with view being added to the bottom sheet * @param action the action to be bound to expand / collapse the bottom sheet */ - public void attachViewToBottomSheetAndBindAction(View contentView, BottomAction action) { - contentView.setVisibility(GONE); - contentView.setFocusable(true); - mContentViewMap.put(action, contentView); - mBottomSheetView.addView(contentView); + public void bindBottomSheetContentWithAction(BottomSheetContent bottomSheetContent, + BottomAction action) { + mContentViewMap.put(action, bottomSheetContent); + mBottomSheetView.addView(bottomSheetContent.mContentView); setActionClickListener(action, actionView -> { if (mBottomSheetBehavior.getState() == STATE_COLLAPSED) { updateContentViewFor(action); @@ -467,8 +514,18 @@ public class BottomActionBar extends FrameLayout { /** Dynamic update color with {@code Context}. */ public void setColor(Context context) { + // Set bottom sheet background. mBottomSheetView.setBackground(context.getDrawable(R.drawable.bottom_sheet_background)); + if (mBottomSheetView.getChildCount() > 0) { + // Update the bottom sheet content view if any. + mBottomSheetView.removeAllViews(); + mContentViewMap.values().forEach(bottomSheetContent -> { + bottomSheetContent.recreateView(context); + mBottomSheetView.addView(bottomSheetContent.mContentView); + }); + } + // Set the bar background and action buttons. ViewGroup actionTabs = findViewById(R.id.action_tabs); actionTabs.setBackgroundColor( ResourceUtils.getColorAttr(context, android.R.attr.colorBackground)); @@ -507,7 +564,7 @@ public class BottomActionBar extends FrameLayout { } private void updateContentViewFor(BottomAction action) { - mContentViewMap.forEach((a, v) -> v.setVisibility(a.equals(action) ? VISIBLE : GONE)); + mContentViewMap.forEach((a, content) -> content.setVisibility(a.equals(action))); } private boolean isExpandable(BottomAction action) { -- cgit v1.2.3 From 20386512c8af36410a0b3bd7975a50d7e6fb2fcd Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Thu, 24 Jun 2021 21:06:46 +0000 Subject: Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I2fb0dd29710a2bd68cca146ec6e9ac3c1f300185 --- res/values-en-rAU/strings.xml | 2 +- res/values-en-rCA/strings.xml | 2 +- res/values-en-rGB/strings.xml | 2 +- res/values-en-rIN/strings.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml index e18c790..29ab0df 100644 --- a/res/values-en-rAU/strings.xml +++ b/res/values-en-rAU/strings.xml @@ -21,7 +21,7 @@ "Wallpaper categories" - "Set Wallpaper" + "Set wallpaper" "Setting wallpaper…" "Try again" "Unable to set wallpaper." diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml index e18c790..29ab0df 100644 --- a/res/values-en-rCA/strings.xml +++ b/res/values-en-rCA/strings.xml @@ -21,7 +21,7 @@ "Wallpaper categories" - "Set Wallpaper" + "Set wallpaper" "Setting wallpaper…" "Try again" "Unable to set wallpaper." diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index e18c790..29ab0df 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -21,7 +21,7 @@ "Wallpaper categories" - "Set Wallpaper" + "Set wallpaper" "Setting wallpaper…" "Try again" "Unable to set wallpaper." diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml index e18c790..29ab0df 100644 --- a/res/values-en-rIN/strings.xml +++ b/res/values-en-rIN/strings.xml @@ -21,7 +21,7 @@ "Wallpaper categories" - "Set Wallpaper" + "Set wallpaper" "Setting wallpaper…" "Try again" "Unable to set wallpaper." -- cgit v1.2.3 From 39ec8a0abba26d398ed28ee2ff0fc6de16f0970e Mon Sep 17 00:00:00 2001 From: Chihhang Chuang Date: Fri, 25 Jun 2021 13:47:07 +0800 Subject: Expose setFullScreenActions for extending class Bug: 191972346 Test: Manually Change-Id: Ib4f8a0ccb2c24721899a6e8f2596188dbbf9d6fe --- .../android/wallpaper/picker/PreviewFragment.java | 58 ++++++++++------------ 1 file changed, 27 insertions(+), 31 deletions(-) diff --git a/src/com/android/wallpaper/picker/PreviewFragment.java b/src/com/android/wallpaper/picker/PreviewFragment.java index 1c4b5ec..1867390 100755 --- a/src/com/android/wallpaper/picker/PreviewFragment.java +++ b/src/com/android/wallpaper/picker/PreviewFragment.java @@ -121,11 +121,6 @@ public abstract class PreviewFragment extends AppbarFragment implements private static final int UNUSED_REQUEST_CODE = 1; private static final String TAG = "PreviewFragment"; - @PreviewMode - protected int mPreviewMode; - - protected boolean mViewAsHome; - /** * When true, enables a test mode of operation -- in which certain UI features are disabled to * allow for UI tests to run correctly. Works around issue in ProgressDialog currently where the @@ -141,8 +136,10 @@ public abstract class PreviewFragment extends AppbarFragment implements // For full screen animations. protected View mRootView; protected FullScreenAnimation mFullScreenAnimation; + @PreviewMode protected int mPreviewMode; + protected boolean mViewAsHome; - + private OnBackPressedCallback mOnBackPressedCallback; /** * Staged error dialog fragments that were unable to be shown when the hosting activity didn't @@ -207,17 +204,34 @@ public abstract class PreviewFragment extends AppbarFragment implements protected void onBottomActionBarReady(BottomActionBar bottomActionBar) { super.onBottomActionBarReady(bottomActionBar); mBottomActionBar = bottomActionBar; - setBottomActionBarAndFullScreenActions(); - } - - private void setBottomActionBarAndFullScreenActions() { mBottomActionBar.setActionClickListener(EDIT, (view) -> { mFullScreenAnimation.startAnimation(/* toFullScreen= */ true); mBottomActionBar.deselectAction(EDIT); }); + setFullScreenActions(mRootView.findViewById(R.id.fullscreen_buttons_container)); + + if (mOnBackPressedCallback == null) { + mOnBackPressedCallback = new OnBackPressedCallback(true) { + @Override + public void handleOnBackPressed() { + if (mFullScreenAnimation.isFullScreen()) { + mFullScreenAnimation.startAnimation(/* toFullScreen= */ false); + return; + } + if (mBottomActionBar != null && !mBottomActionBar.isBottomSheetCollapsed()) { + mBottomActionBar.collapseBottomSheetIfExpanded(); + return; + } + getActivity().finish(); + } + }; + getActivity().getOnBackPressedDispatcher().addCallback(this, mOnBackPressedCallback); + } + } + protected void setFullScreenActions(View container) { // Update the button text for the current workspace visibility. - Button hideUiPreviewButton = mRootView.findViewById(R.id.hide_ui_preview_button); + Button hideUiPreviewButton = container.findViewById(R.id.hide_ui_preview_button); hideUiPreviewButton.setText(mFullScreenAnimation.getWorkspaceVisibility() ? R.string.hide_ui_preview_text : R.string.show_ui_preview_text); @@ -231,28 +245,10 @@ public abstract class PreviewFragment extends AppbarFragment implements mFullScreenAnimation.setWorkspaceVisibility(!visible); } ); - mRootView.findViewById(R.id.set_as_wallpaper_button).setOnClickListener( - this::onSetWallpaperClicked - ); + container.findViewById(R.id.set_as_wallpaper_button).setOnClickListener( + this::onSetWallpaperClicked); mFullScreenAnimation.ensureBottomActionBarIsCorrectlyLocated(); - - OnBackPressedCallback callback = new OnBackPressedCallback(true) { - @Override - public void handleOnBackPressed() { - if (mFullScreenAnimation.isFullScreen()) { - mFullScreenAnimation.startAnimation(/* toFullScreen= */ false); - return; - } - if (mBottomActionBar != null && !mBottomActionBar.isBottomSheetCollapsed()) { - mBottomActionBar.collapseBottomSheetIfExpanded(); - return; - } - getActivity().finish(); - } - }; - - getActivity().getOnBackPressedDispatcher().addCallback(this, callback); } protected List getAttributions(Context context) { -- cgit v1.2.3 From 45fccbaac0dffa1663901e9268bf0bbd0f260f63 Mon Sep 17 00:00:00 2001 From: Ching-Sung Li Date: Fri, 25 Jun 2021 16:13:02 +0800 Subject: Update the corner radius of bottom sheet Bug: 191388121 Test: Visually check Change-Id: I804c8b2aeec4374d2cea13d4876486edec0ec8f6 --- res/values/dimens.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 1b773ba..09fe893 100755 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -126,7 +126,7 @@ 13sp - ?android:attr/dialogCornerRadius + 12dp 16dp -- cgit v1.2.3 From 0f7efc427db50c301712470f83b8ef6db6b44762 Mon Sep 17 00:00:00 2001 From: Chihhang Chuang Date: Mon, 28 Jun 2021 21:41:05 +0800 Subject: Add a proper ripple for TabLayout tab Before: https://screenshot.googleplex.com/83xNLMev5SPBwnM.png https://screenshot.googleplex.com/BJaQxf3ejHY2nvA.png After: https://screenshot.googleplex.com/REcPT9yEcfQaMhC.png https://screenshot.googleplex.com/3ApXKz6LgDxQ8ZQ.png Bug: 191945576 Bug: 191978137 Bug: 191388121 Test: Manually Change-Id: I5ab38b8840779b59a0a80f7c2827b2d9cf415e3d --- res/drawable/separated_tabs_ripple_mask.xml | 28 ++++++++++++++++++++++ res/layout/separated_tabs.xml | 3 +-- .../android/wallpaper/picker/PreviewFragment.java | 4 ++-- .../wallpaper/widget/SeparatedTabLayout.java | 27 +++++++++++++++++++++ 4 files changed, 58 insertions(+), 4 deletions(-) create mode 100644 res/drawable/separated_tabs_ripple_mask.xml create mode 100644 src/com/android/wallpaper/widget/SeparatedTabLayout.java diff --git a/res/drawable/separated_tabs_ripple_mask.xml b/res/drawable/separated_tabs_ripple_mask.xml new file mode 100644 index 0000000..ad39a50 --- /dev/null +++ b/res/drawable/separated_tabs_ripple_mask.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + diff --git a/res/layout/separated_tabs.xml b/res/layout/separated_tabs.xml index e23ea05..12603e0 100644 --- a/res/layout/separated_tabs.xml +++ b/res/layout/separated_tabs.xml @@ -14,14 +14,13 @@ See the License for the specific language governing permissions and limitations under the License. --> - Date: Tue, 29 Jun 2021 14:42:12 +0800 Subject: Change the target activity of CategoryPickerActivity alias Set the target activity with our new UI Bug: 191209332 Test: manual Change-Id: I8633c35d7c3206297fc25f74cce1e8c141e628d0 --- AndroidManifest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 5c020af..72d721d 100755 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -91,7 +91,7 @@ -- cgit v1.2.3 From 11f5efb1fde23b8f69bcb3996fc7692cc8c1b704 Mon Sep 17 00:00:00 2001 From: Chihhang Chuang Date: Tue, 29 Jun 2021 15:15:46 +0800 Subject: Add a custom Tab selection effect for Viewpager swiping Mock: https://docs.google.com/presentation/d/1o1CGLwwpega6NlFVvkgIEnxiYsn2qSnTX4axCEXBkVg/edit?ts=60c12e95&resourcekey=0-gwPJERFbm4jFJnCk8ZG0Vg#slide=id.ge040080db2_0_54 Before: https://drive.google.com/file/d/1L-7g_8PiSEKvquuJvntCVoSZR7-CYxI9/view?usp=sharing After: https://drive.google.com/file/d/1_iFygqxfVc_tO4upX0RF0solwl_3-IYG/view?usp=sharing Bug: 191388121 Test: Manually Change-Id: Ieb75b69196283cbe45879230d895ebf02ec5cc71 --- Android.bp | 3 +- .../wallpaper/widget/SeparatedTabLayout.java | 95 +++++++++++++++++++++- 2 files changed, 95 insertions(+), 3 deletions(-) diff --git a/Android.bp b/Android.bp index 871e193..7e55969 100644 --- a/Android.bp +++ b/Android.bp @@ -27,11 +27,12 @@ android_library { static_libs: [ "androidx.appcompat_appcompat", "androidx.cardview_cardview", + "androidx-constraintlayout_constraintlayout", "androidx.exifinterface_exifinterface", "androidx.lifecycle_lifecycle-runtime-ktx", "androidx.recyclerview_recyclerview", "androidx.slice_slice-view", - "androidx-constraintlayout_constraintlayout", + "androidx.viewpager2_viewpager2", "com.google.android.material_material", "glide-prebuilt", "kotlinx-coroutines-android", diff --git a/src/com/android/wallpaper/widget/SeparatedTabLayout.java b/src/com/android/wallpaper/widget/SeparatedTabLayout.java index 793403f..8642485 100644 --- a/src/com/android/wallpaper/widget/SeparatedTabLayout.java +++ b/src/com/android/wallpaper/widget/SeparatedTabLayout.java @@ -1,17 +1,31 @@ package com.android.wallpaper.widget; +import static androidx.viewpager2.widget.ViewPager2.SCROLL_STATE_DRAGGING; +import static androidx.viewpager2.widget.ViewPager2.SCROLL_STATE_IDLE; +import static androidx.viewpager2.widget.ViewPager2.SCROLL_STATE_SETTLING; + import android.content.Context; import android.util.AttributeSet; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.viewpager2.widget.ViewPager2; +import androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback; import com.android.wallpaper.R; import com.google.android.material.tabs.TabLayout; -/** Custom {@link TabLayout} for separated tabs. */ -public class SeparatedTabLayout extends TabLayout { +import java.lang.ref.WeakReference; + +/** + * Custom {@link TabLayout} for separated tabs. + * + *

Don't use {@code TabLayoutMediator} for the tab layout, which binds the tab scrolling + * animation that is unwanted for the separated tab design. Uses {@link + * SeparatedTabLayout#setViewPager} to bind a {@link ViewPager2} to use the proper tab effect. + */ +public final class SeparatedTabLayout extends TabLayout { public SeparatedTabLayout(Context context, @Nullable AttributeSet attrs) { super(context, attrs); @@ -24,4 +38,81 @@ public class SeparatedTabLayout extends TabLayout { tab.view.setBackgroundResource(R.drawable.separated_tabs_ripple_mask); return tab; } + + /** Binds the given {@code viewPager} to the {@link SeparatedTabLayout}. */ + public void setViewPager(ViewPager2 viewPager) { + viewPager.registerOnPageChangeCallback(new SeparatedTabLayoutOnPageChangeCallback(this)); + addOnTabSelectedListener(new SeparatedTabLayoutOnTabSelectedListener(viewPager)); + } + + private static class SeparatedTabLayoutOnTabSelectedListener implements + OnTabSelectedListener { + private final WeakReference mViewPagerRef; + + private SeparatedTabLayoutOnTabSelectedListener(ViewPager2 viewPager) { + mViewPagerRef = new WeakReference<>(viewPager); + } + + @Override + public void onTabSelected(Tab tab) { + ViewPager2 viewPager = mViewPagerRef.get(); + if (viewPager != null && viewPager.getCurrentItem() != tab.getPosition()) { + viewPager.setCurrentItem(tab.getPosition()); + } + } + + @Override + public void onTabUnselected(Tab tab) {} + + @Override + public void onTabReselected(Tab tab) {} + } + + private static class SeparatedTabLayoutOnPageChangeCallback extends OnPageChangeCallback { + private final WeakReference mTabLayoutRef; + private int mPreviousScrollState = SCROLL_STATE_IDLE; + private int mScrollState = SCROLL_STATE_IDLE; + + private SeparatedTabLayoutOnPageChangeCallback(TabLayout tabLayout) { + mTabLayoutRef = new WeakReference<>(tabLayout); + } + + @Override + public void onPageSelected(final int position) { + if (isUserDragging()) { + // Don't update tab position here, wait for page scrolling done to update the tabs. + return; + } + // ViewPager2#setCurrentItem would run into here. + updateTabPositionIfNeeded(position); + } + + @Override + public void onPageScrollStateChanged(final int state) { + mPreviousScrollState = mScrollState; + mScrollState = state; + } + + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + // Update the tab when the scrolling page is full displayed and is user dragging case. + if (positionOffset == 0f && isUserDragging()) { + updateTabPositionIfNeeded(position); + } + } + + private boolean isUserDragging() { + return mPreviousScrollState == SCROLL_STATE_DRAGGING + && mScrollState == SCROLL_STATE_SETTLING; + } + + private void updateTabPositionIfNeeded(int position) { + TabLayout tabLayout = mTabLayoutRef.get(); + if (tabLayout != null + && tabLayout.getSelectedTabPosition() != position + && position < tabLayout.getTabCount()) { + tabLayout.selectTab(tabLayout.getTabAt(position), /* updateIndicator= */ true); + } + } + } } -- cgit v1.2.3 From 903bf341b24da4f76814c8fc3a90b9fbd1d37eca Mon Sep 17 00:00:00 2001 From: Chuck Liao Date: Tue, 29 Jun 2021 23:30:02 +0800 Subject: Adjust the set wallpaper dialog UI Spec: https://screenshot.googleplex.com/AAdfoXQ6BBv4hmH.png Result: https://screenshot.googleplex.com/4UCM5Z8AfSTpw8L.png Bug: 191992780 Test: manual Change-Id: I09789e1e36bd5e73b6f01bdeb6168f0c9d18ef43 --- res/layout/dialog_set_wallpaper.xml | 1 + res/layout/dialog_set_wallpaper_title.xml | 10 +++++++++- res/values-notnight-v27/styles.xml | 3 +++ res/values/dimens.xml | 2 +- res/values/styles.xml | 5 ++++- 5 files changed, 18 insertions(+), 3 deletions(-) diff --git a/res/layout/dialog_set_wallpaper.xml b/res/layout/dialog_set_wallpaper.xml index 81d6253..f1102bd 100755 --- a/res/layout/dialog_set_wallpaper.xml +++ b/res/layout/dialog_set_wallpaper.xml @@ -19,6 +19,7 @@ xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" android:layout_width="match_parent" android:layout_height="match_parent" + android:background="?androidprv:attr/colorSurface" android:padding="@dimen/set_wallpaper_dialog_padding"> + + diff --git a/res/values-notnight-v27/styles.xml b/res/values-notnight-v27/styles.xml index 72098f6..95c5ee5 100755 --- a/res/values-notnight-v27/styles.xml +++ b/res/values-notnight-v27/styles.xml @@ -44,5 +44,8 @@ diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 09fe893..8e13fb0 100755 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -89,7 +89,7 @@ 300dp 12dp 4dp - 24dp + 32dp 26dp diff --git a/res/values/styles.xml b/res/values/styles.xml index 051ca4b..071792b 100755 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -88,6 +88,9 @@