У меня есть простое приложение с несколькими кнопками.
В какой-то момент анимации успешно применяются к этим кнопкам в последовательности.
Однако, в случае, если все анимированные кнопки уникальны (IE кнопки 1,2,3), все работает отлично.
С другой стороны, если кнопки для анимации повторяются (IE 1,1,2,3,2), то анимация для тех же кнопок запускается в то же время, даже если я использую анимацию. SetStatOffset с разными временами (по секундам).
public void Flash(int delay,int time) {
Animation animation=AnimationUtils.loadAnimation(this.getContext(),R.anim.gametextbuttonrotation);
animation.setStartOffset(delay);
animation.setDuration(time);
this.startAnimation(animation);
}
вызывается
private void Flash(List<Integer> sequence)
{
int i=0;
int COOLDOWN=1000;
for (Integer integer : sequence) {
buttons[integer].Flash(i++*COOLDOWN,COOLDOWN/2);
}
}
Я пытался прочитать cod / google, но безрезультатно.
ОК, если кто-то попытается сделать это, вот решение:
1) создать локальную переменную AnimationSet в классе просмотра
2) при запуске новой последовательности инициализируйте AnimationSet с помощью конструктора (AFAIK нет такой вещи, как AnimationSet.empty () .....
3) внутри цикла foreach создайте анимацию и затем воспроизведите ее
private void flash(List<Integer> sequence)
{
int i=0;
int COOLDOWN=1000;
for(Button button : buttons)
{
button.clearAnimation();
button.animSet=new AnimationSet(); //is inside a private method, here All-in-1 to be simple
}
for (Integer integer : sequence) {
buttons[integer].addFlash(i++*COOLDOWN,COOLDOWN/2);
}
for (Integer integer : sequence) {
buttons[integer].flash();
}
}