Мне было интересно, может ли кто-нибудь помочь мне, я везде искал полезную помощь, но ничего не нашел. У меня есть четыре элемента View
(Button
), и мне нужно анимировать их в случайном порядке один за другим. Я пробовал ждать Animation.hasEnded()
, что просто замораживает все приложение. Также я пробовал ждать AnimationListener
, чтобы изменить логическое значение с onAnimationEnd()
, но это также заморозило приложение. Оба Thread.sleep()
и SystemClock.sleep()
для ожидания дали тот же результат. Пожалуйста, может кто-нибудь мне помочь?Дождитесь окончания анимации Android
1
A
ответ
2
Вот как я это сделать:
Во-первых, создать элемент для случайной кнопки массива:
private Button[] mRandomButtonsOrder;
Затем инициализировать случайном порядке кнопку:
List<Button> myButtons = new ArrayList<Button>();
myButtons.add(btn1); // Add all your buttons to this array.
myButtons.add(btn2);
myButtons.add(btn3);
myButtons.add(btn4);
mRandomButtonsOrder = new Button[myButtons.size()]; // This is a member of the activity!
Random random = new Random();
int index;
for (int i = 0; i < myButtons.size(); i++)
{
do
{
index = random.nextInt() % mRandomButtonsOrder.length;
} while (mRandomButtonsOrder[index] != null);
mRandomButtonsOrder[index] = myButtons.get(0);
myButtons.remove(0);
}
initiateAnimationOnButton(0);
сейчас , здесь используется метод initateAnimationOnButton:
private void initiateAnimationOnButton(final int buttonIndex)
{
TranslateAnimation animation = new TranslateAnimation(fromXDelta, toXDelta, fromYDelta, toYDelta); // Just a sample using TranslateAnimation
animation.setDuration(1000);
if (buttonIndex < mRandomButtonsOrder.length - 1)
{
animation.setAnimationListener(new TranslateAnimation.AnimationListener()
{
@Override
public void onAnimationStart(Animation animation) { }
@Override
public void onAnimationRepeat(Animation animation) { }
@Override
public void onAnimationEnd(Animation animation)
{
initiateAnimationOnButton(buttonIndex + 1);
}
});
}
Button btn = mRandomButtonsOrder[buttonIndex];
btn.startAnimation(animation);
}
Надеюсь, это поможет :)
+0
Полностью решил, спасибо тонну! – drRoflol
+0
рад, что я мог бы помочь :) –
Смежные вопросы
- 1. QML: дождитесь окончания анимации
- 2. Android - дождитесь окончания анимации, прежде чем продолжить?
- 3. Отправить форму - дождитесь окончания анимации
- 4. Android - дождитесь окончания выполнения
- 5. Дождитесь окончания анимации перед перемещением на Swift
- 6. IE9 javascript: дождитесь окончания окончания
- 7. jquery - дождитесь окончания функции
- 8. Дождитесь окончания файла
- 9. Ожидайте - дождитесь окончания процесса
- 10. Дождитесь окончания цикла forEach?
- 11. Дождитесь окончания редактирования файла
- 12. Дождитесь окончания AsyncTask
- 13. Javascript - Дождитесь окончания функции
- 14. Дождитесь окончания функции Swift
- 15. Прокрутка после окончания анимации, android
- 16. Python, дождитесь окончания сетевого интерфейса?
- 17. Дождитесь окончания выполнения jar-исполнения
- 18. Дождитесь окончания асинхронного вызова - Ionic2
- 19. Дождитесь окончания проигрывателя Windows Media?
- 20. Robotium дождитесь окончания даты загрузки
- 21. Дождитесь окончания предыдущего .append() завершено
- 22. Node.js callback, дождитесь окончания функции
- 23. Тест весенней загрузки - дождитесь окончания
- 24. Delphi: дождитесь окончания бит-скрипта
- 25. node.js: дождитесь окончания всех потоков
- 26. Транспортир Дождитесь завершения анимации
- 27. jQuery UI dialog - дождитесь завершения анимации анимации
- 28. Animate.css - Дождитесь завершения анимации до продолжения
- 29. Обновление TextView после окончания анимации Android
- 30. Дождитесь функции анимации в JavaScript
вы можете дать нам больше кода о том, как вы ждете анимацию? И я не думаю, что вам нужно вызвать thread.sleep() или systemclock.sleep в onAnimationEnd() –