2011-03-15 107 views
4

任何人都知道如何使自己的滚动功能,如fling()或smoothScrollTo()? 我有一类就是滚动型扩展,但我不能找出如何使这个......滚动视图的自定义滚动效果?

我希望它像一扔工作,但倒退,与我的意思是从给定的速度放慢,而不是我想要的从相同速率从0加速,因为它在放弃时放慢速度,然后停止在给定位置滚动...

效果我的目标是像WP7锁屏,你把它从屏幕上方向上抛出,如果你的scrollview没有一直滚动到最后我希望它“倒下”,因为我希望它从速度0开始并增加,直到它再次达到开始位置。

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

+0

我编辑了我的答案。 – bigstones 2011-03-17 17:02:57

回答

1

ScrollView使用Scroller来确定如何扔动画。我认为你可以写一个自定义的Scroller并改变决定运动的功能。

Here an example使用Scrollerhere Scroller's source code

可悲的是,我不知道有ScrollView使用比获得ScrollView的来源,并与你的更换标准ScrollerScroller其他简单的方法。另一种方法是创建一个更简单的自定义滚动视图。

编辑

好像Android的通知栏的效果。如果你不需要它来跟随手指,但只回应挥动手势,使用动画和GestureDetector应该不会太难。例如:

触摸或缓慢一扔 - >反弹动画;

足够快 - >向上滑动动画;如果你想让它跟随你的手指(像Android的通知栏),你将不得不使用View的滚动框架,我认为它会更复杂(但你可以去看看如何他们做到了)。

+0

它是我现在制作的方式,但是在那种方式下,当我按住scrollview并保持动画效果时,我无法停止中间的动画.... – Alioooop 2011-03-19 18:47:09

+0

@Alioooop然后您可以尝试第二种方法。好吧,祝你好运! – bigstones 2011-03-19 19:01:51

3

您可能能够通过在滚动条上设置不同的Interpolator来获得所需的效果。

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

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

编辑: 务必阅读bigstones回答虽然,因为我的建议并没有帮助,除非你愿意创建自己的滚动型(这是不是所有的困难的,因为你有来源)。

+1

+1用于指出构造函数中的插补器。我不记得了! – bigstones 2011-03-16 14:49:45

+0

我试着用自己的源代码滚动视图,但它仍然有一些变量和其他东西,我不能使用从我的应用程序... – Alioooop 2011-03-16 21:34:19

+0

我的目标是像WP7锁屏,你把它从屏幕上向上抛出,如果你的滚动视图没有滚动到最后我希望它“摔倒”,因为我希望它从速度0开始并增加,直到它再次到达开始位置:) – Alioooop 2011-03-16 21:52:10