Android 安卓:有没有办法加快canvas.drawBitmap的速度?

Android 安卓:有没有办法加快canvas.drawBitmap的速度?,android,performance,sprite,tablet,frame-rate,Android,Performance,Sprite,Tablet,Frame Rate,简单的问题,不确定是否有简单的答案 我能做些什么来加速我的surfaceview绘图 我用的是这样的东西: c.drawBitmap(scaledSprite, X, Y, redPaint); 我使用的方法是在屏幕上绘制25个精灵,所以我使用for循环,这意味着在一帧中必须显示25个精灵 现在,这在我测试过的3部手机上运行得非常好,但在平板电脑上,它的速度就慢了。我已经注释掉了所有其他的绘图方法,只留下了这一种,这无疑是减慢游戏速度的原因 有没有人能给我一些聪明的建议来加速这个过程 我知道O

简单的问题,不确定是否有简单的答案

我能做些什么来加速我的surfaceview绘图

我用的是这样的东西:

c.drawBitmap(scaledSprite, X, Y, redPaint);
我使用的方法是在屏幕上绘制25个精灵,所以我使用for循环,这意味着在一帧中必须显示25个精灵

现在,这在我测试过的3部手机上运行得非常好,但在平板电脑上,它的速度就慢了。我已经注释掉了所有其他的绘图方法,只留下了这一种,这无疑是减慢游戏速度的原因

有没有人能给我一些聪明的建议来加速这个过程


我知道OpenGL是一种可能性,但游戏的大部分内容现在都已经编写好了,所以如果我能帮上忙,我现在真的不想做任何剧烈的更改。

如果您将SurfaceView设置为较低质量的图形

getHolder().setFormat(0x00000004); //RGB_565
并在同一配置中加载所有位图

Options options = new BitmapFactory.Options();
options.inScaled = false; 
options.inPreferredConfig = Bitmap.Config.RGB_565;
这将使它更快,另外,您需要根据帧延迟来改变精灵的移动速度


然而,即使使用这些设置,一个带有许多精灵的街机游戏在平板电脑上也不能很好地运行,因此,我担心,如果你想制作一个适合销售的游戏,你必须创建一个OpenGl框架或使用现成的框架。

嘿,谢谢你,太棒了!它确实有帮助-我发现了主要的问题所在,我使用了一个灰色的雪碧,我正在使用drawBitmap的绘画选项进行着色-我不知道为什么,但这样做会将速度减慢到蜗牛的速度,因此,我将不得不创建不同颜色的精灵,并加载它们-但这与你的建议相结合,帮助了我很多-它现在运行得很好!!是的,我认为最好的方法是,快速绘制位图时,Paint为空。但是偶尔使用过滤器着色应该可以。FWIW,如果您想避免使用重复的图形(同一图像的不同颜色)使.apk膨胀,您可以在资源中包含灰色的,并在运行时创建彩色位图(一次,而不是每一帧)。。。我已经用类似的预渲染技术成功地加速了我的一个应用程序。这真是太可怕了……它大大提高了速度。很久以前我读过关于RGB_565的文章,但我认为这会大大降低质量。但事实并非如此,对于像单色形状这样的简单位图,它是有效的。很好的回答。。。。