Как разработать режим темного / светлого режима, автоматически переключая приложение на android, как в Xcode - PullRequest
0 голосов
/ 08 января 2020

Так что я с нетерпением жду разработки приложения с темными / светлыми режимами, которые автоматически переключаются в зависимости от текущих настроек системы.

Я довольно легко сделал это приложение на iOS, поскольку они предоставили мне системные цвета (например, UIColor.systemGray, который я использовал чаще всего) и опцию для вещи, называемой активами изображения Dark / Свет / Any.

В основном эти активы в iOS делают, когда системный режим переключается (между темным / светлым), он автоматически переключается между изображениями, которые я помещаю для светлого или темного. Все это происходит без какого-либо внутреннего кода в моем ViewController.swift (это похоже на MainActivity. java в android).

То же самое относится и к цветам, и я мог бы даже кодировать WKWebView (Webview для iOS), чтобы автоматически переключаться между двумя URL-адресами, которые я сделал, один с темным фоном и один со светлым (однако это было сделано требуется немного кодирования, но это было не так сложно).

Итак, я хочу знать, как сделать то же самое на Android, чтобы автоматизировать c переключение между изображениями (мой PRIORITY, пожалуйста, дайте мне подробную информацию для этого) и цвета для автоматического переключения , Я использую Java. Все, что я пробовал, - это создание двух разных макетов (activity_main. xml и activity_main_dark. xml) и наличие двух разных изображений для каждого изображения (1 черное и 1 белое). Я использовал следующий код для загрузки разных макетов

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

int currentNightMode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;

        switch (currentNightMode) {
            case Configuration.UI_MODE_NIGHT_NO:

setTheme(R.style.AppTheme);
setContentView(R.layout.activity_main);

.
.
.(my code)
.
.

break;


            case Configuration.UI_MODE_NIGHT_YES:
                setTheme(R.style.Night);
                    setContentView(R.layout.activity_main_dark);
.
.
.(my code)
.
.

break;

}}

Это сработало, но увеличило размер моего приложения, поскольку мне приходилось обрабатывать несколько ресурсов. Поэтому я ищу решение, подобное ios и Xcode. Надеюсь, скоро получу ответ

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