0

我的应用程序在连续循环中绘制到画布上,并且在每个循环中重新评估可绘制对象的位置并循环它们以进行动画处理。我的问题是以下两种方法中哪一种更好,为什么?我是一个初学者,所以我不知道如何对方法进行基准测试和类似的东西,所以如果你可以,或者你已经有了,我会很感激你的意见。

第一种方法(我正在使用的方法)是为 png 资源分配一个 Handle 作为 Drawable。然后每次我想绘制我调用的对象时:

Drawable.setBounds(x,y,x,y);
Drawable.draw(canvas);

我的问题是(在构造函数中)将资源解码为位图,然后将其缩放到适当的大小是否会更快。然后在每个循环上通过以下方式绘制资源:

canvas.drawBitmap(DrawableName, 0, 0, null);

我问的原因是我的应用程序消耗了数百个资源,因此更改一些资源并不足以说明差异,我想知道在大修代码之前这样做是否会明显更快。无论如何,我需要以某种方式提高性能,因此也欢迎任何其他好的想法。

4

1 回答 1

1

一般来说,绘制位图比绘制正确的准备更快,绘制位图只是将内存转储到屏幕上。如果您需要绘制一个缩放的位图,然后将其绘制为一个使用createScaledBitmap而不是创建它然后缩放它。您可以通过以下方式实现:

Bitmap myBitmap = BitmapFactory.decodeFile(myFile.getPath());
myBitmap = myBitmap.createScaledBitmap(myBitmap, width, height, true);

关于上述功能的 Android 开发者文档

在运行时计算和绘制图元会进行计算,并且在绘制许多图元时会降低性能,因此尽可能使用更多位图 - 但要小心进行过早优化 - 如果不需要,创建大量位图是没有意义的,因为不会显着(即显着)的性能提升。

于 2011-11-28T19:17:49.797 回答