2017-02-19 56 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 
}