Repeat android animation
Solution 1:
Like this.
animation.setRepeatCount(Animation.INFINITE);
Solution 2:
Android gives you elegant mechanisms to represent the loading process. You could use an indeterminate ProgressBar
, or an ImageView
with a scale/alpha animation, instead of animating the TextView
itself.
Maybe you might find this animation useful, for animating alpha and scale at the same time. Vary the parameters for your preference:
file res/anim/alpha_scale_animation.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<scale
android:fromXScale="0.7"
android:toXScale="1.0"
android:fromYScale="0.7"
android:toYScale="1.0"
android:pivotX="50%p"
android:pivotY="50%p"
android:duration="4000"
android:repeatCount="infinite"
/>
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="2000"
android:repeatMode="reverse"
android:repeatCount="infinite"
/>
</set>
then to launch it in your code:
Animation connectingAnimation = AnimationUtils.loadAnimation(getContext(), R.anim.alpha_scale_animation);
myView.startAnimation(connectingAnimation);
And to stop it:
myView.clearAnimation();
connectingAnimation.cancel();
connectingAnimation.reset();
You can also use libraries like ProgressButtonView to have both user interaction and loading process supported in the same widget.
Hope that any of these solutions result useful to someone :)
Solution 3:
You can use these methods to control the repeat behavior:
fadeIn.setRepeatCount(int count) // or Animation.INFINITE
fadeIn.setRepeatMode(Animation.REPEAT) // or any other repeat mode, such as Animation.REVERSE
implement these listeners, if needed:
// anim = your animation
anim.setAnimationListener(new AnimationListener() {
public void onAnimationStart(Animation arg0)
{
// TODO Auto-generated method stub
}
public void onAnimationRepeat(Animation arg0)
{
// TODO Auto-generated method stub
}
public void onAnimationEnd(Animation arg0)
{
// TODO Auto-generated method stub
}
});
if you wanna stop your animation suddenly, use yourView.clearAnimation()
I hope this helps.