スプラッシュ スクリーンを使用して、Google マップの読み込みの遅延をカバーしようとしています (マップ v2 の場合)。
数秒後にフェードアウトし、スプラッシュ画面を非表示にするためにオーバーライドできる で を使用ImageView
したいと考えています。FrameLayout
onAnimationEnd
ImageView
遅延なくアニメーションを開始する場合、onAnimationEnd
適切に呼び出されます:
new Animations().animateAlphaForLayout(splashLayout, 2000);
postDelayed
問題は、まったく呼び出されonAnimationEnd
ない状態でアニメーションを開始しようとしたときです。
splashLayout.postDelayed(new Runnable() {
@Override
public void run() {
new Animations().animateAlphaForLayout(splashLayout, 2000);
}
}, 3000);
クラスのAnimations
コードは次のとおりです。
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.LayoutAnimationController;
public class Animations {
public void animateAlphaForLayout(final ViewGroup viewGroup, int duration) {
AnimationSet set = new AnimationSet(true);
Animation animation = new AlphaAnimation(1.0f, 0.0f);
animation.setRepeatCount(0);
animation.setFillAfter(true);
animation.setDuration(duration);
animation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation animation) {
viewGroup.setVisibility(View.GONE);
}
});
set.addAnimation(animation);
LayoutAnimationController controller = new LayoutAnimationController(set, 0.0f);
viewGroup.setLayoutAnimation(controller);
}
}
Android 2.3以降(API 10+)でこれを行う方法を知っている人はいますか?
ありがとうございました!