Як включити темну тему у додаток для 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, яке використовується для зберігання налаштування в екземпляр програми за допомогою шаблону Singleton, а це означає, що нам не доведеться робити це на початку кожної діяльності.
додаток public class розширює додаток {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 захищений недійсним onCreate (пакет збереженихInstanceState) {if (MyApplication.getInstance (). IsNightModeEnabled ()) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (збереженийInstanceState); 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 (пакет збереженихInstanceState) {if (AppCompatDelegate.getDefaultNightMode () == AppCompatDelegate.MODE_NIGHT_YES) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (збереженийInstanceState); setContentView (R.layout.activity_feed); }}
Це повинно бути - ви можете продовжувати налаштовувати та налаштовувати значення на свій смак, але цей посібник - це чудове вступ, щоб розпочати роботу з включенням рідної темної теми у додаток для Android.