![](https://developer.android.google.cn/static/images/guide/topics/ui/look-and-feel/darktheme.png?authuser=9&hl=tr)
Koyu tema, Android 10 (API düzeyi 29) ve sonraki sürümlerde kullanılabilir. İçinde şu avantajları sağlar:
- 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:
- Ayarlar > Görüntülü Reklam Ağı > Tema'yı koyu temayı etkinleştirin.
- Bildirim tepsisinden temalar arasında geçiş yapmak için Hızlı Ayarlar kutusunu kullanın. etkinleştirildiğinde.
- 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ü kullanarak web tabanlı içeriğe koyu tema uygulama talimatları için bileşeni için Web Görünümü'nde web içeriğini karartma konusuna bakın.
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">
Ayrıca, Malzeme Bileşenleri koyu renk seçeneğini de kullanabilirsiniz. tema:
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
Bu, uygulamanın ana temasını sistem tarafından kontrol edilen gece modu bayraklarına bağlar ve etkinleştirildiğinde uygulamaya varsayılan bir 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. Bir devre dışı bırakıldı.?attr/colorControlNormal
: genel amaçlı bir simge rengi. Bir devre dışı bırakıldı.
Materyal Tasarım'ı kullanmanızı öneririz.
Bileşenler, çünkü renk teması
sistemi (ör.
?attr/colorSurface
ve ?attr/colorOnSurface
özellikleri, kolay erişim sağlar
renklendirir. Bu özellikleri temanızda özelleştirebilirsiniz.
Uygulama içinde temaları değiştirme
Kullanıcıların, uygulama çalışırken uygulamanın temasını değiştirmesine 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 üstünde
UiModeManager#setApplicationNightMode
Böylece sisteme, uygulamanızın hangi temayı çalıştırdığını bildirebilirsiniz. Bu sayede, sistem temayı kullanın.API düzeyi 30 ve önceki sürümlerde
AppCompatDelegate.setDefaultNightMode()
dokunun.
Koyuluğu Zorunlu Kıl
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 verebilirsiniz. Bu özellik tüm sistem ve
AndroidX tarafından sağlanan Theme.Material.Light
gibi açık renkli temalar. Bunu kullandığınızda
Koyu temayı kullanın, uygulamanızı kapsamlı şekilde test edin ve gerektiğinde görünümleri hariç tutun.
Uygulamanızda Theme.Material
gibi koyu bir tema kullanılıyorsa Zorunlu Koyu tema kullanılmaz
geçerlidir. 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 Mod'u devre dışı bırakma
Koyu Renk, belirli görünümlerde
android:forceDarkAllowed
düzen özelliği veya
setForceDarkAllowed()
Web içeriği
Web tabanlı içerikte koyu tema kullanma hakkında bilgi edinmek için Web'i koyulaştır içeriklerdir. Koyu tema örneği için hakkında daha fazla bilgi edinmek için Web Görünümü demosu GitHub ,
En iyi uygulamalar
Aşağıdaki bölümlerde, koyu temaların uygulanmasıyla ilgili en iyi uygulamalar sunulmaktadır.
Bildirimler ve widget'lar
Cihazda görüntülediğiniz ancak doğrudan kontrol etmediğiniz kullanıcı arayüzü yüzeylerinde, tüm görünümlerin ana makine uygulamasının temasını yansıttığından emin olun. İki örnek bildirimler ve başlatıcı widget'ları.
Bildirimler
Sistem tarafından sağlanan MessagingStyle
gibi bildirim şablonlarını 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 tehlikeler şunlardır:
- Arka plan renginin her zaman açık olduğu varsayılır.
- Metin renklerinin sabitlenmesi.
- Varsayılan metin rengini kullanırken sabit kodlu bir arka plan rengi ayarlama.
- Statik renk olan bir çekilebilir simge kullanmak.
Tüm bu durumlarda, sabit kodlu öğeler yerine uygun tema özelliklerini kullanın. renk.
Başlatma 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ından veya AppCompat üzerinden değiştiğinde
bir uiMode
tetikler
yapılandırdığınızdan emin olun. Bu, etkinliklerin otomatik olarak yeniden oluşturulduğu anlamına gelir.
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.
Uygulamalar, koyu temanın uygulanması için
Activity
, uiMode
yapılandırma değişikliğini işleyebilir:
<activity
android:name=".MyActivity"
android:configChanges="uiMode" />
Activity
, yapılandırma değişikliklerini işlediğini bildirdiğinde
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:
Kotlin
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. }
Java
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; }