How to make a smooth image rotation in Android? How to make a smooth image rotation in Android? android android

How to make a smooth image rotation in Android?


You are right about AccelerateInterpolator; you should use LinearInterpolator instead.

You can use the built-in android.R.anim.linear_interpolator from your animation XML file with android:interpolator="@android:anim/linear_interpolator".

Or you can create your own XML interpolation file in your project, e.g. name it res/anim/linear_interpolator.xml:

<?xml version="1.0" encoding="utf-8"?><linearInterpolator xmlns:android="http://schemas.android.com/apk/res/android" />

And add to your animation XML:

android:interpolator="@anim/linear_interpolator"

Special Note: If your rotate animation is inside a set, setting the interpolator does not seem to work. Making the rotate the top element fixes it. (this will save your time.)


I had this problem as well, and tried to set the linear interpolator in xml without success. The solution that worked for me was to create the animation as a RotateAnimation in code.

RotateAnimation rotate = new RotateAnimation(0, 180, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);rotate.setDuration(5000);rotate.setInterpolator(new LinearInterpolator());ImageView image= (ImageView) findViewById(R.id.imageView);image.startAnimation(rotate);


This works fine

<?xml version="1.0" encoding="UTF-8"?><rotate xmlns:android="http://schemas.android.com/apk/res/android"    android:duration="1600"    android:fromDegrees="0"    android:interpolator="@android:anim/linear_interpolator"    android:pivotX="50%"    android:pivotY="50%"    android:repeatCount="infinite"    android:toDegrees="358" />

To reverse rotate:

<?xml version="1.0" encoding="UTF-8"?><rotate xmlns:android="http://schemas.android.com/apk/res/android"    android:duration="1600"    android:fromDegrees="358"    android:interpolator="@android:anim/linear_interpolator"    android:pivotX="50%"    android:pivotY="50%"    android:repeatCount="infinite"    android:toDegrees="0" />