同时旋转和平移位图

时间:2014-04-29 13:36:21

标签: android animation live-wallpaper

我正在制作一个动态壁纸,我想在画布上从左到右依次旋转图像1,依此类推。我能够从左向右移动它,但在应用旋转时,它在中心没有旋转。我的代码如下。我使用了动画,但它在动态壁纸中引起了错误。

try {
    c = holder.lockCanvas();
    // clear the canvas
    c.drawColor(Color.BLACK);
    Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG);
    if (c != null){
        int width=c.getWidth();
        int degree=0;
        c.drawBitmap(backgroundImage, 0, 0, null);
        Matrix transform = new Matrix();
        // transform.setTranslate(100, 100);
        // transform.preRotate(degree,75 ,100);
        // canvas.drawBitmap(bitmap, transform, null);
        transform.setRotate(degree, x, y);
        c.drawBitmap(image1, transform, null);
        //canvas.rotate(-90);
        if(x>width+100){  
            // assign initial value to start with
            x=-130;
        }
        // change the x position/value by 1 pixel
        x=x+4;
        degree+=45;
        c.restore(); 
    }
}

1 个答案:

答案 0 :(得分:0)

我没有看到你调用c.save();当你调用c.restore()时,它需要与之前的c.save()配对。

从api on restore():此调用平衡先前对save()的调用,并用于删除自上次保存调用以来对矩阵/剪辑状态的所有修改。调用restore()的次数比调用save()的次数多出错。