这两个代码段之间有什么区别?
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.image)
Matrix m = new Matrix();
m.postRotate(angle, bmp.getWidth()/2, bmp.getHeight()/2);
m.postTranslate(x,y);
canvas.drawBitmap(bmp,m,null);
或者:
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.image)
canvas.save();
canvas.rotate(angle, bmp.getWidth()/2, bmp.getHeight()/2);
canvas.drawBitmap(bmp, x, y, null);
canvas.restore();
是否存在性能差异?如果我试图获得高帧率,是否值得在选项1中缓存Matrix?
答案 0 :(得分:1)
我不确定您为什么只在其中一个示例中调用canvas.save()
和canvas.restore()
,但我已经完成了性能测试并显示:
Matrix
似乎更快(通常为30-50%),用于加载相同的图片。Canvas
最终更快:300,000之后
测试 - 4-15%。因此,如果您需要加载几次,请使用Matrix
如果您需要加载数十万次 - 最好只使用Canvas
(或者至少重复使用相同的Matrix
实例)。