Koyu tema uygulama

Oluşturma yöntemini deneyin
Jetpack Compose, Android için önerilen kullanıcı arayüzü araç setidir. Oluşturma'da temalarla nasıl çalışacağınızı öğrenin.

Şekil 1. Koyu tema.

Koyu tema, Android 10 (API düzeyi 29) ve sonraki sürümlerde kullanılabilir. Aşağıdaki avantajları sağlar:

  • Cihazın ekran teknolojisine bağlı olarak güç kullanımını önemli ölçüde azaltır.
  • Az gören kullanıcılar ve parlak ışığa karşı hassas olan kullanıcılar için görünürlüğü artırır.
  • Cihazın zayıf ışıklı bir ortamda 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, bildirimleri bildirim tepsisinden tema değiştirmek için Hızlı Ayarlar kutusunu kullanın.
  • Pixel cihazlarda aynı anda koyu temayı etkinleştirmek için Pil Tasarrufu modunu etkinleştirin. Diğer cihazlar bu davranışı desteklemeyebilir.

Web Görünümü bileşeni kullanarak web tabanlı içeriğe koyu tema uygulama talimatları için Web Görünümü'nde web içeriğini karartma bölümüne göz atın.

Uygulamanızda koyu temayı destekleme

Koyu temayı desteklemek için uygulamanızın temasını (genellikle res/values/styles.xml içinde bulunur) bir DayNight temasından devralacak şekilde ayarlayın:

<style name="AppTheme" parent="Theme.AppCompat.DayNight">

Malzeme Bileşenleri koyu temasını da kullanabilirsiniz:

<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 renkli bir tema altında kullanılmak üzere tasarlanmış sabit kodlu renkler veya simgeler kullanmaktan kaçının. Bunun yerine tema özelliklerini veya gece nitelikli kaynakları kullanın.

Koyu tema için en önemli iki tema özelliği vardır:

  • ?android:attr/textColorPrimary: Genel amaçlı bir metin rengi. Açık temada siyaha yakın, koyu temalarda neredeyse beyazdır. Devre dışı bırakılmış bir durum içerir.
  • ?attr/colorControlNormal: Genel amaçlı simge rengi. Devre dışı bırakılmış bir durum içerir.

?attr/colorSurface ve ?attr/colorOnSurface tema özellikleri gibi renk tema oluşturma sistemi uygun renklere kolay erişim sağladığından Materyal Tasarım Bileşenleri'ni kullanmanızı öneririz. Bu özellikleri temanızda özelleştirebilirsiniz.

Temaları uygulama içinde değiştirme

Kullanıcıların, uygulama çalışırken uygulamanın temasını değiştirmesine izin verebilirsiniz. Önerilen seçenekler şunlardır:

  • Hafif
  • Kasvetli
  • Sistem varsayılanı (önerilen varsayılan seçenek)

Şu seçenekler doğrudan AppCompat.DayNight modlarıyla eşlenir:

Temayı değiştirmek için aşağıdakileri yapın:

Koyu Renk Zorla

Android 10, geliştiricilerin DayNight temasını açıkça ayarlamadan hızlı bir şekilde koyu tema uygulayabilmelerini sağlayan bir özellik olan Koyu Güçlendir'i sunar.

Koyu Güçlendir, açık temalı uygulamanızın her görünümünü analiz eder ve koyu temayı ekrana uygulanmadan önce otomatik olarak uygular. Koyu temayı uygulamak için gereken süreyi kısaltmak için Force Koyu ve yerel uygulamayı birlikte kullanabilirsiniz.

Uygulamalar, etkinliğin temasında android:forceDarkAllowed="true" ayarını yaparak Koyu Koyu özelliğini etkinleştirmelidir. Bu özellik, Theme.Material.Light gibi sistem ve AndroidX tarafından sağlanan tüm açık temalarda ayarlanır. Force Dark'ı kullandığınızda uygulamanızı kapsamlı bir şekilde test edin ve gerektiğinde görünümleri hariç tutun.

Uygulamanız Theme.Material gibi koyu bir tema kullanıyorsa Koyu Zorla uygulanmaz. Benzer şekilde, uygulamanızın teması bir DayNight temasından devralıyorsa otomatik tema geçişi nedeniyle Koyu Kuvvet uygulanmaz.

Görünümde Koyu Renk Modunu Zorunlu Kıl ayarını devre dışı bırakma

Force Koyu, belirli görünümlerde android:forceDarkAllowed düzen özelliği veya setForceDarkAllowed() ile kontrol edilebilir.

Web içeriği

Web tabanlı içeriklerde koyu tema kullanma hakkında bilgi edinmek için Web Görünümü'nde web içeriğini karartma bölümüne bakın. Bir Web Görünümü'ne uygulanan koyu tema örneği için GitHub'daki Web Görünümü demosunu inceleyin.

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üzeyleri için, kullandığınız görünümlerin ana makine uygulamasının temasını yansıttığından emin olun. Bunlar, bildirimler ve başlatıcı widget'larıdır.

Bildirimler

MessagingStyle gibi sistem tarafından sağlanan 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ız özel bildirim içerik görünümleri kullanıyorsa içeriği hem açık hem de koyu temada test edin.

Dikkat edilmesi gereken yaygın tehlikeler arasında aşağıdakiler yer alır:

  • Arka plan renginin her zaman açık olduğunu varsayarsak.
  • Metin renkleri için kod gömme.
  • Varsayılan metin rengi kullanılırken sabit kodlu bir arka plan rengi ayarlama.
  • Statik renkli çekilebilir bir simge kullanma.

Tüm bu durumlarda, sabit kodlu renkler yerine uygun tema özelliklerini kullanın.

Başlatma ekranları

Uygulamanızın özel bir başlangıç ekranı varsa, bu ekranı, seçilen temayı yansıtacak şekilde değiştirmeniz gerekebilir.

Programlı olarak beyaza ayarlanan arka plan renkleri gibi sabit kodlu renkleri kaldırın. Bunun yerine ?android:attr/colorBackground teması özelliğini kullanın.

Yapılandırma değişiklikleri

Uygulamanın teması, sistem ayarı veya AppCompat aracılığıyla değiştiğinde bir uiMode yapılandırma değişikliği tetikler. Bu, etkinliklerin otomatik olarak yeniden oluşturulacağı anlamına gelir.

Bazı durumlarda, yapılandırma değişikliğini bir uygulamanın halletmesini isteyebilirsiniz. Örneğin, bir video oynatılırken yapılandırma değişikliğini ertelemek isteyebilirsiniz.

Bir uygulama, her Activity için uiMode yapılandırma değişikliğini işleyebileceğini bildirerek koyu temanın uygulanmasını sağlayabilir:

<activity
    android:name=".MyActivity"
    android:configChanges="uiMode" />

Activity bir yapılandırma değişikliklerini işlediğini bildirdiğinde, bir tema değişikliği olduğunda onConfigurationChanged() yöntemi çağrılır.

Geçerli temanın ne olduğunu kontrol etmek için uygulamalar 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;
}