gpt4 book ai didi

java - getDrawable Kotlin 文件导致找不到资源但在 Java 文件中有效

转载 作者:行者123 更新时间:2023-11-30 04:57:21 24 4
gpt4 key购买 nike

由于无法通过可绘制对象加载位图,我苦恼了几个小时。通过我正在使用的资源加载可绘制对象

 ContextCompat.getDrawable(this,R.drawable.ic_launcher_background);

如果我在任何 .kt 文件扩展名中使用它,它永远不会加载可绘制对象。我调试了它,发现它会导致 resource not found exception. Kotlin Exception所以要检验这个假设。我创建了一个只有 2 个文件的新项目。一种 Java 和一种 Kotlin。而且它以某种方式在 java 文件中工作。 Java Working我真的不知道为什么它在 java 中工作并在 kotlin 中导致异常


所以我认为这是 Android Studio 调试时的一个错误,它不会泄露可绘制对象。

虽然我的问题是我正在从 vector 可绘制对象创建位图,但不知何故它没有在 Canvas 上绘制,所以我开始调试它并发现找不到资源。我尝试使用 png 并且它有效。尽管它在 kotlin 和 java 中都有效,即创建了可绘制对象,但调试器存在问题中发布的一些问题。

最佳答案

private fun getBitmapOfVectorDrawable(resourceId: Int, pContext: Context): Bitmap? {
return try {
val drawable: Drawable = AppCompatResources.getDrawable(pContext, resourceId)!!
if (drawable is BitmapDrawable) {
drawable.bitmap
} else if (drawable is VectorDrawableCompat || drawable is VectorDrawable) {
val bitmap = Bitmap.createBitmap(drawable.intrinsicWidth, drawable.intrinsicHeight, Bitmap.Config.ARGB_8888)
val canvas = Canvas(bitmap)
drawable.setBounds(0, 0, canvas.width, canvas.height)
drawable.draw(canvas)
bitmap
} else {
throw IllegalArgumentException("unsupported drawable type")
}
} catch (ee: java.lang.Exception) {
Log.e("TAG", ee.message)
null
}
}

关于java - getDrawable Kotlin 文件导致找不到资源但在 Java 文件中有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58898403/

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