Intereting Posts
Android Explicit Intent вызывает ошибку NoClassDefFound Библиотека для неограниченной памяти кучи для растровых изображений с использованием NDK на Android Как изменить цвет текста при нажатии на конкретное текстовое изображение в линейном режиме Класс Android ImageViewer, поддерживающий Pinch-Zoom и прокрутку Ошибка файла не найдена после выбора файла в android Почему findFragmentById возвращает старый фрагмент перед вызовом для замены FragmentLayout? В SetText для Android требуется только resId База данных SQLite для базы данных SQLite с индексом 2048 кб не выполнена Как получить все контакты из телефонной книги и SIM-карты в Android? Несколько версий одной и той же библиотеки Java.text.ParseException: Непревзойденная дата: «2014-06-04» ​​(со смещением 5) Как сделать полноэкранный макет для пользовательского просмотра клавиатуры в андроиде Нужна помощь в ориентации экрана Android Меню настроек Android ActionBar Recreate Как заставить основную Acivity ждать субактивности в Android?

Android – AnimatorSet, Object Animator – Цепь анимации Bounce объединяется?

У меня есть вопрос относительно ObjectAnimator в Android. Я пытаюсь смоделировать эффект Bounce, благодаря которому представление соскальзывает вверх (уменьшает значение Y) и возвращается вниз по той же сумме «n», за которой следует «Сдвиг вверх» вверх и вниз, но на этот раз «n / 2» (так На половину расстояния).

Таким образом, более сильный отскок, за которым следует более мелкий отскок – то есть, что-то вроде значка Mac в лотке, когда он хочет вашего внимания.

Вот что я пробовал до сих пор (предположим, что vView ):

 float y = v.getTranslationY(),distance = 20F; AnimatorSet s = new AnimatorSet(); s.play(ObjectAnimator.ofFloat(v, "translationY", y- distance).setDuration(500)) .before(ObjectAnimator.ofFloat(v, "translationY", y).setDuration(500)) .before(ObjectAnimator.ofFloat(v, "translationY", y- (distance/2)).setDuration(500)) .before(ObjectAnimator.ofFloat(v, "translationY", y).setDuration(500)); s.start(); 

Игнорируйте качество кода, это POC! Я надеялся, что это сработает, но похоже, что он только «отскакивает», как если бы он сочетал анимацию, несмотря на использование .before() .

Не могли бы вы показать мне, как я могу создавать сложные цепи AnimatorSet, которые не объединяются в один, поскольку я, кажется, что-то не хватает?

БОНУС: Для дополнительных точек, как я могу установить повторение AnimatorSet?

Большое спасибо!

ОК, поэтому я в конце концов нашел довольно аккуратный способ добиться последовательной анимации, игнорируя свободный строитель и просто используя метод playSequentially() , который:

 AnimatorSet as = new AnimatorSet(); as.playSequentially(ObjectAnimator.ofFloat(...), // anim 1 ObjectAnimator.ofFloat(...), // anim 2 ObjectAnimator.ofFloat(...), // anim 3 ObjectAnimator.ofFloat(...)); // anim 4 as.setDuration(600); as.start(); 

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

В любом случае, надеюсь, что это помогает кому-то.

Когда вы используете Builder, все возвращаемые зависимости относятся к первому Animator, поэтому у вас было 3 отскока, происходящих одновременно после первого движения. К сожалению, кажется, что AnimatorSet разбит на некоторые аспекты, один из которых повторяется: https://code.google.com/p/android/issues/detail?id=17662