Does jetpack compose use drawable-night folder?(喷气背包作曲用抽屉夹吗?)
问题描述
我们有一个基于View的Android应用程序,在res/drawable
文件夹中有一些可绘制的,在res/drawable-night
文件夹中有相应的夜间模式
使用旧版视图时,引用XML布局文件中的可绘制R.drawable.foo
时,系统将根据我们处于白天模式还是夜间模式,从res/drawable
或res/drawable-night
文件夹中选取可绘制内容。
使用Jetpack Compose时,我们在可合成的图像中引用可绘制内容:
Image(painter = painterResource(R.drawable.foo))
但是,这始终从res/drawable
文件夹中选取可绘制内容,忽略白天/夜间模式。
我们可以这样做来选择正确的可绘制图形,但我们需要在所有使用可绘制图形的合成图形中测试夜间模式(isSystemInDarkTheme()
),这取决于夜间模式:
Image(painter = painterResource(id = if (isSystemInDarkTheme()) R.drawable.foo_dark else R.drawable.foo_light))
Compose中有没有一种方法可以确保从白天或夜间模式正确且透明地拾取可绘制的内容,就像在旧的视图系统中一样?
推荐答案
在发布其他答案后,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
)
}
注意,你也可以在预览中看到这一点--在Android Studio中有两个@Preview
注释会产生两个预览,并且指定你想要在黑暗模式下看到你的合成物也是可能的!
这篇关于喷气背包作曲用抽屉夹吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:喷气背包作曲用抽屉夹吗?


基础教程推荐
- AdMob 广告未在模拟器中显示 2022-01-01
- 通过重定向链接在 Google Play 中打开应用 2022-01-01
- Android:getLastKnownLocation(LocationManager.NETWORK_PROVIDER 2022-01-01
- libGDX 从精灵或纹理中获取像素颜色 2022-01-01
- iOS4 创建后台定时器 2022-01-01
- NSString intValue 不能用于检索电话号码 2022-01-01
- Cocos2d iPhone 非矩形精灵触摸检测 2022-01-01
- iPhone - 获取给定地点/时区的当前日期和时间并将其与同一地点的另一个日期/时间进行比较的正确方法 2022-01-01
- navigator.geolocation.getCurrentPosition 在 Android 浏览器上 2022-01-01
- 如何从 logcat 中删除旧数据? 2022-01-01