我正在制作一个动态壁纸,我想在画布上从左到右依次旋转图像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();
}
}
答案 0 :(得分:0)
我没有看到你调用c.save();当你调用c.restore()时,它需要与之前的c.save()配对。
从api on restore():此调用平衡先前对save()的调用,并用于删除自上次保存调用以来对矩阵/剪辑状态的所有修改。调用restore()的次数比调用save()的次数多出错。