Задержка добавления Android в методе onDraw - PullRequest
0 голосов
/ 10 марта 2012

Я новичок в Android и создаю приложение, которое включает в себя отображение представления в течение 2 секунд, а затем изменить.Вот мой метод onDraw:

@Override
public void onDraw(Canvas canvas)
{
float level = game.level;
width = getWidth();
tile_length = width/level;

Paint rect = new Paint();
rect.setColor(getResources().getColor(R.color.dark));
canvas.drawRect(0, 0, width, width, rect);

   game.numbers.setTextSize( (0.70f * tile_length));
   game.numbers.setTextAlign(Paint.Align.CENTER);

   grid.setColor(getResources().getColor(R.color.lines));
  rect.setColor(getResources().getColor(R.color.tile_on));

   int ind = 1;
   int tile_num = 1;
   FontMetrics fm = game.numbers.getFontMetrics();  

 float x = tile_length/2;
   float y = tile_length/2 - (fm.ascent + fm.descent) / 2;

   Log.v(LOG_TAG, "changed = " + game.changed);

  for (int i=0; i<width; i+=tile_length)
  {
  for(int j=0; j<width; j+=tile_length)
  {
  for(int k = 0; k<level; k++ )
  if(tile_num == game.random[k])
  {
//   Log.v(LOG_TAG, "i = " + i + "j = " + j);
 game.set_Coordinates(ind-1, i, j);
 String tile = Integer.toString(ind++);
 canvas.drawRect(i, j, i+tile_length, j+tile_length, rect);
 canvas.drawText(tile, i+x, j+y, game.numbers); //needs to be updated after 2 seconds
  break;
  }

  tile_num++;

  }
  }
    }

Я понимаю, что где-то должен использовать метод с задержкой, но не знаю как ... Теперь я просто хочу пропустить строку canvas.drawText после задержки.

Ответы [ 2 ]

0 голосов
/ 18 июня 2016

Таймер действительно нужен.То, что я делаю, что очень просто, это сначала создать записей координат (и любые другие необходимые данные) для каждой точки чертежа - вместо рисования точек на месте - и затем воспроизвестиих использование таймера (обработчик Android, предпочтительно, как предложенный выше).Это также предлагает вам много возможностей при реальном рисовании: пауза, ускорение / замедление, движение назад, ... Я не знаю, можно ли использовать этот метод для сложных рисунков, но он подходит для рисования фигур, кривых,поверхности и т. д.

0 голосов
/ 10 марта 2012

ты имеешь в виду что-то вроде этого

new Handler().postDelayed(new Runnable(){
  public void run(){
    // do something here like draw text;
 }
}, 2000);
...