2010-03-11 79 views
2

视图不会缓存在ViewFlipper中。有没有一种方法可以让我们看到图像并将其展示给用户,以便他能够看到我们在主屏幕上看到的用户界面(当我们滑动前一个视图时也会沿着这个方向移动,当我们抬起手指时,只有下一个视图完全显示。)ViewFlipper缓存问题

我想要做的是,当用户开始在屏幕上移动他的finegr时,视图也应该移动(创建视图图像)。

我不会这样做,因为当我们滑动当前视图并且下一个视图到来时,当我们在屏幕上移动手指时,我们不会看到这两个视图。

如果有人得到我想要做的,请帮助我。

感谢, 法哈

回答

4

这是棘手的滚动和滑动的跟踪工作,在Android上同时使用ViewAnimator或它的子类。

它们允许您设置进出动画并在给定时刻启动它们,但它们可以处理离散的,这个或这个或那个视图的动画。他们实际上使用的是FrameLayout,并且在执行动画之后,其他视图的可见性设置为View.GONE,以防止他们在当前的View之下显示。

启动器和图库应用程序实际上是通过使用不同的方法来实现所需的功能。 他们跟踪用户的触摸输入(onTouchEvent()),在MotionEvent.ACTION_MOVE他们手动执行动画和MotionEvent.ACTION_UP快照到适当的视图,就像在iPhone中。

不幸的是,这种方法实际上比看起来更复杂。 通过手动操作,您必须确保您正在处理与触摸输入相关的所有内容。这包括很多升旗,价值检查,事件委托等。 如果你想更好地了解这一点,请看看Gallery3DLauncher的源代码中的这些类。

另一种获得很好水平滚动的方法是使用HorizontalScrollView。 你必须找出回收视图的方法,就像使用ListView一样,你必须添加管理单元查看逻辑,但是如果你必须处理少量的视图,它可能是最简单的做法。

希望有所帮助。