请问在canvas上绘制位图的最快方法是什么?
我目前有一张位图(和用于绘制的canvas),我使用它来双缓冲绘图调用,然后当我绘制到canvas上时通过应用1像素的canvas平移产生滚动效果。这样做会将帧速率从60+ FPS降至约40个,性能下降很明显。目前我没有使用SurfaceView或GLSurfaceView,只是想知道是否还有其他可以提高速度的方法。下面是onDraw()代码:
@Override
public void onDraw(Canvas canvas)
{
//update fps text
mFpsTracker.frameTouch();
if(mBufferedBitmap == null)
{
mBufferedBitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_4444);
mBufferedCanvas = new Canvas(mBufferedBitmap);
}
paint.setColor(Color.BLUE);
mBufferedCanvas.drawLine(0, getHeight(), getWidth(), getHeight(), paint);
mBufferedCanvas.translate(0, -1);
canvas.drawBitmap(mBufferedBitmap, 0, 0, null);
//draw fps
mTextPaint.setColor(Color.WHITE);
canvas.drawText(mFpsTracker.getFPSString(), 40, 40, mTextPaint);
invalidate();
}
onDraw()
方法中调用了invalidate()
。 - TheRealChx101invalidate()
意味着下一帧不会调用onDraw()
。 - Dori