如何将android中的动画链接到同一个视图?

Luk*_*kap 8 animation android view chained chaining

我有一些文本视图,我想制作MSN的嗡嗡声效果.

我的计划是:

  • 看看,让我们说10dip在左边,
  • 把它带回到它的起始位置
  • 之后再拿10dip
  • 然后回来
  • 回来
  • 离开...依此类推.

我的观点是,我有一些运动序列要设置为一个视图,并且需要一个接一个地执行.

我怎样才能做到这一点?

pxs*_*xsx 22

你可能意味着AnimatorSet(不是AnimationSet).如文档中所述:

此类Animator指定顺序播放一组对象.可以将动画设置为一起播放,按顺序播放,或在指定的延迟播放后播放.

将动画添加到AnimatorSet有两种不同的方法:可以调用playTogether()playSequentially()方法一次性添加一组动画,play(Animator)也可以与Builder类中的方法一起使用以逐个添加动画.

动画而移动view通过-100px700ms,然后在消失300ms:

final View view = findViewById(R.id.my_view);

final Animator translationAnimator = ObjectAnimator
        .ofFloat(view, View.TRANSLATION_Y, 0f, -100f)
        .setDuration(700);

final Animator alphaAnimator = ObjectAnimator
        .ofFloat(view, View.ALPHA, 1f, 0f)
        .setDuration(300);

final AnimatorSet animatorSet = new AnimatorSet();
animatorSet.playSequentially(
        translationAnimator,
        alphaAnimator
);
Run Code Online (Sandbox Code Playgroud)

  • 别忘了`animatorSet.start()` (12认同)

Sni*_*las -2

使用动画集

AnimationSet set = new AnimationSet(true);

Animation animation = new AlphaAnimation(0.0f, 1.0f);
animation.setDuration(100);
set.addAnimation(animation);

animation = new TranslateAnimation(
    Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f,
    Animation.RELATIVE_TO_SELF, -1.0f, Animation.RELATIVE_TO_SELF, 0.0f
);
animation.setDuration(500);
set.addAnimation(animation);

view.startAnimation( set );
Run Code Online (Sandbox Code Playgroud)

  • AnimationSet 异步执行动画。要达到想要的效果,需要在第二个动画中使用AnimationSet.setStartOffset() (8认同)
  • 什么???这是错误的,animationSet 将其子动画一起动画化。“AnimationSet:代表一组应该一起播放的动画。” (4认同)
  • 我同意,这个答案是错误的。但我无法删除它,因为它已被接受......@Lukap,请取消接受它。 (2认同)