Я пытаюсь запустить цикл for с translateAnimation()
imageview
. Для каждой итерации imageview
должен перемещаться i*20
раз спереди (по возможности, кривой). Но цикл полностью исполняет и не ждет для каждой анимации. Таким образом, анимация выполняется только один раз (последние ith
раз), а не i
раз. Пожалуйста, помогите мне!!!В андроиде FOR LOOP НЕ ждёт переводаАноним в нем для завершения
`
for(int i=m;i<=y;i++) {
int w=20*i
TranslateAnimation translate = new TranslateAnimation(0,w,0,0);
myAnimation1.setVisibility(View.VISIBLE);
translate.setDuration(1000);
translate.setFillAfter(false);
myAnimation1.startAnimation(translate);
myAnimation1.setVisibility(View.INVISIBLE);
}'
Вам действительно нужно понимать, управляемые событиями, резьбовая операционные системы. Цикл for создаст анимацию и отправит события в основной поток (поток пользовательского интерфейса). Как только событие отправляется, цикл продолжается со следующей итерацией. Поскольку поток полностью занят, он не может обновлять пользовательский интерфейс до тех пор, пока цикл не будет завершен, и отобразится последняя анимация. Вместо этого используйте другой поток, возможно, используя «Runnable» с таймером. http://developer.android.com/reference/java/lang/Runnable.html – Simon
Анимация не запускается синхронно. Они запланированы на основной теме. Я предлагаю вам посмотреть, как использовать 'ViewPropertyAnimator' (путем вызова' view.animate() ') вместо старых классов анимации. Вы можете добавить слушателей в конец анимации свойств, чтобы вы могли на самом деле связать анимацию; однако было бы лучше запустить только _one_ анимацию, которая имеет полную продолжительность и путь, который вы хотите. – Karakuri
Спасибо за ответы, но цикл for все еще не ждет. – Aparna