两种方法
fun View.toBitmap(viewWidth: Int, viewHeight: Int): Bitmap? {
layout(0, 0, viewWidth, viewHeight)
buildDrawingCache()
return drawingCache
}
fun View.toBitmap2(): Bitmap? {
var bitmap: Bitmap? = null
// 创建对应大小的bitmap
try {
bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
val canvas = Canvas(bitmap!!)
draw(canvas)
} catch (t: Throwable) {
t.printStackTrace()
}
return bitmap
}
第一种方法是通过 buildDrawingCache 来建立一个缓存 Bitmap,这种方法已经被废弃了,它是在硬件加速诞生前使用的绘制加速策略。
第二种方法是将 View 绘制到 Canvas 上,再由 Canvas 得到 Bitmap,这也是在 buildDrawingCache 的注释里建议采用的方式。
第一种方法可以处理一个 new 的,没绘制过的 view。
第二种方法只能处理绘制过的 view。

本文介绍了将Android中View转换为Bitmap的两种方法:一种是使用废弃的buildDrawingCache方法,适用于未绘制过的View;另一种是通过Canvas绘制View并获取Bitmap,适用于已绘制的View。第二种方法是官方推荐的替代方案。
的方法&spm=1001.2101.3001.5002&articleId=100026342&d=1&t=3&u=239f340642924db985e05e8e9cc3895c)
2527

被折叠的 条评论
为什么被折叠?



