RotateAnimation rotateAnimation = new RotateAnimation(0, 359, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
rotateAnimation.setDuration(1000); // 旋转一周所用的时间
rotateAnimation.setRepeatCount(Animation.INFINITE);// 无限次重复
// 开始旋转
imageView.startAnimation(rotateAnimation);
// 停止旋转
imageView.clearAnimation();
注意:在停止旋转前,需要先判断是否存在正在运行的旋转动画。
完整的代码示例:
layout.xml
MainActivity.java
public class MainActivity extends AppCompatActivity {
private ImageView imageView;
private RotateAnimation rotateAnimation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = findViewById(R.id.imageView);
rotateAnimation = new RotateAnimation(0, 359, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
rotateAnimation.setDuration(1000);
rotateAnimation.setRepeatCount(Animation.INFINITE);
}
@Override
protected void onDestroy() {
super.onDestroy();
// 释放资源
imageView.clearAnimation();
imageView.setImageBitmap(null);
imageView.setImageDrawable(null);
}
public void startRotate(View view) {
if (rotateAnimation != null && !rotateAnimation.hasStarted()) {
imageView.startAnimation(rotateAnimation);
}
}
public void stopRotate(View view) {
if (rotateAnimation != null && rotateAnimation.hasStarted() && !rotateAnimation.hasEnded()) {
imageView.clearAnimation();
}
}
}
其中,startRotate和stopRotate是两个按钮的点击事件,用于