Reputation: 791
I am animating a loader on start up. How can I work around it so that instead of using ontouch listener to stop the timer, I use a time of say like 3 seconds? Here is my code:
private void showdiag() {
loader = findViewById(R.id.loader);
logo= loader.findViewById(R.id.logo);
logo.setAnimation(AnimationUtils.loadAnimation(this,R.anim.rotate));
loader.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
loader.setVisibility(View.GONE);
}
});
}
Upvotes: 1
Views: 122
Reputation: 224
Please try following code.
logo.getAnimation().setAnimationListener(new Animation.AnimationListener() {
@Override public void onAnimationStart(Animation animation) {
}
@Override public void onAnimationEnd(Animation animation) {
loader.postDelayed(new Runnable() {
@Override
public void run() {
loader.setVisibility(View.GONE);
}
}, 3000);
}
@Override public void onAnimationRepeat(Animation animation) {
}
});
Upvotes: 0
Reputation: 54194
You can use View.postDelayed()
to run some action after a set delay:
private void showdiag() {
loader = findViewById(R.id.loader);
logo = loader.findViewById(R.id.logo);
logo.setAnimation(AnimationUtils.loadAnimation(this, R.anim.rotate));
loader.postDelayed(new Runnable() {
@Override
public void run() {
loader.setVisibility(View.GONE);
}
}, 3000);
}
Upvotes: 1
Reputation: 224
logo.getAnimation().setAnimationListener(new Animation.AnimationListener() {
@Override public void onAnimationStart(Animation animation) {
}
@Override public void onAnimationEnd(Animation animation) {
loader.setVisibility(View.GONE);
}
@Override public void onAnimationRepeat(Animation animation) {
}
});
Upvotes: 0