我的应用程序在一个连续的循环中绘制到画布上,并在每个循环中重新评估可绘制对象的位置,并循环它们以进行动画。我的问题是以下两种方法中哪一种更好,为什么?我是一个初学者,所以我不知道如何对方法进行基准测试之类的东西,所以如果你可以,或者你已经做到了,我将非常感谢你的投入。
第一种方法(我正在使用的方法)是为png资源分配一个句柄作为可绘制的。然后,每次我想要绘制对象时,我调用:
Drawable.setBounds(x,y,x,y);
Drawable.draw(canvas);我的问题是,(在构造函数中)将资源解码为BitMap,然后将其缩放到适当的大小是否会更快。然后在每个循环中,通过以下方式获取资源:
canvas.drawBitmap(DrawableName, 0, 0, null);我问的原因是,我的应用程序需要数百个资源,所以更改几个资源并不足以区分不同之处,我想知道在我彻底修改代码之前,这样做是否会更快。无论如何,我需要以某种方式提高性能,因此也欢迎任何其他好的想法。
发布于 2011-11-29 03:17:50
一般来说,绘制位图比绘制更快,因为有了正确的准备,绘制位图只是将内存转储到屏幕上。如果您需要绘制缩放的位图,则使用createScaledBitmap将其绘制为一个位图,而不是先创建它然后缩放它。您可以通过以下方式实现此目的:
Bitmap myBitmap = BitmapFactory.decodeFile(myFile.getPath());
myBitmap = myBitmap.createScaledBitmap(myBitmap, width, height, true);The Android developers documentation on the above function
在运行时计算和绘制基元需要进行计算,当绘制其中许多基元时会降低性能,因此在可能的情况下使用更多的位图-但要注意过早优化-如果没有必要创建大量的位图,则没有意义,因为不会有显着(即显著)的性能提升。
https://stackoverflow.com/questions/8300929
复制相似问题