不知道大家遇到过这种问题没有,明明通过setAnimation方法设置好了动画,也运行了start方法,但动画就是迟迟动不起来。
比如在点击事件中
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.bt_translate:
TranslateAnimation translateAnimation = new TranslateAnimation(
Animation.RELATIVE_TO_PARENT, 0,
Animation.RELATIVE_TO_PARENT, 1.0f,
Animation.RELATIVE_TO_PARENT, 0,
Animation.RELATIVE_TO_PARENT, 1.0f);
translateAnimation.setDuration(2000);
translateAnimation.setRepeatCount(3);//循环4次
translateAnimation.setFillAfter(true);//停留在最后一帧
translateAnimation.setRepeatMode(Animation.REVERSE);
image.setAnimation(translateAnimation);
translateAnimation.start();
break;
case R.id.btAlpha:
AlphaAnimation alphaAnimation = new AlphaAnimation(0,1.0f);
alphaAnimation.setDuration(3000);
image.setAnimation(alphaAnimation);
alphaAnimation.start();
break;
}
}
明明该写的都写了,但是就是不能运行。
其实我们只需要将
image.setAnimation(translateAnimation);
translateAnimation.start();
改为
image.startAnimation(translateAnimation);
就ok了
感谢这位作者的帮助android动画的setAnimation与startAnimation的区别
setAnimation是告诉该控件我待会要执行什么动画,而要执行的的动画,是需要手动添加的。并且需要父view在动画快要开启的时候,调用invalidate。
而startAnimation告诉该控件,我要立马执行该动画,该动画就是已经设置好的动画。

本文探讨了在Android开发过程中,动画无法正常启动的原因及解决方案。指出使用`image.setAnimation()`与`translateAnimation.start()`组合时动画可能不会按预期运行,并提供了解决方案:改用`image.startAnimation()`。此外,还解释了`setAnimation`与`startAnimation`的区别,前者只是设定动画并未真正执行,后者则直接开始播放已设置的动画。
883

被折叠的 条评论
为什么被折叠?



