2013-07-31 46 views
2

我在Activity類中設置了全局變量x,y。Android onDraw循環

我開始一個線程「t0」,它不斷更新全局變量x和y。

我的onDraw僞代碼如下(所有的UI線程): -

View.onDraw(){ 
    if (x,y changed value) { 
     x0=x; 
     y0=y; 
     loop (x0-- until x0==0){ 
      canvas.drawBitmap(bmp, x0, y0, bitmapPaint); 
      invalidate(); 
     } 
    } 
} 

我希望,我看到了位圖在屏幕上移動在x軸的動畫,用每個invalidate()重新繪製新的位置。相反,我看到它跳轉到最後一個x位置0(沒有中間階段)。

我做的是,儘管X和Y通過T0更新,我不是太在意的假設,因爲環忙與原來的X,Y值(分配給X0,Y0)。

我觀察X,Y更新和碼內所執行的「如果環路」(I看到此經由調試)。

我試着添加延遲,但它似乎沒有任何區別。我能得到它直接重新繪製到一個新的x,y位置,但我需要通過循環從一個-X0-座標發生在另一順利「過渡」。

任何提示或技巧,將不勝感激。

在此先感謝。

史蒂夫

回答

0

我認爲你不能在onDraw內引起onDraw。調用invalidate()不僅會導致該onDraw將在當前onDraw完成後調用。我不知道你如何真正實現它,因爲它是僞代碼,但我想你不希望在的onDraw的循環,但不somethinglike這樣的:

View.onDraw(){ 
    if (x,y changed value) { 
     x0=x; 
     y0=y; 
     if (x0!=0){ 
      x0--; 
      canvas.drawBitmap(bmp, x0, y0, bitmapPaint); 
      invalidate(); 
     } 
    } 
} 
0

正在發生的事情在這裏,我的猜測是,中間體越來越繪製。但沒有足夠的時間來展示這些。你必須在其中設置一些thread.sleep。它會工作。