6

请在标记重复或关闭之前仔细阅读整个问题

我想围绕其基础中心点旋转图像(特别是箭头图像)。

例如,在开始时,我的图像将像 9 上的时钟中的秒针。假设我将该图像旋转 30 度,它应该看起来像 10 上的时钟秒针,如果 120 度,则时钟秒针在 1 上。

所以我想围绕它的中心(沿x轴)旋转该图像。

那么如果我第一次编码,我应该将什么作为 pivot(X & Y) 传递

imageView.setPivotX(1f);
            imageView.setPivotY(1f);
            imageView.setRotation(-30);

或第二个代码

Matrix matrix = new Matrix();
    imageView.setScaleType(ScaleType.MATRIX);
    matrix.postRotate((float) 20, 0f, 0f);
    imageView.setImageMatrix(matrix);

或第三个代码

Bitmap myImg = BitmapFactory.decodeResource(getResources(), R.drawable.arrow_0_degree);
    Matrix matrix = new Matrix();
    matrix.postRotate(30);
    Bitmap rotated = Bitmap.createBitmap(myImg, 0, 1, myImg.getWidth(), myImg.getHeight(), matrix, true);
    imageView.setImageBitmap(rotated);

或第四个代码

final RotateAnimation rotateAnim = new RotateAnimation(0.0f, degree,
        RotateAnimation.RELATIVE_TO_SELF, 0.5f,
        RotateAnimation.RELATIVE_TO_SELF, 0.5f);

rotateAnim.setDuration(0);
rotateAnim.setFillAfter(true);
imgview.startAnimation(rotateAnim);

添加了一个图像以便更好地理解它顺时针旋转了 90 度。

我希望将来谷歌会添加更多关于枢轴点的清晰文档。

提前致谢。在此处输入图像描述

4

1 回答 1

12

您对第四个代码几乎是正确的^^

你可以这样实现:

    final RotateAnimation rotateAnim = new RotateAnimation(0.0f, 30,
            RotateAnimation.RELATIVE_TO_SELF, 0.5f,
            RotateAnimation.RELATIVE_TO_SELF, 1f);
    rotateAnim.setDuration(0);
    rotateAnim.setFillAfter(true);
    mImageView.setAnimation(rotateAnim);
    rotateAnim.start();
于 2015-06-23T15:54:31.357 回答