gpt4 book ai didi

android - jetpack compose 是否使用 drawable-night 文件夹?

转载 作者:行者123 更新时间:2023-12-04 23:59:17 24 4
gpt4 key购买 nike

我们有一个基于 View 的 Android 应用程序,在 res/drawable 中有一些可绘制对象文件夹,以及它们在 res/drawable-night 中的夜间模式对应项文件夹
使用旧 View 时,引用可绘制 R.drawable.foo从 XML 布局文件中,系统将从 res/drawable 中选择可绘制对象或 res/drawable-night文件夹取决于我们是处于白天还是夜间模式。
使用 jetpack compose 时,我们在 Image 可组合对象中引用可绘制对象,如下所示:

Image(painter = painterResource(R.drawable.foo))
但是,这总是从 res/drawable 中选择可绘制对象文件夹,忽略日/夜模式。
我们可以做这样的事情来选择正确的drawable,但是我们需要在所有使用drawables的composables中测试夜间模式( isSystemInDarkTheme()),具体取决于nigh模式:
Image(painter = painterResource(id = if (isSystemInDarkTheme()) R.drawable.foo_dark else R.drawable.foo_light))

是否有一种组合方式可以确保正确且透明地选择白天或夜间模式的可绘制对象,就像在旧 View 系统中一样?

最佳答案

自发布其他答案以来,也许 Compose 已更新,但我可以确认,在一个仅使用 Compose 和两个在 drawable 中具有相同名称的可绘制对象的简单应用程序中和 drawable-night文件夹,如果手机设置为暗模式,该应用程序会选择暗文件夹。
这也没有定义可组合的主题,所以这个简单的代码可以完成这项工作:

@Preview
@Preview(uiMode = UI_MODE_NIGHT_YES)
@Composable
fun ImagePreview() {
Image(
painter = painterResource(id = R.drawable.my_icon),
contentDescription = null
)
}
请注意,您也可以在预览中看到这一点 - 有两个 @Preview annotations 在 Android Studio 中生成两个预览,并且指定您希望在暗模式下查看您的可组合也是可能的!
dark and light images in compose preview

关于android - jetpack compose 是否使用 drawable-night 文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67383971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com