Страницы

Поиск по вопросам

понедельник, 15 июля 2019 г.

Одновременная анимация нескольких Views

Каждый раз при нажатии на экран - появляется новая View, каждая View должна постоянно смещаться влево, сейчас у меня при добавлении новой View останавливается анимация для предыдущей View. Как сделать, что бы все анимации работали одновременно?
private class MyGestureListener extends GestureDetector.SimpleOnGestureListener {
@Override public boolean onDown(MotionEvent e) { switch (e.getAction()) { case MotionEvent.ACTION_DOWN: int x = (int) e.getX(); int y = (int) e.getY();
draw = new DrawView(getActivity(), 1, String.valueOf(xcoordList.size())); drawViewList.add(draw); progressBar.addView(draw); progressBar.invalidate();
drawViewList.get(drawViewList.size()-1).animate().translationXBy(-360f).setDuration(1000);
Runnable runnable = new Runnable() { @Override public void run() { CountDownTimer timer = new CountDownTimer(System.currentTimeMillis() + 2000 - timeList.get(0), 1000) { int j = 3; @Override public void onTick(long millisUntilFinished) { final DrawView drawView = drawViewList.get(drawViewList.size()-1);
drawView.animate().translationXBy((-720f)/j).setDuration(1000); j++;
@Override public void onFinish() {
} }.start(); } };
getActivity().runOnUiThread(runnable); }


Ответ

Решение, которое применила, заменила данную строку:
drawView.animate().translationXBy((-720f)/j).setDuration(1000);
на:
drawView.animate().translationXBy((-720f)/j) .setDuration(1000).setListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { j++; }
@Override public void onAnimationEnd(Animator animation) { drawView.animate().translationXBy((-720f) / j).setDuration(1000); }
@Override public void onAnimationCancel(Animator animation) {
}
@Override public void onAnimationRepeat(Animator animation) {
} });

Комментариев нет:

Отправить комментарий