【问题标题】:Android wear watchface rotation leaves trailAndroid Wear 表盘旋转留下痕迹
【发布时间】:2017-02-19 17:10:53
【问题描述】:
我正在编写一个表盘,我在背景上放了一个旋转轮,但它在原来的位置留下了一条奇怪的轨迹,并且这条轨迹没有被删除。这条轨迹只留在透明背景区域。
演示:
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();
我该如何解决?
【问题讨论】:
标签:
java
android
wear-os
watchface
【解决方案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 类也是更好的做法
【解决方案2】:
我认为您只需要在开始绘制当前面孔之前清除您的Canvas:
@Override
public void onDraw(Canvas canvas, Rect bounds) {
canvas.drawColor(Color.BLACK);
// your code starts here
}