2017-02-19 49 views
2

我正在編程一個表面,我在背景上放置了一個旋轉輪,但它留下了一個奇怪的痕跡,之前一直存在,並且這條痕跡未被刪除。這條路線只留在透明背景區域。Android磨損表面旋轉離開軌跡

示範:

enter image description here

enter image description here

final float angle = (float) (System.currentTimeMillis() % 2000) 
 
        /2000 * 360; 
 

 
Matrix matrix = new Matrix(); 
 
matrix.setRotate(angle,canvas.getHeight()/2, 
 
canvas.getWidth()/2); 
 
canvas.drawBitmap(mWheelBitmap, matrix, new Paint()); 
 
invalidate();

我怎樣才能解決呢?

回答

1

似乎你還沒有重置矩陣。您可以像下圖一樣重置矩陣。

matrix.reset(); 

您可以按照下面的代碼。它爲我工作。

final float angle = (float) (System.currentTimeMillis() % 2000)/2000 * 360; 

Matrix matrix = new Matrix(); 
matrix.reset(); 
matrix.setRotate(angle,canvas.getHeight()/2, 
canvas.getWidth()/2); 
canvas.drawBitmap(mWheelBitmap, matrix, new Paint()); 
invalidate(); 

它也更好的做法啓動的onCreate()

1

我認爲你只需要清除Canvas你開始繪製當前的前臉內部的Matrix類:

@Override 
public void onDraw(Canvas canvas, Rect bounds) { 
    canvas.drawColor(Color.BLACK); 

    // your code starts here 
}