Android ValueAnimator приостанавливается во время повтора

Поэтому я использую ValueAnimator для анимации конечностей фигуры палки из одной позиции в другую, в бесконечном цикле или, по крайней мере, до остановки анимации. Моя проблема заключается в том, что, когда аниматор повторяется, у меня небольшая пауза, как будто анимация отстает, но это происходит только тогда, когда анимация повторяется. У меня есть другие анимации, которые происходят только один раз, и они работают совершенно гладко, и каждый раз они имеют столько же вычислений, что и сейчас, я думаю, что это проблема с ValueAnimator.

Раньше я мог найти других людей, жалующихся на эту проблему, но я не смог найти никого, кто нашел решение. Вы, ребята, знаете, действительно ли это проблема с Android ValueAnimator? Если да, то знаете ли вы какие-либо решения? Если нет, у вас, ребята, есть идеи относительно того, почему это может происходить со мной только в одном месте в анимации? Я действительно застрял на этом.

Мой код для установки ValueAnimator:

mFigureAnimator = ValueAnimator.ofFloat(0f, 1f); mFigureAnimator.setInterpolator(new LinearInterpolator()); mFigureAnimator.setDuration(1000); mFigureAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { public void onAnimationUpdate(ValueAnimator animation) { Float delta = (Float)animation.getAnimatedValue(); // Set the drawn locations based on the animated time and the start/end invalidate(); } }); mFigureAnimator.setRepeatCount(ValueAnimator.INFINITE); mFigureAnimator.setRepeatMode(ValueAnimator.RESTART); mFigureAnimator.start(); 

Для анимации вы можете настроить интерполятор как LinearInterpolator в файле анимации:

 android:interpolator="@android:anim/linear_interpolator" 

Для Animator, LinearInterpolator также работает для меня, у меня был аниматор вращения, поворот на 360 градусов и повторение бесконечного:

 public class RotateAnimator { private float mDegrees; private ObjectAnimator mAnim; private RotateAnimator() { mAnim = ObjectAnimator.ofFloat(this, "degrees", 360); mAnim.setInterpolator(new LinearInterpolator()); mAnim.setRepeatCount(ValueAnimator.INFINITE); mAnim.setRepeatMode(ValueAnimator.INFINITE); mAnim.setEvaluator(new FloatEvaluator()); mAnim.setDuration(2000); mAnim.start(); } public float getDegrees() { return mDegrees; } public void setDegrees(float degrees) { this.mDegrees = degrees; // invalidate the view so it can redraw itself invalidate(); } } 

Таким образом, решена моя проблема, если вы не нашли другого решения, надеюсь, что это может вам помочь, удачи.

Intereting Posts
Отправлять и получать SMS только в моем собственном приложении, а не в собственном приложении Message в android, используя собственный SMS-API Извлечение сообщений WhatsApp из приложения Phonegap Android: Центрировать изображение Как определить наивысшее разрешение видео и / или битрейт, которое может воспроизводить устройство (Android)? Android Studio: эмулятор уже запущен Как сделать push-уведомление от android от php Android.os.BadParcelableException: ClassNotFoundException при unmarshalling: exception Загружайте и запускайте apk по телефону без проводов с рабочего стола для разработки Версия Android sdk для градиента и манифеста Добавление изображений в галерею эмулятора Повторяющаяся запись Gradle Как удалить синюю панель действий в Android? Как начать работу со службы? Просмотр карты Нажмите на карту Перейти к новой активности Как управлять датами в базе данных Android sqlite, когда меня интересует только дата (которая должна быть уникальной), а не время?