2

我正在编写一个表盘,我在背景上放了一个旋转轮,但是它在以前的位置留下了一条奇怪的痕迹,并且这条痕迹没有被删除。这条轨迹只留在透明背景区域。

示范:

在此处输入图像描述

在此处输入图像描述

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(); 

我该如何解决?

4

2 回答 2

1

I think you simply need to clear your Canvas before you start drawing the current face:

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

    // your code starts here
}
于 2017-02-20T18:16:10.997 回答
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() 内部启动 Matrix 类也是更好的做法

于 2017-02-20T11:20:01.183 回答