У меня есть простая визитная карточка cardview и вы хотите перевести ее из центра макета в правую сторону и обратно в исходное место. Написал код с помощью объекта аниматор:Объект-аниматор с использованием старой позиции зрения
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(topCard, "translationX", topCard.getWidth() + 150);
objectAnimator.setDuration(1500);
objectAnimator.start();
objectAnimator.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationEnd(Animator animation) {
ObjectAnimator translationX = ObjectAnimator.ofFloat(topCard, "translationX", - (topCard.getWidth() + 150));
translationX.setDuration(1500);
translationX.start();
Таким образом, на мой взгляд правильно переводится на правую сторону, а вторая анимация двигаться не к месту старта, а к (start place - (topCard.getWidth() + 150))
.
Как я могу анимировать перевод вправо и назад в ту же позицию, используя 2 анимации последовательности? Вот неправильный результат, что у меня есть https://i.imgur.com/8SShfHL.gifv
Да, я тоже попробовал этот случай, а результат тот же - https://i.imgur.com/8SShfHL.gifv карта не перемещается в ее исходное место – onCreate
Ммм, попробуйте положить '0 'intead of' - (topCard.getWidth() + 150) 'тогда, например:' ObjectAnimator translationX = ObjectAnimator.ofFloat (topCard, "translationX", topCard.getWidth() + 150, 0); '. Я предполагаю, что аниматор берет исходное положение для справки, когда передал ему эти значения. –
Скажите, если это сработает, и я обновлю свой ответ. –