animation.start() or animation.startNow() does not

2019-04-07 14:39发布

问题:

I have a strange issue - from time to time the animation that should fade out my control (ImageButton) does not kick in immediately. I am using the fadeout animation to hide it and then in myListener on its end (onAnimationEnd) I put new resource as the image on the button.

Somewhere in my app code:

Animation a = AnimationUtils.loadAnimation(this,R.anim.fadeout); 
a.setAnimationListener(new myListener(location));
buttons[location].setAnimation(a);
a.startNow(); // regardless if its start() or startnNow() 
              // it will work in most of the cases but not 100% reliable
              // I actually can see in debug Log when its late, happens after few more clicks

Then in myListener.onAnimationEnd(Animation a):

buttons[location].setImageResource(R.drawable.standard_button);

Seems there is a rule that the every 4th or 5th animation does not start ...

Thanks for help!

回答1:

adding

buttons[location].invalidate(); 

after

a.startNow();

has fixed my issue.



回答2:

You can also use

buttons[location].startAnimation(a);