runnable中的代码在里面执行

时间:2013-10-22 00:23:32

标签: android

我想在这里实现的是设置一个可见的视图,让它停留3秒然后逐渐消失。我通过计时器,处理程序和runnable来做到这一点。以下是我的代码:

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)语句在runnable中执行。有谁知道这是为什么?谢谢!

1 个答案:

答案 0 :(得分: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