1

アプリにヘルプオーバーレイを追加しようとしています。このオーバーレイは、背景が半透明のRelativeLayoutであり、いくつかのTextViewといくつかのImageView子要素が含まれています。ここで、TextView/ImageViewのそれぞれを次々にフェードインさせたいと思います。

フェードインアニメーションセット(XMLで定義)を使用して.startAnimation()おり、AnimationListenerのOnAnimationEndメソッドで各ビューを呼び出しています。したがって、最初のビューがフェードインされるとstartAnimation、次のビューのメソッドを呼び出してフェードインします。すべてのビューのstartAnimationの引数として、同じAnimationオブジェクト(animationFadeIn)を使用しています。そのようです:

...
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;
      }
    }
};

フェードインアニメーションについては、このチュートリアルを参照しました

さて、ここに問題があります:

  • 最初のビューがフェードインします
  • 2番目のビューはフェードインしますが、1番目のビューも一緒にフェードインします
  • すべてのビューがフェードインされるまで同じことが続きます

また、次のビューがフェードインする前に遅延を追加するにはどうすればよいsetStartOffsetですか?

アップデート

2番目のアニメーションオブジェクトを作成すると、

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

その後、他の要素のstartAnimationに使用すると、この問題は発生しません。だから、これを避けるために、Animationオブジェクトに設定するプロパティが必要だと思いますか?

4

1 に答える 1

1

最後に、要素ごとに複数の Animation オブジェクトを作成しました。それは当面の問題を解決します。それは正しい/最善のアプローチではないかもしれません。

于 2012-11-18T20:14:49.000 に答える