当前位置: 首页 > 面试题库 >

在Android中为图片旋转动画

安星汉
2023-03-14
问题内容
  • 我有一个齿轮图像,我想绕固定点连续旋转。

  • 之前,我是通过将图像作为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() 方法中所做的工作?

编辑1:

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

在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秒。



 类似资料:
  • > 我有一个齿轮图像,我想围绕一个固定点连续旋转。 早些时候,我通过将图像作为ImageView包含在Android类中并对其应用RotateAnimation来实现这一点。 基本上,我将ImageView注入到类中并应用旋转动画。 但是,我再也不能奢侈地使用ImageView了。我必须使用位图并在画布上旋转它。 如何使用位图在画布上连续围绕一个固定点旋转来完成前面在onDraw()方法中所做的工

  • 问题内容: 有没有一种简单的方法可以围绕图片中心旋转图片?我首先使用了AffineTransformOp。看起来很简单,而且需要,并且在一个整洁的Google会话中为矩阵找到正确的参数。所以我认为… 我的结果是这样的: 如果您忽略旋转90度的倍数的情况,这非常简单(sin()和cos()无法正确处理)。该解决方案的问题在于,它围绕图片左上角的(0,0)坐标点进行变换,而不是围绕图片中心进行正常的变

  • 本文向大家介绍Android自定义View图片按Path运动和旋转,包括了Android自定义View图片按Path运动和旋转的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Android自定义View图片按Path运动旋转的具体代码,供大家参考,具体内容如下 View: Activity 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 有没有人知道如何正确旋转NV21图像字节[]保留其颜色信息正确。

  • 我正在尝试建立一个简单的“飞鸟”游戏,我需要鸟的图像倾斜,上升时指向上方,反之亦然。然而,当旋转我的图像时,它会在稍微下降或轻触屏幕后部分或完全从屏幕上消失。谁能告诉我怎么解决这个问题吗?

  • 我正在从相机中保存一个处于横向模式的图像。所以它被保存在横向模式下,然后我在它上面应用一个覆盖层,它也是在横向模式下。我想旋转那个图像,然后保存。例如,如果我有这个 我想顺时针旋转90度一次,这样做,并将其保存到SD卡: 如何做到这一点?