这是棘手的滚动和滑动的跟踪工作,在Android上同时使用ViewAnimator
或它的子类。
它们允许您设置进出动画并在给定时刻启动它们,但它们可以处理离散的,这个或这个或那个视图的动画。他们实际上使用的是FrameLayout
,并且在执行动画之后,其他视图的可见性设置为View.GONE
,以防止他们在当前的View
之下显示。
启动器和图库应用程序实际上是通过使用不同的方法来实现所需的功能。 他们跟踪用户的触摸输入(onTouchEvent()
),在MotionEvent.ACTION_MOVE
他们手动执行动画和MotionEvent.ACTION_UP
快照到适当的视图,就像在iPhone中。
不幸的是,这种方法实际上比看起来更复杂。 通过手动操作,您必须确保您正在处理与触摸输入相关的所有内容。这包括很多升旗,价值检查,事件委托等。 如果你想更好地了解这一点,请看看Gallery3D或Launcher的源代码中的这些类。
另一种获得很好水平滚动的方法是使用HorizontalScrollView
。 你必须找出回收视图的方法,就像使用ListView
一样,你必须添加管理单元查看逻辑,但是如果你必须处理少量的视图,它可能是最简单的做法。
希望有所帮助。