我在我的 Android 应用程序中使用无限旋转动画。如果我调用cancelAnimation()
旋转ImageView
图像,则图像会立即转到动画的开始位置,而不会将动画最终确定到该位置。有没有办法做到这一点,让用户在不中断动画的情况下获得更流畅的体验?
问问题
464 次
1 回答
0
你可以放一个标志。当您将标志设置为 false 时,动画将停止。请看下面的代码。
public class MainActivity extends Activity {
ImageView img;
Button btn, btn2;
Animation myAnim;
boolean flag=true;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
img = (ImageView) findViewById(R.id.imageView1);
btn = (Button) findViewById(R.id.button1);
btn2 = (Button) findViewById(R.id.button2);
myAnim = AnimationUtils.loadAnimation(this, R.anim.rotate);
img.startAnimation(myAnim);
myAnim.setAnimationListener(new AnimationListener() {
public void onAnimationStart(Animation animation) {
System.out.println("onAnimationStart()");
}
public void onAnimationRepeat(Animation animation) {
if(flag)
System.out.println("onAnimationRepeat()");
else
myAnim.cancel();
}
public void onAnimationEnd(Animation animation) {
System.out.println("onAnimationEnd()");
}
});
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
flag=false;
}
});
btn2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
img.startAnimation(myAnim);
flag=true;
}
});
}
}
于 2012-12-22T14:59:32.587 回答