在我的Android绘画应用程序中,我将在画布上绘画。 但有些时候我在画之前就有了Image。那时我的油漆变慢了。问题在哪里?
仅在Canvas上绘制的代码:
@Override
protected void onDraw(Canvas canvas) {
//canvas.drawColor(0, PorterDuff.Mode.CLEAR);
// set the Canvas Color
canvas.drawColor(canvasColor); // edited
canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
canvas.drawPath(mPath, mPaint);
}
将图像作为背景的代码是:
@Override
protected void onDraw(Canvas canvas) {
//canvas.drawColor(0, PorterDuff.Mode.CLEAR);
// set the Canvas Color
canvas.drawColor(canvasColor); // edited
if(!(imagePath==null))
{
Bitmap tempBitmap = BitmapFactory.decodeFile(imagePath); // from the gallery
photoBitmap = Bitmap.createScaledBitmap(tempBitmap, display.getWidth(), display.getHeight(), true);
}
if(!(imagePath==null))
{
canvas.drawBitmap (photoBitmap,0, 0, null);
}
canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
canvas.drawPath(mPath, mPaint);
}
现在我不知道为什么我的画颜料变得很慢,而我在画布上画画,如果有图像作为背景。 请帮帮我。 感谢。
答案 0 :(得分:5)
由于onDraw函数中的这行 Bitmap tempBitmap = BitmapFactory.decodeFile(imagePath); ,您的应用程序可能会变慢。如果你要在每个实例上更改位图,那么你应该在onDraw之外声明它,只需为它分配新的Bitmap,如果你没有更改它,那么只需在开始时和onDraw初始化并分配对象,只需在画布中绘制它。