Kotlin使用png作为Drawable时模拟器启动应用后闪退问题求助
问题原因与解决方案
问题根源
ImageVector.vectorResource()是Jetpack Compose中专门用于加载**矢量Drawable资源(XML格式)**的API,它无法识别并加载png这类位图资源。当你传入png资源ID时,会触发资源类型不匹配的异常,直接导致应用崩溃闪退。
解决方案
方法一:使用通用资源加载API(推荐)
将ImageVector.vectorResource()替换为painterResource(),这是Compose中通用的资源加载方法,同时支持矢量图和位图:
Icon( painter = painterResource(id = R.drawable.calc), modifier = Modifier.size(buttonWidth), contentDescription = "calc icon", tint = Color.Unspecified )
方法二:将png转换为矢量Drawable(可选)
如果坚持使用ImageVector.vectorResource(),可以把png转为XML矢量图:
- 在Android Studio中右键点击
drawable目录 → 选择New→Vector Asset - 在弹出的窗口中选择
Local file (SVG, PSD),导入你的calc.png,按照向导完成转换 - 转换完成后,使用生成的XML矢量资源ID即可正常加载
额外注意事项
- 确保png资源放置在正确的
drawable系列目录下,资源文件名仅使用小写字母、数字和下划线,避免大写或特殊字符 - 执行
Build→Clean Project,再执行Build→Rebuild Project,清理资源缓存,避免旧缓存导致的异常
内容的提问来源于stack exchange,提问作者Hope
相关产品推荐
相关产品推荐

