Я хочу создать красный "ночной режим" для моего приложения для Android - PullRequest
5 голосов
/ 09 сентября 2011

Я создаю приложение для использования пилотами. В основном он использует TextView, EditText, Button и т. Д. Другими словами, не очень много графики.

При использовании в ночное время я бы хотел, чтобы пользователь мог переключаться в «ночной режим», где все на экране красно-черное ... как приложение Google Sky Map. (Это важно для пилотов, поскольку красный цвет не нарушает естественную адаптацию ночного видения глаза, как другие цвета.)

Какой лучший способ сделать это? Я нашел такие API, как ColorFilter и т. Д., Но я не уверен, как бы я применил эти приложения для всего приложения.

Ответы [ 2 ]

2 голосов
/ 09 сентября 2011

Если вы просто говорите об изменении цвета различных видов внутри макета, а не структуры самого макета, то я бы посоветовал вам просто сделать это с помощью стилей.

т.е. Определите два набора стилей для различных видов, которые составляют ваш макет - один для ночного режима и один для дневного. В вашей деятельности это становится случаем вызова setStyle() для каждого из ваших представлений, чтобы переключать его между днем ​​и ночью.

Принятие разумного соглашения об именах и схемы происхождения для ваших стилей значительно облегчит вашу жизнь. например MyText.Large против MyText.Large.Night.

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

1 голос
/ 28 февраля 2014

Создание дневной и ночной темы и ее программная настройка будут работать. Но для этого также необходимо продублировать стили, просто указав различные рисунки / цвета.

Вместо этого вы можете поддерживать один стиль и использовать встроенную поддержку Android в режиме день / ночь. Точно так же, как у вас может быть несколько вариантов одного макета (для альбомной или портретной ориентации экрана), для рисования (для разных плотностей пикселей) и строки (для разных локалей), вы также можете иметь дневные и ночные версии ваших рисунков и цветов. Спецификаторами являются «-night» и «-notnight», но вы, вероятно, захотите использовать «-night» или ничего, делая вашу дневную версию по умолчанию. Например:

res/drawable/fancy-button-background.9.png
res/drawable-night/fancy-button-background.9.png

Android должен иметь возможность автоматически переключать дневной / ночной режим, но детали того, как и когда это происходит, мне немного неясны. Чтобы изменить режим самостоятельно, вы можете использовать UiModeManager#setNightMode(). Просто убедитесь, что сначала включен автомобильный режим, используя enableCarMode(0).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...