Android - 动态扩展比预定标更快,wtf?

时间:2011-11-05 22:03:16

标签: android bitmap scaling

我正在尝试编写我的第一款Android游戏,其中包含移动的圆形对象及其上的位图。

我解码了png:

moon=BitmapFactory.decodeResource(resources, R.drawable.moon);

然后,对于每个Ball对象,我在开始时执行此操作(它们可以是不同大小):

scaledMoon=Bitmap.createScaledBitmap(game.moon, (int)(r*2), (int)(r*2), true);

当在画布上画画时,我这样做:

c.drawBitmap(scaledMoon,x,y, null);

对100个对象执行此操作时,我得到的渲染时间几乎为22毫秒。

但是当我这样做时(之前没有缩放!)

c.drawBitmap(game.moon, new Rect(0,0,game.moon.getWidth(),game.moon.getHeight()), new Rect((int)(x-r),(int)(y-r),(int)(x+r),(int)(y+r)), null);

我得到17毫秒渲染时间......

画一个圆圈时

c.drawCircle(x, y, r, color);

我得到24毫秒

什么......?

1 个答案:

答案 0 :(得分:1)

你的第三行渲染速度最快是因为你重复使用相同的位图,而不是使用之前尝试预加载的所有位图来填充视频内存;它不是一个新的,它只是设置你想要绘制的界限。对于绘制圆形的24ms,我最好的选择是计算和绘制点需要更长的时间,然后是一个简单的矩形。