我正在开发一个将绘制模拟时钟的动态壁纸应用程序。到目前为止,我已经达到了使用三个位图绘制时钟的程度:拨号,时针,分针。在画布上绘制旋转的位图很慢:还有其他选项吗?
当我画小时和分钟我做这样的(伪代码):
// without this it looks weird after rotate
Paint smoothPaint = new Paint(FILTER_BITMAP_FLAG);
canvas.drawBitmap(dialBitmap, 0, 0, null);
canvas.rotate(ANGLE_FOR_HOUR_HAND, w/2, h/2);
canvas.drawBitmap(hourBitmap, 0, 0, smoothPaint);
canvas.rotate(ANGLE_FOR_MINUTE_HAND, w/2, h/2);
canvas.drawBitmap(minuteBitmap, 0, 0, smoothPaint);
这工作,除了我得到一个非常低帧率好:约13帧。 如果我关闭位图过滤,它会增加到约24 fps,但对我而言仍然很低。
我知道在Canvas上绘制的2D图不会以任何方式加速,但仍然想要问有没有其他选项可以加速此代码?以某种方式本地绘制位图?也许还有其他的东西?
利用OpenGL是一种选择,但由于其LiveWallpapers不那么简单不支持GL绘图,所以我需要使用第三方黑客(我知道存在)对于我宁愿不做......
感谢您的回复:)编号1)不计数,我的意思是“其他选项”为这个确切的设置 - 显示旋转图像: )2)你提供了一个非常好的信息,谢谢。我会看看AndEngine。我已经知道GLWallpaperService,已经使用过了,正如我所说的,我现在不想使用它 - 我要求在2D Canvas中提供选项。关于libgdx + livewallpapers的非常有趣的信息 - 我知道那个很好的lib,它对于它的支持真的很酷:)如果你对我发现的更多东西感兴趣,可以增加fps,请参阅我自己的答案:) – dimsuz 2011-04-17 17:04:42
@dpimka刚刚编辑的答案,以添加renderscript到“黑客”的全景。可能没有用于你目前的目的,但有些事要熟悉......祝你好运。 – 2011-05-13 17:51:04