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
注释会产生两个预览,并且指定你想要在黑暗模式下看到你的合成物也是可能的!
这篇关于喷气背包作曲用抽屉夹吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:喷气背包作曲用抽屉夹吗?
基础教程推荐
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01