在Canvas上绘制旋转的位图很慢:还有其他选择吗?
|
我正在开发一个动态壁纸应用程序,它将绘制一个模拟时钟。到目前为止,我到达了使用三个位图绘制时钟的位置:刻度盘,时针和分针。
当我绘制小时和分钟时,我会这样做(伪代码):
// 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绘图,所以它不是那么简单,因此我需要使用第三方黑客(我知道存在)来实现我不愿意做的事情...
没有找到相关结果
已邀请:
3 个回复
屠创氓读叔
净爽
逝媳蘑贩茄