gpt4 book ai didi

Android:onDraw 太慢

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:15:03 26 4
gpt4 key购买 nike

我正在使用 Android 2.2 构建游戏。主游戏 Activity 使用自定义 SurfaceView:

class GameView extends SurfaceView

据我了解,onDraw() 方法需要执行其自己的线程。考虑到这一点,我计划在 onDraw() 中添加背景图片:

canvas.drawBitmap(wallpaper, 0, 0, paint);
paint = new Paint();

但是当我执行游戏时,它变得很慢。如果我注释掉 new Paint() 行,游戏会加速。

我做错了什么,或者我的问题有解决方案吗?例如,有没有办法减少对 onDraw() 的调用次数?或者将 XML 属性添加到我的自定义 SurfaceView 类?

这是我如何加载可绘制图像的代码。


public Bitmap loadBitmap(String image) {
Bitmap bitmap = null;

try {
int id = R.drawable.class.getField(image).getInt(new Integer(0));
bitmap = BitmapFactory.decodeResource(context.getResources(), id);
// bitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.RGB_565);
} catch(Exception ex) {
Log.e("loadBitmap", ex.getMessage());
}

return bitmap;
}

这是onDraw 方法的代码。不幸的是,我无法发布所有内容。

paint.setColor(Color.BLACK);
canvas.drawRect(0, 0, getWidth(), getHeight(), paint);
canvas.drawBitmap(gameLevel.getBitmap(), 0, 0, paint);
// draw object(1) 320x25
// draw object(5) 50x50 each
// draw object(n) 15x15 each, estimate
// draw object(n) 50x50 each
// collision check, draw hit tile on the image sheet<p></p>

<p>// draw game information using canvas.drawText()
timeLine++;
</p>

提前致谢!

最佳答案

如果问题只是“paint = new Paint();”行,为什么不只创建一次 Paint 对象?首次创建类时,将其设为类变量。然后每次需要时都使用该对象。

关于Android:onDraw 太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7057807/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com