Как да включите тъмна тема във вашето приложение за Android

За разработчиците създаването на приложение за Android е лесен процес - проектирането на привлекателен потребителски интерфейс е всъщност трудно. Ето защо написахме ръководството „Как да проектираме потребителски интерфейс на приложение за Android, който не се смущава“, за разработчици, които се нуждаят от малко вдъхновение в създаването на прости, но привлекателни потребителски интерфейси. В това ръководство споменах накратко, добавяйки тема за режим тъмен / нощен режим към вашите приложения и в това ръководство ще ви преведем през него.

Добавянето на тема за режим тъмен / нощен режим към приложението ви може да бъде чудесна опция за вашите потребители - спестява живота на батерията и е много по-лесно за очите през нощта. Бял фон върху черен текст или всяка комбинация от „ярки“ цветове във вашия потребителски интерфейс е наистина стресиращ за очите, особено през нощта. По този начин тъмният фон с по-лек текст е много по-малко стресиращ и вреден за очите, поради което много популярни приложения започнаха да включват тъмна тема - YouTube и Reddit най-скоро, въпреки че Facebook все още не е публикувал своите, след като обеща един Може.

Ако искате лесно да добавите превключващ тъмен режим към приложението си за Android, следвайте това ръководство за Appuals и коментирайте, ако се сблъскате с някакви проблеми!

Създаване на XML атрибути

Първо трябва да създадете файл с атрибути XML, който ще обработва тематизирането. Това е много по-добре, отколкото да включите два пакета ресурси във вашия APK за две различни теми и по този начин да раздуете вашия размер на APK, тъй като Android може да променя цветовете на атрибутите чрез този XML.

Така че в папката "ресурси" на приложението си създайте файл с име attrs.xml и добавете тези редове ( това са стилизиращи се атрибути):

Преди Lollipop не можахме да определим атрибути за чернови, така че трябваше да посочим идентификаторите на ресурсите за чертожи - обаче, това вече не е така.

Добавяне на стиловете

За да направим тази работа, трябва да създадем два отделни стила, които ще споделят една и съща база. Първата очевидно ще бъде основната ви „светла“ тема, а втората ще бъде вашата „тъмна“ тема.

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

Ето действителните стилове за дадена дейност:

 # F4F4F6 # 33343B 

Трябва да посочите една от тези теми в Manifest за дейността на приложението, което в случая е FeedActivity.

Стилизиране на гледните точки

Ето пример за стилизиране на вашите изгледи - в този пример грешката при пренасочване „Страница не е намерена“.

Как да активирате динамично превключване на теми

Най-добрият и най-ефикасен начин за активиране на динамичното превключване на теми е да заредите SharedPreference стойност, която се използва за съхраняване на настройката в екземпляра Application, използвайки шаблона Singleton, което означава, че няма да се налага да го правим в началото на всяка дейност.

 приложение за обществен клас разширява приложението {public static final String TAG = "Приложение"; private boolean isNightModeEnabled = false; @Override public void onCreate () {super.onCreate (); // Ние зареждаме тук състоянието на нощен режим SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences (това); this.isNightModeEnabled = mPrefs.getBoolean („NIGHT_MODE“, невярно); } public boolean isNightModeEnabled () {return isNightModeEnabled; } public void setIsNightModeEnabled (boolean isNightModeEnabled) {this.isNightModeEnabled = isNightModeEnabled; }} 

Тъй като този екземпляр се стартира преди всичко друго, той ви позволява да извиквате isNightModeEnabled () Boolean винаги, когато искате, във всяка дейност, принадлежаща на приложението, след като бъде отворена.

 публичен краен клас FeedActivity разширява AppCompatActivity {частен окончателен статичен низ TAG = “FeedActivity”; @Override защитен void onCreate (Bundle saveInstanceState) {if (MyApplication.getInstance (). IsNightModeEnabled ()) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (saveInstanceState); setContentView (R.layout.activity_feed); }} 

Ако обаче искате да приложите различна тема от тази, която е посочена във файла на манифеста, това трябва да бъде направено преди да извикате родителския метод onCreate ().

Задаване на състоянието, използващо AppCompat

AppCompat е наистина полезен за широк спектър от неща и в този случай ще го използваме за задаване на състоянието на режима. Това означава, че вече не е необходимо да използвате екземпляра на приложението, за да създадете кеширано състояние, като по този начин съкращавате разширението на кеша на приложението ( макар и с много малък запас ).

 AppCompatDelegate .setDefaultNightMode (AppCompatDelegate.MODE_NIGHT_YES); 

Тук можете или да използвате:

  • AppCompatDelegate.MODE_NIGHT_YES

    AppCompatDelegate.MODE_NIGHT_NO

    AppCompatDelegate.MODE_NIGHT_AUTO

Извличане на държавата

 AppCompatDelegate.getDefaultNightMode (); публичен краен клас FeedActivity разширява AppCompatActivity {частен окончателен статичен низ TAG = “FeedActivity”; @Override защитен празнота onCreate (Bundle saveInstanceState) {if (AppCompatDelegate.getDefaultNightMode () == AppCompatDelegate.MODE_NIGHT_YES) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (saveInstanceState); setContentView (R.layout.activity_feed); }} 

Това трябва да бъде - можете да продължите да персонализирате и настройвате стойности по ваш вкус, но това ръководство е чудесно въведение, за да започнете с включването на родна тъмна тема във вашето приложение за Android.

Интересни Статии