2012-03-10 114 views
0

我是新來的android和建立一個應用程序,其中涉及顯示視圖2秒,然後更改。這裏是我的onDraw方法: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++; 

    } 
    } 
    } 

我明白我必須從某個地方使用postdelayed方法,但不知道怎麼...現在我只想ommit延遲後canvas.drawText線。

+0

你想在2秒後做什麼改變?請解釋 – Soham 2012-03-10 06:36:47

回答

0

你的意思是這樣

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

需要一個計時器,確實如此。我所做的工作非常簡單,首先爲繪圖的每個點創建記錄的座標(以及任何其他需要的數據) - 而不是現場繪製點 - 然後使用定時器重現它們(Android處理程序,最好如上所述)。這也爲您提供了很多可能性,而實際繪圖:暫停,走得更快/更慢,後退... 我不知道這種方法是否可以用於複雜的圖紙,但它可以繪製形狀,曲線,表面等