同时在一个对象上使用同一对象动画师属性(translationx)两次

时间:2019-01-17 07:17:24

标签: android class objectanimator animatorset

我整天都在努力解决这个问题。我尝试了过多的代码组合,但没有一个想要工作。从技术上讲,它们确实起作用,但不是我想要的那样。如果我添加了translationY属性,它将起作用。我基本上是想同时在单个对象上运行两个动画,两个都是translatex。对象应在屏幕的整个宽度上从左到右移动,并同时在短距离内来回移动。因此,主要问题是,是否有可能实现这一目标,或者不能同时使用同一属性和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);*/
}

1 个答案:

答案 0 :(得分:0)

您可以尝试将动画侦听器添加到动画中。在侦听器中,有onAnimationEnd(),在完成动画后会调用它。在这里,您可以调用后续动画,使它们看起来像是链接在一起的。

Android Guide on Animation - Animation Listeners