我想在这里实现的是设置一个可见的视图,让它停留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中执行。有谁知道这是为什么?谢谢!
答案 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