Java — растровые изображения для рисования отстают

#java #android #bitmap

#java #Android #растровое изображение

Вопрос:

Я рисую свои растровые изображения на экране с помощью canvas и view. Когда я открываю экран, я получаю серию задержек в позиционировании изображения (почти как если бы я наблюдал, как компьютер медленно думает о том, где разместить точки).

Сначала так:

введите описание изображения здесь

Затем:

введите описание изображения здесь

И, наконец,:

введите описание изображения здесь

Я понимаю, что это сложно с описанием, которое я дал, но если у кого-нибудь есть какие-либо идеи, не могли бы они мне рассказать!

Редактировать:

 public class LoseScreen extends View {

    @Override protected void onDraw(Canvas canvas) {

    paint.setColor(Color.GREEN);

    canvas.drawBitmap(box, null, menuBox, null);

    menuBox.set(screenWidth / 2 - menuWidth / 2, screenHeight / 2 - menuHeight / 2, menuBox.left   menuWidth, menuBox.top   menuHeight);
    tryagainBounds.set(screenWidth / 2 - tryagainWidth / 2, menuHeight / 2, tryagainBounds.left   tryagainWidth, tryagainBounds.top   tryagainHeight);


    canvas.drawText("    Score:", 100 * density, menuBox.top   150 * density, finalScorePaint);
    canvas.drawText(finalScoreString, 225 * density, menuBox.top   150 * density, finalScorePaint);

    canvas.drawText("Highscore:", 100 * density, menuBox.top   200 * density, finalScorePaint);
    canvas.drawText(HighScore.toString(), 225 * density, menuBox.top   200 * density, finalScorePaint);

    canvas.drawBitmap(tryagain, null, tryagainBounds, null);
 

Комментарии:

1. Пожалуйста, добавьте код, в котором вы рисуете растровые изображения на холсте, иначе помочь невозможно.

2. Загружаете ли вы растровое изображение в основной поток пользовательского интерфейса?

3. Я добавил код, и я не знаю, загружаю ли я его в основной поток пользовательского интерфейса, не уверен, что это значит. У меня есть несколько экранов, которые загружают растровые изображения, если вы это имеете в виду?

Ответ №1:

Трудно точно понять, в чем заключается ваша проблема, не видя никакого кода. Но идея может заключаться в том, чтобы убедиться, что вы используете двойную буферизацию при выводе изображения на экран (http://docs.oracle.com/javase/tutorial/extra/fullscreen/doublebuf.html )

Основное описание того, что это делает: выводит изображение с экрана во время его «сборки», а затем перемещает его в представление, когда оно завершено. Однако это не ускорит процесс рисования.