Android Uygulamanıza Karanlık Bir Tema Nasıl Eklenir

Geliştiriciler için bir Android uygulaması oluşturmak kolay bir işlemdir - çekici bir kullanıcı arayüzü tasarlamak gerçekten zor olan şeydir. Bu nedenle, basit ancak çekici UI'ler oluşturma konusunda ilham almak isteyen geliştiriciler için “Emmeyen bir Android Uygulama Arayüzünü Tasarlama” kılavuzunu yazdık. Bu kılavuzda, uygulamalarınıza karanlık / gece modu teması eklemekten kısaca bahsettik ve bu kılavuzda size yardımcı olacağız.

Uygulamanıza karanlık / gece modu teması eklemek, kullanıcılarınız için mükemmel bir seçenek olabilir - pil ömründen tasarruf sağlar ve geceleri gözlerde çok daha kolaydır. Siyah metin üzerinde beyaz bir arka plan veya UI'nızdaki 'parlak' renklerin herhangi bir kombinasyonu, özellikle geceleri gözlerde gerçekten streslidir. Bu nedenle, daha açık renkli metin içeren koyu bir arka plan gözlere çok daha az stresli ve zararlıdır, bu nedenle karanlık bir tema da dahil olmak üzere pek çok popüler uygulamanın başlamasına neden olmuştur - YouTube ve Reddit en son, Facebook yine de bir tane daha söz verdikten sonra kendi yayınlarını yayınlamamasına rağmen Mayıs ayı.

Android uygulamanıza kolayca değiştirilebilen bir karanlık mod eklemek istiyorsanız, bu Uygulama rehberini takip edin ve herhangi bir sorun yaşarsanız yorum yapın!

XML Özniteliklerini Oluşturma

Öncelikle, temayı ele alacak bir XML öznitelik dosyası oluşturmanız gerekir. Bu, APK'nıza iki farklı tema için iki kaynak kümesi eklemek ve Android'in bu XML aracılığıyla nitelikler üzerindeki renkleri doğal olarak değiştirebilmesi nedeniyle APK boyutunuzu şişirmekten çok daha iyidir.

Bu nedenle, uygulamanızın 'kaynaklar' klasöründe attrs.xml adlı bir dosya oluşturun ve bu satırları ekleyin ( bunlar stil özellikleridir):

Lollipop'tan önce çekmeceler için öznitelikler belirleyemedik, bu yüzden çekmeceler için kaynak kimliklerini belirtmek zorunda kaldık - ancak bu artık böyle değil.

Stilleri Ekleme

Bu işi yapmak için, aynı temeli paylaşacak iki ayrı stil yaratmamız gerekiyor. İlki açıkça sizin birincil “aydınlık” temanız olacak ve ikincisi “karanlık” temanız olacak.

 # F4F4F6 # 96F4F4F6 #FFFF # F2F2F3 @ drawable / i_light_plholder # 33343B / item> # 8033343B # 28292e # F2F2F3 @ drawable / i_dark_pholder 

Belirli bir faaliyet için gerçek stiller:

 # F4F4F6 # 33343B 

Uygulamanın etkinliği için bu durumda FeedActivity olan bu temalardan birini Manifest'te belirtmeniz gerekir.

Görünümleri Stilize Etme

İşte görünümlerinizi stilize etme örneği - bu örnekte, “Sayfa bulunamadı” yönlendirme hatası için.

Dinamik Tema Değiştirme Nasıl Etkinleştirilir

Dinamik tema değiştirmeyi etkinleştirmenin en iyi ve en etkili yolu, Singleton desenini kullanarak ayarı Uygulama örneğinde saklamak için kullanılan SharedPreference'ı yüklemek, yani her bir Aktivitenin başında yapmak zorunda kalmayacağımız anlamına gelir.

 public class Uygulama Uygulama'yı genişletiyor {public static final String TAG = "Uygulama"; özel boolean isNightModeEnabled = false; @ Genel geçersizliği geçersiz kıl onCreate () {super.onCreate (); // Gece Modu durumunu buraya yüklüyoruz SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences (this); this.isNightModeEnabled = mPrefs.getBoolean (“NIGHT_MODE”, yanlış); } public boolean isNightModeEnabled () {return isNightModeEnabled; } public void setIsNightModeEnabled (boolean isNightModeEnabled) {this.isNightModeEnabled = isNightModeEnabled; }} 

Bu örnek herhangi bir şeyden önce başlatıldığından, istediğiniz zaman, uygulamaya açıldığında bir uygulamaya ait herhangi bir etkinlikte isNightModeEnabled () Boolean'ı çağırmanıza izin verir.

 genel son sınıf FeedActivity, AppCompatActivity süresini uzattı {private final static String TAG = “FeedActivity”; @ Override korumalı geçersiz onCreate (Bundle savedInstanceState) {if (MyApplication.getInstance (). İsNightModeEnabled ()) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (savedInstanceState); setContentView (R.layout.activity_feed); }} 

Bununla birlikte, manifest dosyasında belirtilenden farklı bir tema uygulamak istiyorsanız, üst onCreate () yöntemini çağırmadan önce yapılması gerekir .

AppCompat Kullanarak Durumu Ayarlama

AppCompat, çok çeşitli şeyler için gerçekten yararlıdır ve bu durumda, mod durumunu ayarlamak için kullanacağız. Bu, artık uygulama örneğini önbelleğe alınmış bir durum oluşturmak için kullanmanıza gerek kalmayacağından, uygulama önbellek şişmesini azaltmanıza gerek kalmayacağı anlamına gelir ( çok küçük bir fark olsa da ).

 AppCompatDelegate .setDefaultNightMode (AppCompatDelegate.MODE_NIGHT_YES); 

Burada, aşağıdakilerden birini kullanabilirsiniz:

  • AppCompatDelegate.MODE_NIGHT_YES

    AppCompatDelegate.MODE_NIGHT_NO

    AppCompatDelegate.MODE_NIGHT_AUTO

Devleti Almak

 AppCompatDelegate.getDefaultNightMode (); genel son sınıf FeedActivity, AppCompatActivity süresini uzattı {private final static String TAG = “FeedActivity”; @ Override korumalı geçersiz onCreate (Bundle savedInstanceState) {if (AppCompatDelegate.getDefaultNightMode () == AppCompatDelegate.MODE_NIGHT_YES) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (savedInstanceState); setContentView (R.layout.activity_feed); }} 

Olması gerektiği gibi - kişiselleştirmeye ve değerleri beğeninize göre ayarlamaya devam edebilirsiniz, ancak bu kılavuz Android uygulamanıza yerel koyu bir tema eklemeye başlamanız için harika bir tanıtımdır.

Ilginç Haberler