在Android中为图片旋转动画

  • 我有一个齿轮图像,我想绕固定点连续旋转。

  • 之前,我是通过将图像作为ImageView包含在我的Android类中并对其应用RotateAnimation来实现的。

    @InjectView(R.id.gear00)              ImageView gear00;

    RotateAnimation ra07 = new RotateAnimation(0, 359, 129, 186);

    ra07.setDuration(10000);

    ra07.setRepeatCount(RotateAnimation.INFINITE);

    ra07.setInterpolator(new LinearInterpolator());

    gear00.setAnimation(ra07);

基本上,我是将ImageView注入类并应用旋转动画。

但是,我再也不能使用ImageView了。我必须使用 位图 并将其在画布上旋转。

如何在画布上连续围绕固定点旋转位图来完成我在 onDraw() 方法中所做的工作?

我尝试了下面提到的建议之一,我的代码看起来像下面的样子

在onCreate()中:

Matrix matrix = new Matrix();

matrix.setRotate(10, 100, 200);

然后在onDraw()中(其中gear00Scaled是要在画布上旋转的位图):

canvas.drawBitmap(gear00Scaled,matrix,new Paint());

我尝试过的另一种方法是保存画布,旋转它,然后恢复它:

canvas.save();

canvas.rotate(10);

canvas.drawBitmap(gear00Scaled,100,200,null);

canvas.restore();

似乎都没有工作!

回答:

在你的onCreate()中

Matrix matrix = new Matrix();

然后在onDraw

float angle = (float) (System.currentTimeMillis() % ROTATE_TIME_MILLIS) 

/ ROTATE_TIME_MILLIS * 360;

matrix.reset();

matrix.postTranslate(-source.getWidth() / 2, -source.getHeight() / 2);

matrix.postRotate(angle);

matrix.postTranslate(centerX, centerY)

canvas.drawBitmap(source, matrix, null);

invalidate(); // Cause a re-draw

ROTATE_TIME_MILLIS是完整的循环时间,例如2000为2秒。

以上是 在Android中为图片旋转动画 的全部内容, 来源链接: utcz.com/qa/428256.html

回到顶部