在showNext()之后需要使ViewFlipper不可见

时间:2013-06-25 12:09:19

标签: android events view callback listener

我有一个带有两个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设置为不可见。

感谢

1 个答案:

答案 0 :(得分:0)

快速执行此操作的方法可能是:

  1. 如果您未在ViewAnimator上自行设置动画,get them

  2. 在“out”动画上设置animation listener

  3. 在此动画的onAnimationEnd(Animation animation)中,从视图中移除可见性 - setVisibility(View.GONE)。严格地说,为了正确,您希望在动画完成后您的可见性结束,并且可以使用myFlipper.post(Runnable...)访问显示新窗口后的第一个时刻。 在你的情况下,因为你希望它延迟,你可以使用postDelayed(Runnable..., long delay)

  4. 这样可行,因为你想在第一次翻转后立即删除可见性。想要在 n 翻转后执行此操作。然后,您需要使用视图遍历功能(getChild等...)来维护一个计数器,以确定哪个子项当前处于“视图”状态。幸运的是,大部分代码都是在基类中为您编写的。我建议仔细阅读source code here,以便了解如何轻松实现此目标。