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 回答