0

私はアンドロイドが初めてで、ビューを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 に答える