Android 12'den başlayarak, Material You tasarımı, kullanıcıların ihtiyaçlarına uygun tek, uyumlu bir deneyim oluşturmasına ve sahip olmasına yardımcı olmak amacıyla Android işletim sistemindeki ifadeye ve akıcılığa odaklanıyor. Bir Android iş ortağı olarak, tasarladığınız Materyalleri aşağıdaki alanlarda Android cihazlarınıza dahil etmeniz teşvik edilir:
- Dinamik renk
- Hareket
- Widget'lar
Dinamik renk
Dinamik renk, Material You tasarımının en önemli öğesidir ve Android'in kullanıcılarına başka hiçbir cihazın yapamayacağı şekilde daha basit ve daha derin özelleştirme sunma yönündeki uzun yıllara dayanan stratejisinin önemli bir parçasıdır. Sunduğunuz Malzemeler:
Kullanıcılar ve geliştiriciler, herhangi bir Android cihazında mevcut olan tutarlı, zengin bir kişiselleştirme hikayesine sahiptir.
Android OEM'leri, sistem kullanıcı arayüzünü ve birinci taraf uygulamalarını donanım ve marka rengine, markasına ve biçimine uygun olacak şekilde yenilemeye devam etme fırsatları.
Dinamik renkten yararlanmak için kullanıcılara yazılım teklifinizin önemli bir parçası olarak Android 12 Material You renk çıkarma hikayesini kullanın. Cihazda, AOSP'deki renk çıkarma mantığını, özellikle de tek bir duvar kağıdı veya tema kaynağı rengini alan ve bunu 65 renk API'si aracılığıyla çıkaran mantığı kullanın. Dinamik renk gereksinimleri için bkz. Dinamik Renk Kullanma .
Tam dinamik renk akışı aşağıda gösterildiği gibi dört adımdan oluşur:
Şekil 1. Material You dinamik renk akışı
Kullanıcı, OEM seçici aracılığıyla duvar kağıdını veya temayı değiştirir.
Kullanıcı aşağıdakilerden birini seçer:
Cihaz teması. Seçildiğinde Android, gereksinimleri karşılayan tek bir kaynak rengi otomatik olarak seçer.
Yeni duvar kağıdı + tema. Seçildiğinde, AOSP mantığı seçilen duvar kağıdından otomatik olarak tek bir kaynak rengi seçer.
AOSP, tek kaynak rengini, AOSP mantığına göre her biri 13 ton renk varyantına sahip 5 ton paletine genişletir ve bunlar daha sonra 65 renk niteliğini doldurur.
Uygulama kullanıcı arayüzü, 65 renk özelliğini Android uygulama ekosisteminde tutarlı olacak şekilde kullanır. Cihaz Sistem Kullanıcı Arayüzü ve OEM'e özel uygulamalar için aynı renk paletini kullanmanız önerilir.
Android 12 yamaları
Duvar kağıdı rengini çıkarmak için uçtan uca mantığı elde etmek ve cihazın 65 renkli API'leri ekosistemle tutarlı bir şekilde doldurmasını sağlamak için Android 12 uygulamanıza aşağıdaki yamaları ekleyin:
Zorunlu
Kesinlikle önerilir
- Önyükleme rengi sistem prop'larını ayarlarken yarış durumunu düzeltin.
- Kaplamaların tema değişiklikleri hakkında bilgilendirilmesine izin ver
- Önyükleme rengi sistem prop'larını ayarlarken yarış durumunu düzeltin (2. tur)
- FeatureFlags'i flags paketine taşıyın.
- Çok kullanıcılı tema desteğini doğru şekilde uygulayın
- Yeniden başlatmanın ardından eksik olan belirtilen duvar kağıdı renk seçeneğini düzeltin
- Üçüncül renk tonu hesaplama hatasını düzeltin
- Arka plan uygulamalarının temayı değiştirmesine izin verme
ThemePicker'da özel renkler belirtme
AOSP ThemePicker uygulamasını kullanıyorsanız, aşağıdaki koşulların her ikisinin de karşılanması durumunda WallpaperPicker uygulaması renk bölümünü gösterir:
-
frameworks/base/packages/SystemUI/res/values/flags.xml
üzerindekiflag_monet
true
. - Paket adına sahip bir sistem saplama APK'sı
packages/apps/ThemePicker/res/values/override.xml
dosyasındakithemes_stub_package
dosyasında tanımlanır.
Saplama APK biçimi
Bu APK'nın örnek bir sürümünü packages/apps/ThemePicker/themes
konumunda bulabilirsiniz.
Bu APK yalnızca mevcut temel renkleri ve adlarını ayrıntılı olarak açıklayan kaynakları içermelidir.
Saplama res/xml
altında aşağıdaki formatta bir XML dosyası içermelidir:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="color_bundles">
<item>color1</item>
<item>color2</item>
<item>color3</item>
<item>color4</item>
</array>
<string name="bundle_name_color1">Blue</string>
<string name="bundle_name_color2">Red</string>
<string name="bundle_name_color3">Yellow</string>
<string name="bundle_name_color4">Green</string>
</resources>
Bu dosyada, aşağıdaki dizeler bundle_name_ item
olarak adlandırıldığı sürece color_bundles
içindeki her item
ayrı bir adı vardır.
Her renk için açıklayıcı bir adla birlikte, her renk için bir bundle_name_ item
dizesi bulunmalıdır. Bunlar, karşılık gelen çevrilmiş dizelerin res/values- language code
dizinlerine eklenmesiyle çevrilebilir.
Gerçek renk değerleri aynı XML'de veya aşağıdaki formatta ayrı bir kaynak XML dosyasında olabilir:
<resources>
<color name="color_primary_color1">#0000FF</color>
<color name="color_secondary_color1">#0000FF</color>
<color name="color_primary_color2">#ff0000</color>
<color name="color_secondary_color2">#ff0000</color>
<color name="color_primary_color3">#ffff00</color>
<color name="color_secondary_color3">#ffff00</color>
<color name="color_primary_color4">#00ff00</color>
<color name="color_secondary_color4">#00ff00</color>
</resources>
Renk paketleri dizisindeki her öğe için bir color_primary_ item
ve bir color_secondary_ item
girişi bulunmalıdır (ve her iki renk de aynı renkte olmalıdır). Bu color
girişlerine ilişkin değerler, her rengin temel renk bölümünde gösterilecek gerçek renk kodlarıdır.
1. Adım: Kullanıcı teması deneyimi oluşturun
Tema seçici, kullanıcıların yeni Material You kişiselleştirme yetenekleriyle etkileşime geçtiği ve potansiyel olarak renk seçenekleri veya ön ayarlar arasında seçim yaptığı yerdir. Ürününüze ve kullanıcı demografinize uygun olduğundan, bir tema seçici veya duvar kağıdı seçici kullanarak kullanıcılara daha zengin bir kişiselleştirme ve renk deneyimi sunabilirsiniz.
- Duvar kağıdı seçiciyi kullanırken duvar kağıdı rengini çıkarma varsayılan olarak açıktır. Ancak kullanıcıya daha fazla seçenek sunmak için seçicide bazı özelleştirmeler yapabilirsiniz.
2. Adım: Duvar kağıdı rengini kaynak renge çıkarın
Duvar kağıdı rengini çıkarmayı etkinleştirmek için yukarıda listelenen Android 12 yamalarını seçin (bu işlevsellik, gelecekteki bir AOSP sürümünde varsayılan olarak etkinleştirilecektir). Duvar kağıdı çıkartmayı tetikleyen AOSP mantığı frameworks/base/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java
adresinde, ThemeOverlayController#mOnColorsChangedListener
üzerinde, WallpaperManager#onWallpaperColorsChanged
yoluyla başlar. Tutarlı bir geliştirme deneyimi sağlamak için değiştirilmemiş AOSP mantığını kullanmanızı öneririz.
Varsayılan olarak mantık, kullanıma uygun en yüksek frekanslı rengi seçer. Algoritmanın döndürdüğü diğer kaynak renklerden yararlanmak ve bu renkleri tema seçicide kullanıcılara sunmak ColorScheme#getSeedColors(wallpaperColors: WallpaperColors)
kullanın.
Kullanıma uygun olması için, bir kaynak rengin (ister duvar kağıdından ister kullanıcı tarafından seçilen bir ön ayardan alınmış olsun) minimum CAM16 renk değeri 5 olmalıdır; bu, kaynak rengin tek bir renkten 65 tonlu renge dönüştürüldüğünde ince koyu tonlardan etkilenmemesini ve kullanıcının tercihini temsil etmeye devam etmesini sağlar. CAM16'daki renkleri okumak ve değiştirmek için Cam#fromInt
veya Cam#getInt
kullanın.
Dinamik olmayan bir renk paleti kullanma Duvar kağıdı rengini çıkarmayı desteklemeyen cihazlar için, aşağıdakileri yaparak dinamik rengi destekleyen Google uygulamalarının ve üçüncü taraf uygulamalarının harika görünmesini sağlayabilirsiniz:
frameworks/base/packages/SystemUI/res/values/flags.xml
üzerindeflag_monet
devre dışı bırakarak varsayılan Malzeme paletini kullanın.- Kullanıcıların önceden ayarlanmış bir tema seçiciyi kullanarak işletim sistemlerini hâlâ kişiselleştirebildiğinden emin olun.
3. Adım: Kaynak rengi renk API'lerine genişletin
Android, önceki adımdan türetilen tek kaynak rengi kullanarak, her biri 13 renk içeren ve her renk farklı parlaklık değerleri (0 ila 1000) içeren 5 benzersiz ton paleti (vurgu 1-3, nötr 1-2) oluşturur. toplam 65 renk. Android 12 yamalarında sağlanan mantık bu renk açılımını doğru şekilde uyguluyor; Aşağıda verilen ayrıntılar uygulamayı açıklamaktadır.
Geliştirici tutarlılığı için, 5 ton paleti (vurgu1, vurgu2, vurgu3, nötr1, nötr2) ve bunlara karşılık gelen 13 renk, aşağıda yazıldığı gibi CAM16 renk ve renk tonu değerlerinde ilgili değişikliklerle birlikte tek kaynak rengi temel almalıdır:
- Renk: "16"yı kullan
- Renk tonu: kaynakla aynı
- Renk: "32"yi kullan
- Renk tonu: 60 derece pozitif yönde döndür
- Renk: "4" kullanın
- Renk tonu: kaynakla aynı
- Renk: "8"i kullan
- Renk tonu: kaynakla aynı
CTS, parlaklık ve renk tonu API çağrılarını doğrulamaya yönelik testler içerir. Çalıştırmak için atest SystemPalette
kullanın.
4. Adım: Uygulamalarda ve Sistem Kullanıcı Arayüzünde dinamik renkleri kullanın
Cihazda dinamik renkler ayarlandıktan sonra uygulamalar, renkleri kullanmak için Malzeme yönergelerini izler. Üçüncü taraf uygulamaların benimsemesi için materyal yönergeleri 26 Ekim 2021'e kadar materyal.io'da yayınlanacak. Sistem Kullanıcı Arayüzü ve birinci taraf uygulamalar için, dinamik renklerin kullanıcı deneyimi boyunca donanımınıza ve markanıza uygun olacak ve cihazlarınızı farklılaştırmanıza yardımcı olacak şekilde entegre edilmesini önemle tavsiye ederiz.
Genel dinamik renk kılavuzu için aşağıdakilere bakın:
Uygulamalarda ve Sistem Kullanıcı Arayüzünde ön plan öğeleri için vurgu renkleri kullanın:
@android:color/system_accent1_0 … 1000 // most-used foreground color group @android:color/system_accent2_0 … 1000 // alternate accent, used for surfaces @android:color/system_accent3_0 … 1000 // playful, analogous color
Uygulamalardaki ve Sistem Kullanıcı Arayüzündeki arka plan öğeleri için nötr renkler kullanın:
@android:color/system_neutral1_0 … 1000 // most-used background color group @android:color/system_neutral2_0 … 1000 // used for higher-elevation surfaces
Material You'nun renkleri nasıl eşlediği ve API'lerin SysUI'de nasıl kullanıldığı hakkında daha fazla bilgi için bkz. Ek Kaynaklar .
5. Adım: AOSP WallpaperPicker uygulamanıza dinamik renk seçenekleri ekleyin
Android 13 ve üzeri için derleme
Android 13'ten itibaren android.theme.customization.accent_color
kullanımdan kaldırılmıştır. Farklı renk çeşitlerini desteklemek için yeni bir android.theme.customization.theme_style
özelliği eklendi. Şu anda kod tabanında aşağıdaki gibi dört çeşidimiz var:
TONAL_SPOT = Default Material You theme since Android S.
VIBRANT = Theme where accent 2 and 3 are analogous to accent 1.
EXPRESSIVE = Highly chromatic theme.
SPRITZ = Desaturated theme, almost grayscale.
Bunlar, aşağıda JSON'da gösterildiği gibi Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES
adresine gönderilir:
{
"android.theme.customization.system_palette":"B1611C",
"android.theme.customization.theme_style":"EXPRESSIVE"
}
Android 12 ve daha düşük sürümler için derleme
Özel bir tema seçici kullanıldığında, cihazın aşağıdaki formatta bir JSON dosyası sağlayarak Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES
geçerli bir kaynak rengi göndermesi gerekir (burada 746BC1
geçerli bir kaynak rengi örneğidir):
{
"android.theme.customization.system_palette":"746BC1",
"android.theme.customization.accent_color":"746BC1"
}
Bunu yapmak duvar kağıdı rengi çıkarma işlemini atlar (2. Adım) ve sağlanan kaynak rengi doğrudan 65 renk niteliğine genişletir (3. Adım).
6. Adım: Bilet gönderin
Sistem entegrasyonunun yanı sıra, bir bildirimde bulunarak marka adınızı ( Build.MANUFACTURER
) bize bildirmeniz gerekmektedir. 3. taraf uygulamaların çoğu, dinamik renkleri göstermek için Android için Malzeme Bileşenleri'ni kullandığından, hangi cihazların Dinamik renk ton paletleri özelliğini entegre ettiğini belirtmek için sabit kodlu bir izin verilenler listesi kullanıyoruz.
Hareket
Akıcı hareket, cihazların modern ve birinci sınıf hissetmesini sağlar. Geliştiricinin güvenini ve mutluluğunu oluşturmak ve sürdürmek için kaydırma ve dalgalanma, akıcı hareketin tutarlı görünmesi ve hissedilmesi gereken iki önemli parçasıdır.
İşletim sisteminizde overscroll'u kullanma
Android 12, kullanıcı bir listenin kenarını kaydırmaya çalıştığında gösterilen, görünüm genişletme biçiminde daha duyarlı, dinamik bir kaydırma hareketi içerir. Aşağıda bir örnek gösterilmiştir:
Şekil 2. Ayarlar'da gösterildiği gibi Android 12 kaydırma efekti
Geliştirici tutarlılığı için cihazlarınızdaki genel kaydırma efektinin aşağıdakine benzer olduğundan emin olun:
ActivityManager.isHighEndGfx()
için true değerini döndüren cihazlarda, kaydırma efekti ekranın doğrusal olmayan bir şekilde uzatılmasıdır (yukarıda gösterildiği gibi).Daha düşük performanslı cihazlarda, esneme etkisi doğrusal bir esneme şeklinde basitleştirilmiştir (sistem üzerindeki yükü azaltmak için).
Birinci taraf uygulamalarda kaydırmayı kullanma
Özel görünümleri kullanırken, uzatma efektini kullanan bazı uygulamalarda ve sistem kullanıcı arayüzünde ince ayar yapmanız gerekebilir.
Genişletilmiş kaydırmayı desteklemek için en son kitaplıklara yükseltin:
-
androidx.recyclerview:recyclerview:1.3.0-alpha01
RecyclerView
için -
NestedScrollView
veEdgeEffectCompat
içinandroidx.core:core:1.7.0-alpha01
-
ViewPager
içinandroidx.viewpager:viewpager:1.1-alpha01
-
EdgeEffect
kullanan özel düzenler için aşağıdaki UX değişikliklerini göz önünde bulundurun:Uzatarak kaydırma ile kullanıcıların düzen uzatılırken düzenin içeriğiyle etkileşimde bulunmaması gerekir. Kullanıcılar yalnızca uzatmanın kendisini yönetebilmeli ve örneğin içerikteki bir düğmeye basamamalıdır.
Kullanıcılar
EdgeEffect
animasyonu gerçekleşirken içeriğe dokunduklarında animasyonu yakalamalı ve uzatmayı değiştirmelerine izin verilmelidir. Geçerli çekme değerineEdgeEffectCompat.getDistance()
adresinden ulaşılabilir.Çekme değerini değiştirmek ve tüketilen miktarı döndürmek için
onPullDistance()
işlevini kullanın. Bu, parmak içeriği başlangıç konumundan sonra uzatırken geliştiricilerin uzatmadan kaydırmaya sorunsuz bir şekilde geçiş yapmasına olanak tanır.İç içe kaydırmayla çalışırken, içerik uzatılırsa uzatmanın, iç içe geçmiş içerikten önce dokunma hareketini tüketmesi gerekir; aksi halde, parmak yön değiştirdiğinde, uzatmayı serbest bırakmak yerine iç içe yerleştirme kaydırılabilir.
Aşırı kaydırmayla ilgili ayrıntılar için Kaydırma Hareketini Canlandırma konusuna bakın.
İşletim sisteminizde dalgalanmayı (dokunmatik geri bildirim) kullanma
Android 12, dokunduğunuzda kullanıcılara geri bildirim sağlamak için daha yumuşak, daha ince bir dokunma dalgası içerir.
Şekil 3. Daha yumuşak bir dolgu animasyonuna sahip Android 12 dalgalanma efekti
Geliştiricinin öngörülebilirliği ve harika bir kullanıcı deneyimi sağlamak için cihazlarınızdaki dalgalanma etkisinin yukarıda gösterilen örneğe benzer olduğundan emin olun. Dalgalanma etkilerini desteklemek için herhangi bir özel entegrasyon adımı uygulamanıza gerek olmasa da, uygulamanızda ortaya çıkan istenmeyen gerilemeleri kontrol etmek için cihazlarınızdaki etkiyi test etmelisiniz.
Widget'lar
Widget'lar bir Android cihazının temel bileşenleridir. Android 12, tüm OEM'lerin desteklemesi gereken yeni API'leri ve API yeteneklerini içerir.
İşletim sisteminizde, widget düzenleri, boyutlandırma ve yazılım parametreleriyle (örneğin, yuvarlatılmış köşe boyutu) ilgili geliştirici API'lerini destekleyin. Uygulamanız, API'ler aracılığıyla parametrelerin sağlanmasında ve pencere öğelerinin kullanıcı tarafından boyutlandırılabilir ve yapılandırılabilir olmasını sağlama konusunda pencere öğelerini doğru şekilde desteklemelidir.
Uygulamalarınızda mümkün olduğunca yeni birinci taraf widget'ları güncellemek veya oluşturmak için yeni API özelliklerinden yararlanın. Kapsamınızdaki tüm birinci taraf uygulama widget'ları için aşağıdaki geliştirici kontrol listesini inceleyin.
- Öncelik, platformdan gelen önerilere dayanmaktadır.
- Bir öneriyle ilgili ayrıntılar için Değişiklik sütunundaki bağlantıyı izleyin.
Alan Değiştirmek Uygulama önceliği Ev deneyimini geliştirin Ölçeklenebilir önizlemeler ekleyin P1 Widget açıklaması ekleyin P1 Widget'ları kişiselleştirmeyi kolaylaştırın P2 (isteğe bağlı) Daha yumuşak geçişleri etkinleştirin P0 Yayın trambolinlerinden kaçının P0 Widget yönergelerini benimseyin Widget boyutlarını ve düzenlerini iyileştirin P2 Dinamik renkler uygulayın P0 Yuvarlatılmış köşeleri uygulayın P0 Yeni bileşik düğmeler ekleyin P2 Mevcut widget kodunu basitleştirin RemoteView Koleksiyonlarını Basitleştirin P2 RemoteView çalışma zamanını basitleştirin P2
Ek kaynaklar
SysUI renk kullanımı
(vurgu1 = A1, vurgu2 = A2, vurgu3 = A3, nötr1 = N1, nötr2 = N2)
Şekil 4. Sistem Kullanıcı Arayüzünde dinamik renk kullanımı
Malzeme kitaplığı renk özelliği güncellemeleri
Malzeme, belirli görünümlere renk sağlamak için kullanılan renk rolleri oluşturarak gelecek sürümde tema niteliklerini güncelleyecektir.
Renk rolü | Android Tema Özelliği | Işık Teması Dinamik Renk | Koyu Tema Dinamik Renk |
---|---|---|---|
Öncelik | renkBirincil | system_accent1_600 | system_accent1_200 |
İlköğretimde | colorOnPrimary | sistem_accent1_0 | system_accent1_800 |
İkincil | renkİkincil | system_accent2_600 | system_accent2_200 |
İkincilde | colorOnSecondary | system_accent2_0 | system_accent2_800 |
Hata | renk hatası | Yok (kırmızı_600) | Yok (kırmızı_200) |
Hata Durumunda | colorOnError | Yok (beyaz) | Yok (kırmızı_900) |
Arka plan | android:renkliArkaplan | sistem_neutral1_10 | system_neutral1_900 |
Arka Planda | RenkliArka Planda | system_neutral1_900 | system_neutral1_100 |
Yüzey | renkYüzey | sistem_neutral1_10 | system_neutral1_900 |
Yüzeyde | colorOnSurface | system_neutral1_900 | system_neutral1_100 |
Malzeme, durum özelliklerini aşağıdaki işaretçilerle güncelleyecektir:
Renk rolü | Android Tema Özelliği | Işık Teması Dinamik Renk | Koyu Tema Dinamik Renk |
---|---|---|---|
Birincil Durum İçeriği | colorPrimaryStateContent | system_accent1_700 | system_accent1_200 |
Birincil Durum Katmanı | colorPrimaryStateLayer | system_accent1_600 | system_accent1_300 |
İkincil Durum İçeriği | colorSecondaryStateContent | system_accent2_700 | system_accent2_200 |
İkincil Durum Katmanı | renkİkincilDurumKatmanı | system_accent2_600 | system_accent2_300 |
Birincil Durum İçeriği Hakkında | colorOnPrimaryStateContent | sistem_accent1_0 | system_accent1_800 |
Birincil Durum Katmanında | colorOnPrimaryStateLayer | system_accent1_900 | system_accent1_800 |
İkincil Durum İçeriği Hakkında | colorOnSecondaryStateContent | system_accent2_0 | system_accent2_800 |
İkincil Durum Katmanında | colorOnSecondaryStateLayer | system_accent2_900 | system_accent2_800 |
Birincil Kapsayıcı Durumu İçeriğinde | colorOnPrimaryContainerStateContent | system_accent1_900 | system_accent1_900 |
Birincil Konteyner Durumu Katmanında | colorOnPrimaryContainerStateLayer | system_accent1_900 | system_accent1_900 |
İkincil Konteyner Durumu İçeriği Hakkında | colorOnSecondaryContainerStateContent | system_accent2_900 | system_accent2_900 |
İkincil Konteyner Durumu Katmanında | colorOnSecondaryContainerStateLayer | system_accent2_900 | system_accent2_900 |
Üçüncül Konteyner Durumu İçeriği Hakkında | colorOnTertiaryContainerStateContent | system_accent3_900 | system_accent3_900 |
Üçüncül Konteyner Durumu Katmanında | colorOnTertiaryContainerStateLayer | system_accent3_900 | system_accent3_900 |
Yüzey Durumu İçeriğinde | colorOnSurfaceStateContent | system_neutral1_900 | system_neutral1_100 |
Yüzey Durumu Katmanında | colorOnSurfaceStateLayer | system_neutral1_900 | system_neutral1_100 |
Yüzeyde Değişken Durum İçeriği | colorOnSurfaceVariantStateContent | system_neutral2_700 | system_neutral2_200 |
Yüzeyde Değişken Durum Katmanı | colorOnSurfaceVariantStateLayer | system_neutral2_700 | system_neutral2_200 |
Hata Durumu İçeriği | colorErrorStateContent | kırmızı800 | kırmızı200 |
SSS
Renk çıkarma
Kullanıcı bir duvar kağıdını değiştirdiğinde renk çıkarma işlemi otomatik olarak mı yapılıyor yoksa bir yerden tetiklenmesi mi gerekiyor?
Android 12 yamalarında duvar kağıdı rengi çıkarma özelliği varsayılan olarak açıktır .
ThemeOverlayController.java
ThemeOverlayController#mOnColorsChangedListener
ve WallpaperManager#onWallpaperColorsChanged
ile mantığı tetikler.
Canlı Duvar Kağıtları veya Video Duvar Kağıtları için Renk Çıkarma işleminin ekrandaki rengi ne zaman aldığını bilebilir miyiz? Bazı kullanıcılar en çok zaman gösterdiği için son karedeki renkleri isteyebilir.
Kullanıcı duvar kağıdını ayarladığında veya ekran kapatıldıktan sonra ( WallpaperEngine#notifyColorsChanged
yanıt olarak) renk çıkarma tetiklenir. Son WallpaperColors
olayı (canlı duvar kağıdından), kullanıcı ekranı kapatıp tekrar açtıktan sonra uygulanır.
Tema/duvar kağıdı seçici
Tema seçicinin, kullanıcıların en yüksek frekanslı renk yerine birden fazla kaynak rengi seçmesini nasıl sağlayabilirim? Bu renkleri çıkarma mantığından almanın bir yolu var mı?
Evet. Tema seçicinizde ColorScheme#getSeedColors(wallpaperColors: WallpaperColors)
kullanabilirsiniz.
Pixel adlarında temalı Simge olarak bir özellik var. Paylaştığınız üç yama arasında yer alıyor mu? OEM'ler bunu nasıl uygulayabilir?
Hayır. Temalı simgeler Beta sürümündedir ve Android 12'de mevcut değildir.
Google Duvar Kağıdı uygulamasını renk çıkarma ve seçme özellikleri etkinken kullanmanın bir yolu var mı?
Evet. Özellikler, bu sayfada daha önce açıklanan entegrasyon adımları izlenerek Google Duvar Kağıdı uygulamasının en son sürümüne uygulanabilir.
Daha fazla ayrıntı için TAM'inize ulaşın.
Google, OEM'lerin ayarlar menüsünde, Google'ın Duvar Kağıdı seçici uygulamasında gösterilen önizleme bölümüne benzeyen kendi dinamik renk önizleme sürümünü uygulayabilmeleri için uygulamayı veya kaynak kodunu paylaşabilir mi?
Önizlemeyi oluşturan ana sınıflar WallpaperPicker2
ve Launcher3
.
Duvar kağıdı önizleme ekranı WallpaperSectionController
.
Google Duvar Kağıdı uygulamasında gösterildiği gibi rengi değiştirdikten sonra Önizleme nasıl uygulanır?
Duvar kağıdı seçici uygulaması, bir ContentProvider
Başlatıcı'dan kullanılabilir olmasını bekler ( Launcher3
tabanlı bir başlatıcıda bulunur). Önizleme, Başlatıcı'daki GridCustomizationsProvider
tarafından sağlanır ve duvar kağıdı ve stil uygulamasının okuyabilmesi için Başlatıcı'nın ana Faaliyet meta verilerinde buna başvurulması gerekir. Bunların tümü AOSP'nin Launcher3'ünde uygulanmaktadır ve OEM'lerin kullanımına açıktır.