Используйте одно и то же свойство объектного аниматора (translationx) дважды на одном объекте одновременно

Я потратил весь день, пытаясь понять это. Я пробовал множество комбинаций кода, но ни одна из них не работает. Ну, технически они работают, но не так, как я хочу. Если я добавлю свойство translationY, оно сработает. Я в основном хочу запустить 2 анимации, обе трансляции, на одном объекте одновременно. Объект должен перемещаться слева направо по всей ширине экрана и одновременно перемещаться вперед и назад на небольшом расстоянии. Таким образом, главный вопрос заключается в том, возможно ли добиться этого или невозможно одновременно использовать одно и то же свойство с AnimatorSet?

вот текущий код, с которым я работаю:

private void _ballLevel20Animation () {
    move1.cancel();
    int center = (board.getMeasuredWidth() / 2);
    int lr = board.getMeasuredWidth();
    final float left = Float.valueOf(100 - center);
    final float right = Float.valueOf(center - 100);
    int center1 = (board.getMeasuredWidth() / 6);
    final float left1 = Float.valueOf(100 - center);
    final float right1 = Float.valueOf(center - 100);
    move1.setTarget(ball);
    move1.setPropertyName("translationX");
    move1.setFloatValues(left, right);
    move1.setRepeatCount(ObjectAnimator.INFINITE);
    move1.setDuration((int)(ball_duration_increa));
    move1.setRepeatMode(ValueAnimator.REVERSE);
    bounce_ani.setTarget(ball);
    bounce_ani.setPropertyName("translationX");
    bounce_ani.setFloatValues((float)(SketchwareUtil.getDip(getApplicationContext(), (int)(-20))), (float)(SketchwareUtil.getDip(getApplicationContext(), (int)(20))));
    bounce_ani.setRepeatCount(ObjectAnimator.INFINITE);
    bounce_ani.setDuration((int)(ball_duration_increa / 6));
    bounce_ani.setRepeatMode(ValueAnimator.REVERSE);
    AnimatorSet animatorSet = new AnimatorSet();

    animatorSet.play(bounce_ani).with(move1);

    animatorSet.start();
    /*bounce_ani.setFloatValues(right1, left1);*/
}

person destroyer1225    schedule 17.01.2019    source источник


Ответы (1)


Вы можете попробовать добавить прослушиватель анимации к анимации. В слушателе есть onAnimationEnd(), который вызывается, когда анимация завершена. Здесь вы можете вызывать последующие анимации таким образом, чтобы они выглядели как цепочка.

Руководство по анимации для Android — слушатели анимации

person Jian Astrero    schedule 17.01.2019
comment
Код, который у меня есть, если я изменяю свойство одного из них на что-то кроме перевода X, он работает, но, похоже, есть проблема, заключающаяся в том, что я не могу одновременно воспроизводить одни и те же свойства на одном объекте. Если я изменю один на перевод, почему в другом один перевод X будет работать. Есть ли какой-нибудь специальный класс, который позволил бы мне работать с одинаковыми объектными аниматорами? Я ценю ваш ответ, спасибо. - person destroyer1225; 17.01.2019