I'm using a custom animation to replace fragments, and I'd like to disable some buttons when the animation starts and enable then when the animation ends. How can I do this?
What I would suggest is to make some base class that all of your Fragments
extend from, and within it, define a few methods that can be overridden to handle the animation events. Then, override onCreateAnimation()
(assuming you are using the support library) to send an event on animation callbacks. For example:
protected void onAnimationStarted () {}
protected void onAnimationEnded () {}
protected void onAnimationRepeated () {}
@Override
public Animation onCreateAnimation (int transit, boolean enter, int nextAnim) {
//Check if the superclass already created the animation
Animation anim = super.onCreateAnimation(transit, enter, nextAnim);
//If not, and an animation is defined, load it now
if (anim == null && nextAnim != 0) {
anim = AnimationUtils.loadAnimation(getActivity(), nextAnim);
}
//If there is an animation for this fragment, add a listener.
if (anim != null) {
anim.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart (Animation animation) {
onAnimationStarted();
}
@Override
public void onAnimationEnd (Animation animation) {
onAnimationEnded();
}
@Override
public void onAnimationRepeat (Animation animation) {
onAnimationRepeated();
}
});
}
return anim;
}
Then, for your Fragment
subclass, just override onAnimationStarted()
to disable the buttons, and onAnimationEnded()
to enable the buttons.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With