Приостановить / возобновить анимацию в API менее 19 (Android)?

Я понимаю, что методы паузы и возобновления для объектов objectanimator доступны только для API: 19. Однако, поскольку ни у меня, ни у половины пользователей Android нет этого API, есть ли альтернатива, позволяющая приостановить анимацию, а затем возобновить ее из того же состояния, а не начинать с самого начала? Любая помощь будет принята с благодарностью.


person Bazinga    schedule 07.06.2014    source источник
comment
возможный дубликат Как возобновить и приостановить ObjectAnimator в Android для уровней API ниже 19?   -  person Alex Cohn    schedule 31.03.2015
comment
на самом деле этот вопрос является дубликатом этого ... хотя спасибо за ссылку   -  person Bazinga    schedule 05.04.2015
comment
По крайней мере, насколько я понимаю, обозначение дублирующего вопроса не имеет негативного смысла. С другой стороны, SO поощряет нас выбирать дубликат по ответам, поэтому я решил поставить маркер для того, на который был дан ответ ранее.   -  person Alex Cohn    schedule 07.04.2015


Ответы (1)


В моем проекте мне пришлось сделать анимацию поворота (это будет пауза, а затем возобновление с той же / конечной позиции), и я решил это, получив текущее время аниматора (когда анимация заканчивается / когда я нажимаю на паузу), а затем, после запуска аниматора я устанавливаю "setCurrentPlayTime (со временем окончания)". Для получения текущего времени я использую getCurrentPlayTime (); а для установки времени я использую setCurrentPlayTime () класса ObjectAnimator.

Ссылки: http://developer.android.com/reference/android/animation/ValueAnimator.html#setCurrentPlayTime(long) http://developer.android.com/reference/android/animation/ValueAnimator.html#getCurrentPlayTime().

private ObjectAnimator mObjectAnimator;
private long mAnimationTime;

private void stopAnimation() {
    if(mObjectAnimator != null) {
        mAnimationTime = mObjectAnimator.getCurrentPlayTime();
        mObjectAnimator.cancel();
    }
}

private void playAnimation() {
    if (mObjectAnimator != null) {
        mObjectAnimator.start();
        mObjectAnimator.setCurrentPlayTime(mAnimationTime);
    }
}
person nikolaDev    schedule 10.10.2014
comment
Он работает с ObjectAnimator, но как мы можем приостановить / возобновить ObjectAnimatorSet? - person Deven; 31.05.2017
comment
Здравствуйте, NikolaDev, я попытался реализовать решение, которое вы предоставили для отмены паузы анимации, но когда я запускаю, а затем устанавливаю текущее время воспроизведения, перезапуск анимации вы знаете, что может быть причиной этого? - person Z. Kiwan; 20.06.2017