アプリにヘルプオーバーレイを追加しようとしています。このオーバーレイは、背景が半透明の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オブジェクトに設定するプロパティが必要だと思いますか?