
Koyu tema, Android 10 (API düzeyi 29) ve sonraki sürümlerde kullanılabilir. Bu yöntemin şu avantajları vardır:
- Cihazın özelliklerine bağlı olarak güç kullanımını önemli ölçüde azaltır ekran teknolojisi.
- Az gören ve hassas olan kullanıcılar için görünürlüğü artırır parlak ışıkta kullanın.
- Düşük ışıklı ortamlarda cihazın kullanımını kolaylaştırır.
Koyu tema, Android sistem kullanıcı arayüzü ve cihazda çalışan uygulamalar için geçerlidir.
Android 10 ve sonraki sürümlerde koyu temayı etkinleştirmenin üç yolu vardır:
- Koyu temayı etkinleştirmek için Ayarlar > Ekran > Tema'ya giderek sistem ayarını kullanın.
- Etkinleştirildiğinde, bildirim tepsisinden tema değiştirmek için Hızlı Ayarlar kartını kullanın.
- Pixel cihazlarda, koyu temayı aynı anda etkinleştirmek için Pil Tasarrufu modunu etkinleştirin gerekir. Diğer cihazlar bu davranışı desteklemeyebilir.
Web Görünümü bileşeni kullanarak web tabanlı içeriğe koyu tema uygulamayla ilgili talimatlar için WebView'de web içeriğini koyulaştırma başlıklı makaleyi inceleyin.
Uygulamanızda koyu temayı destekleme
Koyu temayı desteklemek için uygulamanızın temasını ayarlayın. Bu özellik, genellikle şurada bulunur:
res/values/styles.xml
: Bir DayNight
temasından devralmak için:
<style name="AppTheme" parent="Theme.AppCompat.DayNight">
Material Components koyu temasını da kullanabilirsiniz:
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
Bu, uygulamanın ana temasını sistem kontrollü gece modu işaretleriyle ilişkilendirir ve etkinleştirildiğinde uygulamaya varsayılan koyu tema verir.
Temalar ve stiller
Açık tema altında kullanılmak üzere tasarlanmış sabit kodlu renkler veya simgeler kullanmaktan kaçının. Tekliflerinizi otomatikleştirmek ve optimize etmek için ya da gece için uygun kaynakları kullanın.
Koyu tema için en önemli iki tema özelliği şunlardır:
?android:attr/textColorPrimary
: Genel amaçlı bir metin rengi. Evet açık temada neredeyse siyah, koyu temalarda ise yakın beyaz. Devre dışı bir durum içerir.?attr/colorControlNormal
: genel amaçlı bir simge rengi. Devre dışı bir durum içerir.
Tema özellikleri ?attr/colorSurface
ve ?attr/colorOnSurface
gibi renk temalandırma sistemi, uygun renklere kolay erişim sağladığından Material Design bileşenlerini kullanmanızı öneririz. Bu özellikleri temanızda özelleştirebilirsiniz.
Uygulama içinde temaları değiştirme
Kullanıcıların uygulama çalışırken temasını değiştirmelerine izin verebilirsiniz. Aşağıdakiler önerilen seçenekler şunlardır:
- Hafif
- Kasvetli
- Sistem varsayılanı (önerilen varsayılan seçenek)
Bu seçenekler doğrudan AppCompat.DayNight
modlarıyla eşlenir:
Işık:
MODE_NIGHT_NO
.Koyu:
MODE_NIGHT_YES
.Sistem varsayılanı:
MODE_NIGHT_FOLLOW_SYSTEM
.
Temayı değiştirmek için şunları yapın:
API düzeyi 31 ve sonraki sürümlerde, sistemin uygulamanızın hangi temayı kullandığını bilmesi için
UiModeManager#setApplicationNightMode
öğesini kullanın. Bu sayede sistem, açılış ekranındaki temayla eşleşebilir.API düzeyi 30 ve önceki sürümlerde
AppCompatDelegate.setDefaultNightMode()
dokunun.
Zorunlu koyu mod
Android 10, geliştiricilerin şunları yapması için Force Dark özelliğini sunar.
özel bir DayNight
teması ayarlamadan hızlıca koyu tema uygulayabilirsiniz.
Koyu Güç, açık temalı uygulamanızın her görünümünü analiz eder ve koyu bir tema uygular otomatik olarak güncellenir. Koyu temanın bir karışımını kullanabilirsiniz karanlık uygulamalar için gereken süreyi kısaltmak amacıyla yerel uygulama ile tıklayın.
Uygulamalar, şurada android:forceDarkAllowed="true"
ayarlayarak Karanlığı Zorla'yı etkinleştirmelidir:
ve aktiviteye son derece yaklaşırsınız. Bu özellik, sistem ve AndroidX tarafından sağlanan tüm açık temalarda (ör. Theme.Material.Light
) ayarlanır. Koyu Modu Zorunlu Tut'u kullandığınızda uygulamanızı kapsamlı bir şekilde test edin ve gerektiğinde görünümleri hariç tutun.
Uygulamanız koyu tema (ör. Theme.Material
) kullanıyorsa Koyu Temayı Zorla seçeneği uygulanmaz. Benzer şekilde, uygulamanızın teması bir DayNight
temasından devralıyorsa Zorunlu Kıl
Otomatik tema geçişi nedeniyle koyu renk uygulanmaz.
Bir görünümde koyu modu zorlamayı devre dışı bırakma
Zorunlu karanlık modu, belirli görünümlerde android:forceDarkAllowed
düzen özelliği veya setForceDarkAllowed()
ile kontrol edilebilir.
Web içeriği
Web tabanlı içerikte koyu tema kullanma hakkında bilgi edinmek için Web'i koyulaştır içeriklerdir. WebView'e uygulanan koyu tema örneği için GitHub'daki WebView demosuna göz atın.
En iyi uygulamalar
Aşağıdaki bölümlerde, koyu temaları uygulamayla ilgili en iyi uygulamalar sunulmaktadır.
Bildirimler ve widget'lar
Cihazınızda görüntülediğiniz ancak doğrudan kontrol etmediğiniz kullanıcı arayüzü yüzeylerinde, kullandığınız görünümlerin barındıran uygulamanın temasını yansıttığından emin olun. Bildirimler ve başlatıcı widget'ları buna örnek gösterilebilir.
Bildirimler
Sistem tarafından sağlanan bildirim şablonlarını (ör. MessagingStyle
) kullanın. Bu
sistemin doğru görünüm stilini uygulamaktan sorumlu olduğu anlamına gelir.
Widget'lar ve özel bildirim görünümleri
Başlatıcı widget'ları için veya uygulamanızda özel bildirim içerik görünümleri kullanılıyorsa İçeriği hem açık hem de koyu temalarda test etmek.
Dikkat edilmesi gereken yaygın hatalar şunlardır:
- Arka plan renginin her zaman açık renk olduğu varsayılır.
- Metin renklerinin kodunu gömme.
- Varsayılan metin rengini kullanırken sabit kodlu bir arka plan rengi ayarlama.
- Statik renkte bir çizilebilir simge kullanılması
Tüm bu durumlarda, sabit kodlu öğeler yerine uygun tema özelliklerini kullanın. renk.
Lansman ekranları
Uygulamanızın özel bir başlangıç ekranı varsa onu yeni sürüme geçirmemiz yansıttığından emin olun.
Arka plan renkleri gibi programlı olarak
beyaz. Bunun yerine ?android:attr/colorBackground
tema özelliğini kullanın.
Yapılandırma değişiklikleri
Uygulamanın teması, sistem ayarı veya AppCompat aracılığıyla değiştiğinde uiMode
yapılandırma değişikliği tetiklenir. Bu sayede etkinlikler otomatik olarak yeniden oluşturulur.
Bazı durumlarda, yapılandırma değişikliğini bir uygulamanın işleme almasını isteyebilirsiniz. Örneğin, Örneğin, bir video şöyle olduğu için bir yapılandırma çalıyor.
Bir uygulama, her Activity
'ün uiMode
yapılandırma değişikliğini işleyebileceğini bildirerek koyu temanın uygulanmasını yönetebilir:
<activity
android:name=".MyActivity"
android:configChanges="uiMode" />
Bir Activity
, yapılandırma değişikliklerini işlediğini beyan ettiğinde tema değişikliği olduğunda onConfigurationChanged()
yöntemi çağrılır.
Uygulamalar, mevcut temanın ne olduğunu kontrol etmek için aşağıdaki gibi kod çalıştırabilir:
val currentNightMode = configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK when (currentNightMode) { Configuration.UI_MODE_NIGHT_NO -> {} // Night mode is not active, we're using the light theme. Configuration.UI_MODE_NIGHT_YES -> {} // Night mode is active, we're using dark theme. }
int currentNightMode = configuration.uiMode & Configuration.UI_MODE_NIGHT_MASK; switch (currentNightMode) { case Configuration.UI_MODE_NIGHT_NO: // Night mode is not active, we're using the light theme break; case Configuration.UI_MODE_NIGHT_YES: // Night mode is active, we're using dark theme break; }