启动Cordova android应用后,空白屏幕会短暂可见,然后开始显示cordova-plugin-splashscreen。我了解到这是 windowBackground颜色,并且可以可以通过创建自定义styles.xml并通过活动的android:theme属性在AndroidManifest.xml中对其进行更改来进行更改。示例:
来自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));
我将它们放在super.onCreate()或setContentView()之前的onCreate中。窗口背景颜色确实发生了变化,但是初始屏幕上的初始空白屏幕停留在清单中设置的任何颜色。
在启动应用程序时,如何通过编程方式更改活动/窗口背景颜色?
Some have suggested将应用程序主题更改为透明主题,以完全防止黑屏,但这会导致打开应用程序的延迟。我对空白屏幕没问题,我只想以编程方式更改其颜色。
截至4月22日,我尚未找到解决此问题的方法。
答案 0 :(得分:0)
使用与您的项目相同的名称创建一个类,它将扩展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();
}
}
但是请确保清单中没有设置主题,因为它将不会被覆盖。