0

我是 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++;

  }
  }
    }

我知道我必须在某处使用 postdelayed 方法,但不知道如何......现在我只想在延迟后省略 canvas.drawText 行。

4

2 回答 2

0

你的意思是这样的吗

new Handler().postDelayed(new Runnable(){
  public void run(){
    // do something here like draw text;
 }
}, 2000);
于 2012-03-10T06:40:48.963 回答
0

确实需要一个计时器。我所做的非常简单,首先为绘图的每个点创建坐标记录(以及所需的任何其他数据)——而不是在现场绘制点——然后使用计时器(Android处理程序,最好像上面建议的那样)。这也为您在实际绘图时提供了很多可能性:暂停,快/慢,倒退,......我不知道这种方法是否可以用于复杂的绘图,但它可以用于绘制形状,曲线,表面等

于 2016-06-18T09:01:05.377 回答