原创首发
Doodle 图片涂鸦库使用的一些注意事项

Doodle开源库地址
在绘制完成后,获取涂鸦的绘制,不带底图的方法
Issues#70 在绘制完成后,是否可以只获取涂鸦的绘制,不带底图的方法
// 使用原图的宽高信息创建一个大小一致的空的 Bitmap
val newBitmap = Bitmap.createBitmap(bitmap.width, bitmap.height, Bitmap.Config.ARGB_8888)
val canvas = Canvas(newBitmap)
val paint = Paint()
// 设置画笔的颜色
paint.color = Color.BLACK
// 将设置的背景绘制到画布上
canvas.drawRect(0f, 0f, bitmap.width.toFloat(), bitmap.height.toFloat(), paint)
// 获取 DoodleView 的涂鸦集合并绘制到画布上
mDoodleView.allItem.forEach { it.draw(canvas) }
涂鸦完成后,调用 save 方法后再次涂鸦时导致崩溃的问题
Issues#72 java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@e5f2cdd
堆栈信息如下
java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@e5f2cdd
at android.graphics.BaseCanvas.throwIfCannotDraw(BaseCanvas.java:55)
at android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:226)
at android.view.RecordingCanvas.drawBitmap(RecordingCanvas.java:78)
at cn.hzw.doodle.DoodleView$b.a(DoodleView.java:9)
at cn.hzw.doodle.DoodleView$b.onDraw(DoodleView.java:5)
at android.view.View.draw(View.java:19384)
at android.view.View.updateDisplayListIfDirty(View.java:18320)
需要在 onSaved 回调里调用 callback 参数的 run 方法,如下所示
val doodleView = DoodleView(this, bitmap, doodleParams.mOptimizeDrawing, object : IDoodleListener {
override fun onReady(doodle: IDode?) {
}
override fun onSaved(doodle: IDode?, doodleBitmap: Bitmap?, callback: Runnable?) {
callback?.run()
// Do something.
}
})
如果对你有帮助的话,欢迎一键三连+关注哦~
本文由
A lonely cat
原创发布于
阳光沙滩
,未经作者授权,禁止转载