Как остановить анимацию в Android

Требование:

Мне нужно запустить несколько анимаций одну за другой. Для этого я использую onAnimationEnd().

Во время анимации, в случае события касания, мне нужно остановить анимацию и отобразить новое изображение в этом месте.

Проблемы:

  1. Я использую clearAnimation() в случае onTouch. Из-за этого вся анимация была удалена. Мое намерение состоит в том, чтобы остановить анимацию и отобразить новое изображение в затронутой части. Как я могу этого добиться?

  2. Из-за clearAnimation() функция onAnimationEnd() вызывается несколько раз, и я сталкиваюсь с проблемами при запуске анимаций одна за другой.

  3. Есть ли какая-нибудь функция, которая просто останавливает анимацию, а не очищает ее полностью? Я использую Андроид 2.1.

@Override
public boolean onTouch(View v, MotionEvent event) {      
    switch(event.getAction()) {
        case MotionEvent.ACTION_UP:
            imageArray[g_animCount - 1].clearAnimation();          
            break;

        default:
            break;
    }

    return true; // indicate event was handled
}

@Override
public void onAnimationEnd(Animation animation) {
    layout.removeView(imageArray[g_animCount - 1]);
    if ( (g_animCount < count))
    {               
        startNextAnimation();
    }
    else
    {
        g_animCount = 0;
        isBegin = false;
    }
}

public void startNextAnimation()
{
     int j = random.nextInt(200);
     layoutParams.setMargins(j, -20, 30, 0);
     layout.addView(imageArray[g_animCount], layoutParams); 
     imageArray[g_animCount].startAnimation(movArray[g_animCount]);
     g_animCount++;
}
6
задан Pang 25 July 2018 в 04:44
поделиться