mcf*_*oft 6 svg android canvas
我知道如何使用ImageView按代码显示矢量drawable(http://www.androidhive.info/2017/02/android-working-svg-vector-drawables/),这在几篇文章中有描述,但是:
如何使用我的自定义视图和使用画布的代码绘制矢量?这可能吗?如果是这样,有人可以给我一个提示.
为此,您需要将矢量转换为位图,如下所示:
private fun getVectorBitmap(context: Context, drawableId: Int): Bitmap? {
var bitmap: Bitmap? = null
when (val drawable = ContextCompat.getDrawable(context, drawableId)) {
is BitmapDrawable -> {
bitmap = drawable.bitmap
}
is VectorDrawable -> {
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)
}
}
return bitmap
}
Run Code Online (Sandbox Code Playgroud)
然后您可以在画布上正常使用矢量作为位图:
canvas?.drawBitmap(getVectorBitmap(context, R.drawable.ic_icon), 500f, 500f, canvasPaint)
Run Code Online (Sandbox Code Playgroud)