1

尝试向我们的应用程序添加帮助覆盖。此叠加层是一个具有半透明背景的 RelativeLayout,它包含一些 TextView 和一些 ImageView 子元素。现在,我希望每个 TextView / ImageView 一个接一个地淡入。

我正在使用淡入动画集(在 XML 中定义)并在 AnimationListener 的方法中调用.startAnimation()每个视图。OnAnimationEnd所以,当第一个视图完成淡入时,我调用startAnimation下一个视图上的方法来淡入。我使用相同的动画对象 (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;
      }
    }
};

对于淡入动画,我参考了这个教程

现在,问题来了:

  • 第一个视图淡入
  • 第二个视图淡入,但第一个视图也随之淡入
  • 继续进行,直到所有视图都完成淡入

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

更新

我注意到如果我创建第二个动画对象

animationFadeIn2 = AnimationUtils.loadAnimation(this.context, R.anim.fadein);

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

4

1 回答 1

1

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

于 2012-11-18T20:14:49.000 回答