0

ここで達成したいのは、ビューを可視に設定し、3 秒間そのままにしてからフェードアウトすることです。これは、タイマー、ハンドラー、およびランナブルで行います。以下は私のコードです:

mIntroLayer.setVisibility(View.VISIBLE);

final Runnable animationRunnable = new Runnable() {
    public void run() {
        mIntroLayer.startAnimation(mFadeAwayAnimation);
    }
};
final Handler animationHandler = new Handler();

Timer timer = new Timer();
timer.schedule(new TimerTask() {
    @Override
    public void run() {
        animationHandler.post(animationRunnable);
    }
}, 3 * 1000);

mIntroLayer.setVisibility(View.INVISIBLE);

ただし、何が起こっているのかというと、イントロ レイヤーが 3 秒間非表示になり、その後表示されて消えていきます。ランナブル内で mIntroLayer.setVisibility(View.VISIBLE) ステートメントが実行されているようです。これがなぜなのか誰にも分かりますか?ありがとう!

4

1 に答える 1

0

これは、コードが現在実際に行っていることです。

mIntroLayer.setVisibility(View.VISIBLE);
//... schedule the animation
mIntroLayer.setVisibility(View.INVISIBLE);

次のようなものを使用して、アニメーションが終了したにビューを非表示に設定する必要があります。

mFadeAwayAnimation.setAnimationListener(new Animation.AnimationListener() {
    public void onAnimationEnd(Animation animation) {
        mIntroLayer.setVisibility(View.INVISIBLE);
    }
});

http://developer.android.com/reference/android/view/animation/Animation.AnimationListener.htmlを参照してください。

于 2013-10-22T00:41:47.917 に答える