Рисование растрового изображения в качестве фона SurfaceView - PullRequest
1 голос
/ 09 февраля 2012

В настоящее время я рисую Bitmap в SurfaceView, используя Canvas.drawBitmap(). Похоже, это действительно снижает мою частоту кадров, и мне было интересно, что я могу сделать, чтобы это исправить. Я ссылаюсь на растровое изображение, созданное мной вне метода onDraw(). Я позаботился о том, чтобы изображение было маленьким, непрозрачным, совпадали форматы пикселей ... и т. Д. Когда я не рисую изображение, частота кадров увеличивается примерно на 10-15 кадров в секунду. Есть идеи, чтобы ускорить это? Я испытываю заметное отставание.

Я создаю растровое изображение вне всего ...

private Bitmap bitmapPlayer = BitmapFactory.decodeResource(getResources(), R.drawable.player);

Тогда в моем методе onDraw () ...

canvas.drawBitmap(bitmapPlayer, null, drawingRect, null); // drawingRect is the Rect to draw the Bitmap inside of
// ... Rest of drawing code

Ответы [ 2 ]

1 голос
/ 09 февраля 2012

Я могу только предположить, что вы делаете что-то сложное с логикой в ​​своем вызове отрисовки. Если вы не видите различий между вашим кодом и следующим примером,

http://www.droidnova.com/playing-with-graphics-in-android-part-iii,176.html

Я бы начал изучать следующее и использовать графическое оборудование для вашего чертежа.

http://developer.android.com/resources/articles/glsurfaceview.html

Надеюсь, это поможет

0 голосов
/ 09 февраля 2012

Насколько велик растровое изображение, которое вы используете для фона.Если он слишком большой и имеет только один размер и не создан для hdpi, mdpi и т. Д., То вы можете ссылаться на изображение излишне большого размера.В этом случае я бы использовал класс BitmapFactory для создания уменьшенной версии изображения, соответствующей ширине и высоте Canvas.

PS png изображения рекомендуются, поскольку они наиболее эффективны.*

...