我有一个带有两个ImageView的ViewFlipper。我希望第二个ImageView显示两秒钟,然后使ViewFlipper不可见。
与此类似的代码:
// ...
// flipper is a ViewFlipper with two ImageViews
flipper.setOnClickListener(
new View.OnClickListener() {
public void onClick(View v) {
flipper.showNext();
// need to sleep for two seconds (e.g. Thread.sleep(2000)) after ImageView
// is displayed and then call flipper.setVisibility(View.INVISIBLE);
}
}
);
如何检测第二个ImageView已被绘制?然后,我可以执行代码,在睡眠两秒后将ImageView设置为不可见。
感谢
答案 0 :(得分:0)
快速执行此操作的方法可能是:
如果您未在ViewAnimator
上自行设置动画,get them。
在“out”动画上设置animation listener。
在此动画的onAnimationEnd(Animation animation)
中,从视图中移除可见性 - setVisibility(View.GONE)
。严格地说,为了正确,您希望在动画完成后您的可见性结束,并且可以使用myFlipper.post(Runnable...)
访问显示新窗口后的第一个时刻。 在你的情况下,因为你希望它延迟,你可以使用postDelayed(Runnable..., long delay)
。
这样可行,因为你想在第一次翻转后立即删除可见性。想要在 n 翻转后执行此操作。然后,您需要使用视图遍历功能(getChild
等...)来维护一个计数器,以确定哪个子项当前处于“视图”状态。幸运的是,大部分代码都是在基类中为您编写的。我建议仔细阅读source code here,以便了解如何轻松实现此目标。