滚动视图的自定义滚动效果?

时间:2011-03-15 21:31:04

标签: android animation scroll scrollview

任何知道如何制作我自己的滚动功能的人如fling()或smoothScrollTo()? 我有一个ScrollView扩展的类,但我不知道如何制作这个......

我希望它像fling但后退一样工作,我的意思是不是从给定的速度减速而是我希望它以相同的速率从0加速,因为它在减速时减速然后停止在给定位置滚动......

我瞄准的效果就像WP7锁屏一样,你将它从屏幕向上抛出,如果你的滚动视图没有一直滚动到最后我希望它“掉下来”那里我希望它开始于速度0并增加,直到它再次到达起始位置。

任何可以帮助我的人或者只是指出我正确的方向?

2 个答案:

答案 0 :(得分:3)

您可以通过在滚动条上设置不同的插值器来获得您正在寻找的效果。

例如,您可以尝试使用AccelerateInterpolator。

Scroller myScroller = new Scroller(context, new AccelerateInterpolator());

编辑: 请务必阅读bigstones的答案,因为除非你愿意创建自己的ScrollView(由于你有源代码,这并不是那么难),否则我的建议无济于事。

答案 1 :(得分:1)

ScrollView使用Scroller来确定动画播放的方式。我认为您可以编写自定义Scroller并更改决定运动的函数。

Here an example使用Scrollerhere Scroller's source code

可悲的是,除了获取ScrollView的来源并用您的Scroller取代标准ScrollView之外,我不知道让Scroller使用您的GestureDetector更简单的方法。另一种方法是创建一个更简单的自定义滚动视图。

修改

好像是Android的通知栏效果。如果您不需要它来跟随手指,但只响应投掷手势,那么使用动画和View实现起来应该不会太难。类似的东西:

触摸或慢速摇晃 - >反弹动画;

足够快的速度 - >向上滑动动画;

如果您更喜欢用手指(如Android的通知栏),则必须使用{{1}}的滚动框架,我认为它会更复杂(但你可以去并看看他们是如何做到的。)