如何相对于点旋转视图

时间:2018-01-11 14:41:20

标签: android animation rotation

我正在开发一款应用程序,它的圆圈顶部有一个带箭头的指南针。

问题在于我尝试了很多方法,例如:

View Arrow = findViewById(R.id.arrow);
   RotateAnimation rotateAnim = new RotateAnimation(0.0f, 90,
            RotateAnimation.RELATIVE_TO_SELF, 0.5f,
            RotateAnimation.RELATIVE_TO_SELF, 1f);
    rotateAnim.setDuration(0);
    rotateAnim.setFillAfter(true);
    Arrow.setAnimation(rotateAnim);
    rotateAnim.start();

但无法实现图像中描述的结果。 我不想旋转圆圈本身,只想旋转箭头。

enter image description here

2 个答案:

答案 0 :(得分:0)

更改此代码:

RotateAnimation rotateAnim = new RotateAnimation(0.0f, 90,
       RotateAnimation.RELATIVE_TO_SELF, 0.5f,
       RotateAnimation.RELATIVE_TO_SELF, 1f);

到此:

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

这假设圆的中心位于图像的中心(因此我们使用50%x和50%y作为轴心点)。如果圆圈的中心位于图像的中心,则您必须调整枢轴,直到找到正确的位置。

答案 1 :(得分:-1)

如果箭头是单独的视图,您应该同时实现两种动画:

1)顺时针旋转箭头中心0到90度;

2)沿90度弧形路径移动箭头。