Ответ 1
Ok Имейте в виду эти 2 балла, чтобы решить эту проблему.
-
Если я хочу оживить
1.0f to 0.0f
через 5 секунд с длительностью анимации 1 секунда, это, в конечном счете, 1-секундная анимация с паузой в 5 секунд.Чтобы добиться этого:
-
setDuration(1000)
(длительность 1 секунда) -
setStartOffset(5000)
(он начнется через 5 секунд)
-
-
Вам нужно всего две анимации, которые будут циклически навсегда.
1.
0.0f to 1.0f
с паузой в 5 секунд и длительностью 1 секунду2.
1.0f to 0.0f
с паузой в 5 секунд и длительностью 1 секунду
И вот код:
animation1 = new AlphaAnimation(0.0f, 1.0f);
animation1.setDuration(1000);
animation1.setStartOffset(5000);
animation2 = new AlphaAnimation(1.0f, 0.0f);
animation2.setDuration(1000);
animation2.setStartOffset(5000);
textView.startAnimation(animation1);
Однако для цикла навсегда я буду использовать AnimationListener
, потому что repeatCount не работает:
animation1 = new AlphaAnimation(0.0f, 1.0f);
animation1.setDuration(1000);
animation1.setStartOffset(5000);
//animation1 AnimationListener
animation1.setAnimationListener(new AnimationListener(){
@Override
public void onAnimationEnd(Animation arg0) {
// start animation2 when animation1 ends (continue)
textView.startAnimation(animation2);
}
@Override
public void onAnimationRepeat(Animation arg0) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationStart(Animation arg0) {
// TODO Auto-generated method stub
}
});
animation2 = new AlphaAnimation(1.0f, 0.0f);
animation2.setDuration(1000);
animation2.setStartOffset(5000);
//animation2 AnimationListener
animation2.setAnimationListener(new AnimationListener(){
@Override
public void onAnimationEnd(Animation arg0) {
// start animation1 when animation2 ends (repeat)
textView.startAnimation(animation1);
}
@Override
public void onAnimationRepeat(Animation arg0) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationStart(Animation arg0) {
// TODO Auto-generated method stub
}
});
textView.startAnimation(animation1);