【发布时间】:2019-09-25 09:41:06
【问题描述】:
我想在画布上绘制许多位图,但 android 显示:“应用程序可能在其主线程上做了太多工作”并且应用程序无法运行。 [ cloud_number 超过 50 ]
这是我的代码:
fun draw_beautiful(canvas: Canvas){
val mPaint: Paint = Paint()
mPaint.style = Paint.Style.FILL
mPaint.isAntiAlias = true
mPaint.color= Color.BLACK
var vt = 0; var x1 =0f; var y1 =0f;var style =0;
for (i in 1..cloud_number){
vt = i*4-3
style = mt_cloud[vt]
x1 = mt_cloud[vt+2].toFloat()
y1 = mt_cloud[vt+3].toFloat()
var ob= canvas_cloud1
if (style==0) ob= canvas_cloud1
else if (style==1) ob= canvas_cloud2
else if (style==2) ob= canvas_cloud3
canvas.drawBitmap(ob, x1,y1 , mPaint)
}
}
【问题讨论】:
-
尝试使用 AsyncTask
-
你能给我一些代码示例吗?
-
canvas 可以在上面工作吗?我曾经尝试过,但画布在异步任务中中断。
-
@DangHoang,在下面查看我的答案。我只能用 Java 编写代码,但如果我在 Kotlin 中尝试它会出现问题。
标签: android canvas kotlin android-asynctask surfaceview