繁体   English   中英

在 Jetpack Compose 中更改 android:windowBackground

[英]Change android:windowBackground in Jetpack Compose

我想使用 Jetpack Compose 实现启动画面。 在旧的视图系统中,我们可以通过 XML 主题更改android:windowBackground

如何在 Compose 中做到这一点?

窗口背景是 Android 本身特有的东西,它告诉系统这个活动“始终”绘制什么背景。

例如,一个根本没有视图的活动仍然可以有一个背景,正如它在其主题中定义的那样。 这实际上用于诸如启动画面之类的东西,因为它们没有 UI,只有背景。 由于 Activity 的背景不需要时间来绘制,而 UI 可能会延迟。

Compose 是一个 UI 框架,任何 UI 只有在准备好时才会绘制,这意味着它只会在 Activity 准备好时才显示。 因此,在 Compose 中不可能出现启动画面。 更像是,它是无关的。

如果您只想为整个 UI 设置背景,可以将整个 UI 放在带有背景的Box 或者在MaterialTheme设置背景颜色。 如果你不使用主题,只需制作一个普通的可组合,它只是一个Box

当我查看AndroidManifest.xml ,我发现该应用程序仍在使用旧的themes.xml进行其活动。

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.AppName">

从这里我只是编辑主题以应用windowBackground

<style name="Theme.AppName" parent="Theme.MaterialComponents.Light.DarkActionBar">
    <item name="android:windowBackground">@color/black</item>
</style>

我没有创建新样式,只是使用主要样式。 当活动出现时,只需在可组合的根上应用一个白色的Surface来隐藏飞溅背景就足够了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM