0

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

谢谢

4

1 回答 1

0

一个快速的方法可能是:

  1. 如果您不ViewAnimator自己设置动画,请获取它们

  2. 在你的“out”动画上设置一个动画监听器。

  3. 在此动画onAnimationEnd(Animation animation)中,从您的视图中移除可见性 - setVisibility(View.GONE)。严格来说,正确地说,您希望在动画完成结束可见性,并且可以使用myFlipper.post(Runnable...). 但是,在您的情况下,由于您希望延迟,您可以使用postDelayed(Runnable..., long delay).

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

于 2013-06-26T16:06:35.773 回答