2012-03-10 20 views
0

私はAndroidに新しく、ビューを2秒間表示してから変更するアプリケーションを構築しています。私はどこかpostdelayedメソッドを使用する必要があります理解し、今私はちょうど遅延後canvas.drawTextラインをOMMITする方法を...知らないAndroid 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++; 

    } 
    } 
    } 

:ここに私のonDrawメソッドです。

+0

2秒後に何をしたいのですか?説明してください – Soham

答えて

0

あなたは確かに、タイマーが必要とされている。この

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

のようなものを意味しています。私がやることは非常に簡単ですが、最初に点の描画の代わりにのレコードの座標(および必要な他のデータ)を作成してから、タイマーを使用して再現します(Androidハンドラ、好ましくは上記のようなもの)。これはまた、実際の描画中に多くの可能性を提供します:一時停止、速く/遅く、後ろに行く... この方法が複雑な図面に使用できるかどうかはわかりませんが、図形、曲線、表面など

関連する問題