Я не хочу, чтобы мои два зверька завелись одновременно и один за другим. У тебя есть идеи?
Мои анимации:
Fade1
<alpha xmlns:android = "http://schemas.android.com/apk/res/android"
android:fromAlpha = "1.0"
android:toAlpha = "0.0"
android:duration = "1500"
/>
Fade2
<alpha xmlns:android = "http://schemas.android.com/apk/res/android"
android:fromAlpha = "1.0"
android:toAlpha = "0.0"
android:duration = "3000"
/>
моя идея не работает
private void animations_sequencing(){
//The first anim start
try{
text.setText("Hello");
text.startAnimation(AnimationUtils.loadAnimation(Main2Activity.this, R.anim.fade1));
Thread.sleep(1500);
} catch (InterruptedException e) {
e.printStackTrace();
}
//The first anim is end, the seconde anim start
try{
text.setText("World");
text.startAnimation(AnimationUtils.loadAnimation(Main2Activity.this, R.anim.fade2));
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
вы должны реализовать setAnimationListener
, чтобы захватить, когда анимация закончится.
text.startAnimation(AnimationUtils.loadAnimation(Main2Activity.this, R.anim.fade1).setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
//start second animation
}
@Override
public void onAnimationRepeat(Animation animation) {
}
}));
Вот как это сделать:
Animation anim2;
private void anim(){
Animation anim = AnimationUtils.loadAnimation(Main2Activity.this, R.anim.fade);
anim2 = AnimationUtils.loadAnimation(Main2Activity.this, R.anim.fade2);
anim.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
text.setText("World");
text.startAnimation(anim2);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
text.startAnimation(anim);
}
}