【问题标题】: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
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-09
        • 2013-09-07
        • 1970-01-01
        • 2011-01-31
        • 1970-01-01
        • 2023-04-05
        • 2021-07-07
        • 2011-09-27
        相关资源
        最近更新 更多