如何以编程方式在 android 资源文件中设置项目 windowBackground

How to set item windowBackground in android resource file programmatically

我正在处理启动应用程序时弹出的启动画面,但我不想在 Activity 中展开布局,而是想专门为启动画面设置一个主题 activity里面有图片资源。

AndroidManifest.xml

<activity
    android:name=".SplashActivity"
    android:theme="@style/SplashTheme">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="android:windowBackground">@drawable/splash</item>
    </style>
</resources>

我的问题是:
是否可以通过代码更改 <item name="android:windowBackground">@drawable/splash</item>? 我从网络上收到一个图像 url 列表,这些 url 应该被随机设置为初始屏幕,因此必须动态设置初始屏幕。 我设法找到了以下代码,但我不知道如何从那里继续。

val styleId = resources.getIdentifier("SplashTheme", "style", packageName)
val drawableFromPath = Drawable.createFromPath("some image url")

我应该只使用片段吗?

正如@zedlabs 所说,您可能理解错了这个概念。你设置下面的属性看到的是

<item name="android:windowBackground">@drawable/splash</item>

您可以设置应用加载时看到的内容。通常它是一个白色屏幕,但通过更换它,您会看到您设置的内容。也是所有app的默认windowBackground

因此,如果您打算将其设置为动态,它不会真正起作用,因为您无法获取需要加载的资源应用程序,并且在它加载时此屏幕将不再可见.

您可以选择专门显示一段时间然后应用启动的自定义启动画面。

我建议检查一下:https://medium.com/android-news/the-complete-android-splash-screen-guide-c7db82bce565