Наступна версія Android від Google, Android 10 Q, включатиме темний режим для всієї системи. Як програми в Android Q оброблятимуть темні теми?
В нашому перший пост деталізуючи зміни, які ми виявили в отриманій збірці Android Q, ми коротко розповіли про темний режим, який усіх захопив. Підсумовуючи, вбудований темний режим Google в Android Q можна ввімкнути за допомогою нової опції «Темний режим» у налаштуваннях дисплея. Темний режим може бути завжди вимкненим, завжди включеним або автоматично вмикатися вночі та вимикатися вранці. Темний режим тематизує SystemUI (панель гучності, меню живлення, панель швидких налаштувань, сповіщення), програму «Налаштування» та структуру (колір акценту тощо).
Вгорі: Темний режим в Android Q на Google Pixel 3 XL. Нижче: світла тема в Android Pie на Google Pixel 2 XL.
Однак Google не просто хоче, щоб елементи системи були темними. Вони також працюють над тим, щоб усі їхні додатки від перших розробників підтримували темний режим, коли користувач перемикає перемикач. Такі програми Google
Повідомлення, Телефон, Контакти, Новини, Грати в ігри, YouTube, Карти, і багато іншого було оновлено за допомогою перемикачів темного режиму, що відкриваються користувачем, тоді як інші програми подобаються Гугл хром до Google I/O 2019 все ще усувають усі недоліки. Google також почав заохочувати сторонніх розробників додатків охоплювати темні теми у своїх програмах, оскільки компанія визнає, що вони чудово працюють від батареї (принаймні на смартфонах з OLED-дисплеями).Щоб допомогти розробникам оновити свої додатки з підтримкою темного режиму Android Q, Google надає нову опцію розробника, яка, здається, змушує всі програми переходити в темний режим. Цей параметр не призначений для користувачів, які хочуть використовувати темний режим для всіх речей, оскільки системі важко підібрати правильні кольори для всіх програм, які не мають рідного темного режиму. На щастя, Google уже заклав основу для програм для підтримки темних режимів, і вже є багато програм, які добре виглядати з увімкненою опцією заміни темного режиму Android Q, навіть якщо програма не має темного режиму для користувача перемикач. Ось колекція скріншотів із 24 різних програм, які показують, як вони виглядають, коли їм примусово вмикається темний режим за допомогою перемикача темного режиму Android Q. Не кожна програма виглядатиме так добре, як я покажу вам нижче.
Впровадження темного режиму в Android Q
В API рівня 8 (Android 2.2 Froyo), представлений Google - нічні кваліфікації для ресурсів. Розробники додатків могли перемикатися між денним і нічним режимами за допомогою setNightMode in UiModeManager. Однак setNightMode вимагає, щоб пристрій був у режимі автомобіля або в режимі док-станції, якщо пристрій має рівень API 22 або нижче. AppCompat v23.2 запровадив реалізацію DayNight, дозволяючи програмам, таким як клієнти Reddit, автоматично перемикатися між денною та нічною темами залежно від часу доби за допомогою AppCompatDeletegate.setDefaultNightMode(). Рівень API 28 (Android 9 Pie) зробив так, щоб MODE_NIGHT_FOLLOW_SYSTEM (значення за замовчуванням setDefaultNightMode()) відповідав системним налаштуванням, визначеним користувачем у Параметрах --> Параметри розробника --> Нічний режим. Google є працює на покращення API DayNight в AppCompat, особливо щодо «частих проблем», таких як проблеми з WebView. Нарешті Google увімкнув виявлення нічного режиму і має заблоковані програми без MODIFY_DAY_NIGHT_MODE підпис/привілейований дозвіл у рамках Android Q. Остання зміна означає, що додатки більше не можуть змінювати загальносистемний нічний режим, через що нещодавня помилка Messages заплутала користувачів в Android Pie.
Оновлення: Ан оновлення до AndroidX Бібліотека підтримки полегшить розробникам автоматичне вмикання темних режимів у своїх програмах, коли пристрій переходить у режим економії заряду акумулятора.
Примусовий темний режим в Android Q
Такі програми, як Snapchat, Slack, AOSP Email, AOSP Messaging, AOSP Dialer та багато інших, мають кваліфікатори ресурсу -night, навіть якщо вони не надають користувачеві можливість використовувати програму в нічному режимі. Інші програми, які не мають жорстко закодованих кваліфікаторів ресурсів -night, як-от Facebook і Instagram, можуть виглядати або не виглядати добре з увімкненою темною темою Android Q. Instagram виглядає добре, тоді як Facebook потребує багато роботи. Під час мого тестування параметри розробника заміни нічного режиму дуже відрізняються від інверсії кольорів у налаштуваннях доступності — можливо Google планує, щоб ця функція допомагала розробникам створювати темні режими для своїх програм, поки Android Q Developer Previews триває. Однак ми не дізнаємося, як саме працює ця функція, поки не буде опубліковано вихідний код для Android Q або поки Google не опублікує документацію для неї.
Перевизначення темного режиму в Android Q найбільше зламано в додатках, які використовують WebViews.
В "Вартість піксельного кольору" Доповідь, яку представили Кріс Бейнз і Алан Віверетт з Google, дует заохочує розробників впроваджувати темні теми за допомогою:
- Використання API DayNight в AppCompat. Стандартні віджети автоматично реагують на зміни в нічному режимі, або ви також можете додати перемикач у своїй програмі.
- Динамічне застосування тем накладання під час виконання шляхом виклику getTheme().applyStyle(). Більше інформації можна знайти в цій попередній розмові тут.
- Структурування вашої програми для використання атрибутів теми, як-от colorForeground, colorControlNormal, colorAccent тощо.
- Додавання кваліфікаторів -night для ваших ресурсів. -нічні кваліфікатори слід використовувати для ресурсів, які важко витягти кольори теми.
- Увімкніть режим інвертованих кольорів (Налаштування --> Кольори --> Інверсія кольорів), щоб отримати швидке уявлення про те, як ваша програма виглядатиме в темному режимі. Якщо ви хочете зробити знімок екрана своєї програми з перевернутими кольорами, ви повинні знати, що інверсія кольорів не відображатиметься на скріншоті.
Під час випуску темний режим Android Q поширюватиметься на сторонні програми Google, але ми сподіваємося, що програми сторонніх розробників швидко запровадять темні теми у свої програми. Крім того, ми сподіваємося, що більше додатків автоматично змінюватимуть свої нічні теми, коли користувач увімкне загальносистемне налаштування. Наразі єдина програма, яку я бачив, яка автоматично змінює теми, коли ввімкнено загальносистемний темний режим Android Q, — це Google Contacts. Ми побачимо, як усе обернеться через кілька місяців, коли вийде Android Q, але для всіх розробників, які читають це: прийміть темну сторону!
За допомогою вкладника LineageOS Джої Ріццолі.