Я создаю игру, используя 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>// draw game information using canvas.drawText()
timeLine++;
Заранее спасибо!