我正在开发一个动态壁纸应用程序,它将绘制一个模拟时钟。到目前为止,我已经达到了使用三个位图绘制时钟的地步:表盘、时针、分针。
当我绘制小时和分钟时,我会这样做(伪代码):
// 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 fps。如果我关闭位图过滤,它会增加到大约 24 fps,但对我来说仍然很低。
我知道 Canvas 上的 2d 绘图并没有以任何方式加速,但仍然想问我是否有任何其他选项可以加快此代码的速度?以某种方式本地绘制位图?也许还有别的?
使用 OpenGL 是一种选择,但它并不那么简单,因为 LiveWallpapers 不支持 GL 绘图,所以我需要使用 3rd 方黑客(我知道存在)来做我不想做的事情......