开发者

Rotate ImageView in Android around a fixed point using RotateAnimation

I'd like to rotate an image 360 degrees continuously around a fixed point. I've seen a few examples already such as:

RotateAnimation anim = new RotateAnimation(0, 360,150,150);
anim.setInterpolator(new LinearInterpolator());
anim.setRepeatCount(Animation.INFINITE);
anim.setDuration(2000);
[im开发者_如何学编程ageview].startAnimation(anim);

This does rotate the image, but it does so on an arc/circular path. Ie. the image is moving/rotating in a circular motion but isn't staying fixed at it's starting location.

What I basically want is to mimic the rotation of a WindMill's arms.

Any thoughts?


Use this code

RotateAnimation rotateAnimation1 = new RotateAnimation(0, 360,
        Animation.RELATIVE_TO_SELF, 0.5f,
        Animation.RELATIVE_TO_SELF, 0.5f);
rotateAnimation1.setInterpolator(new LinearInterpolator());
rotateAnimation1.setDuration(duration);
rotateAnimation1.setRepeatCount(0);
img.startAnimation(rotateAnimation1);

this will rotate your image on its fixed position, i.e. around itself


Ok so I got this working perfectly after some tweaking. Like Macarse said, it did involve the padding around the ImageView.

To fix this issue, all you have to do is put your ImageView inside a RelativeLayout:

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"        
    >

    <ImageView
        android:id="@+id/imageview"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:src="@drawable/image"
        />

</RelativeLayout>


i will say set the pivot point of imageview.. to the x = imgView.getWidth()/2, and y = imgView.getHeight()/2

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜