Android动画系列多个子视图

时间:2012-10-05 18:25:54

标签: android animation android-view

尝试为我们的应用添加帮助叠加层。 这个叠加层是一个具有半透明背景的RelativeLayout,它包含一些TextView和一些ImageView子元素。现在,我想让每个TextView / ImageView一个接一个地淡入。

我正在使用淡入式动画集(在XML中定义)并在AnimationListener的.startAnimation()方法中的每个视图上调用OnAnimationEnd。因此,当第一个视图完成淡入时,我将下一个视图上的startAnimation方法调用为淡入。我使用相同的Animation对象(animationFadeIn)作为所有视图的startAnimation的参数。像这样:

...
Animation animationFadeIn = AnimationUtils.loadAnimation(this.context, R.anim.fadein);
...
AnimationListener animationInListener = new AnimationListener(){
    @Override
    public void onAnimationEnd(Animation animation) {
      animation_activity++;
      switch(animation_activity) {
        case SHOW_TEXT_DROP:
            txtDrop.startAnimation(animationFadeIn);
            break;
        case SHOW_TEXT_SEND:
            txtSend.startAnimation(animationFadeIn);
            break;
        case SHOW_IMAGE_TOUCH:
            imgTouch.startAnimation(animationFadeIn);
            break;
        case SHOW_TEXT_DISABLE:
            txtDisable.startAnimation(animationFadeIn);
            break;
      }
    }
};

对于淡入动画,我提到this tutorial

现在,问题在于:

  • 第一个视图淡入
  • 第二个视图淡入,但第一个视图再次淡入淡出
  • 同样继续,直到所有视图都完成淡入

另外,如何在下一个视图淡入setStartOffset之前添加一些延迟?

更新

我注意到如果我通过

创建第二个动画对象
animationFadeIn2 = AnimationUtils.loadAnimation(this.context, R.anim.fadein);

然后将其用于其他元素的startAnimation,然后它不会产生此问题。所以,我相信,必须在Animation对象上设置一些属性才能避免这种情况?

1 个答案:

答案 0 :(得分:1)

我终于继续为每个元素创建了多个Animation对象。这解决了暂时的问题。它可能不是正确/最好的方法。