Cordova Android устанавливает windowBackground программно во время выполнения - PullRequest
0 голосов
/ 05 февраля 2019

Когда запускается приложение Cordova для Android, на короткое время появляется пустой экран до запуска cordova-plugin-splashscreen. Я узнал, что это цвет windowBackground и его можно изменитьсоздав пользовательский файл styles.xml и ссылаясь на него в AndroidManifest.xml, используя свойство android: theme для действия.Пример:

Из AndroidManifest.xml:

<activity android:configChanges="orientation|keyboard|keyboardHidden|screenLayout|screenSize" android:label="@string/activity_name" android:launchMode="singleTask" android:name="MainActivity" android:screenOrientation="portrait" android:theme="@style/CustomStyle" android:windowSoftInputMode="adjustPan">

Из styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="CustomStyle" parent="@android:style/Theme.Material.Light.NoActionBar">
        <item name="android:windowBackground">@drawable/init_splash</item>
    </style>
</resources>

styles.xml ссылается на другой файл, содержащий только нарисованный цвет.

Это работает.Это позволяет мне изменить цвет, который появляется перед заставкой.

Однако сейчас я хочу позволить пользователю при желании сменить на темную тему .Я уже разобрался, как изменить cordova-plugin-splashscreen, чтобы изменить заставку в зависимости от предпочтений пользователя, но у меня возникают проблемы программное изменение windowBackground / theme во время выполнения .

Я попытался добавить следующее в MainActivity.java или CordovaActivity.java:

setTheme(R.style.CustomDarkStyle);

getWindow().setBackgroundDrawableResource(getResources().getIdentifier("init_splash_dark", "drawable", getPackageName()));

getWindow().setBackgroundDrawable(new ColorDrawable(Color.BLACK));

Я поместил их в onCreate перед super.onCreate () или setContentView ().Цвет фона окна действительно меняется, , но первоначальный пустой экран перед тем, как всплеск остается с тем цветом, который был установлен в манифесте .

Как изменить фон деятельности / окнацвет программно при запуске приложения?

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

По состоянию на 22 апреля мне еще предстоит найти решение этой проблемы.

1 Ответ

0 голосов
/ 18 февраля 2019

Создайте класс с тем же именем, что и у вашего проекта, и он расширит Application, а не Activity.Поместите этот код в этот класс, так как он будет автоматически инициализирован, как только ваше приложение запустится.Он будет выступать в качестве конструктора для вашего приложения.Надеюсь, это поможет!
У меня есть проект с именем "slot", поэтому я создал класс с именем slot, подобный этому

package com.xyz.slot;

import android.app.Application;

public class slot extends Application {
    @Override
    public void onCreate() {
        setTheme(R.style.CustomDarkStyle);
        super.onCreate();

    }
}

Но убедитесь, что в манифесте нет заданной темы, поскольку она не будет переопределена.

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