任何知道如何制作我自己的滚动功能的人如fling()或smoothScrollTo()? 我有一个ScrollView扩展的类,但我不知道如何制作这个......
我希望它像fling但后退一样工作,我的意思是不是从给定的速度减速而是我希望它以相同的速率从0加速,因为它在减速时减速然后停止在给定位置滚动......
我瞄准的效果就像WP7锁屏一样,你将它从屏幕向上抛出,如果你的滚动视图没有一直滚动到最后我希望它“掉下来”那里我希望它开始于速度0并增加,直到它再次到达起始位置。
任何可以帮助我的人或者只是指出我正确的方向?
答案 0 :(得分:3)
您可以通过在滚动条上设置不同的插值器来获得您正在寻找的效果。
例如,您可以尝试使用AccelerateInterpolator。
即
Scroller myScroller = new Scroller(context, new AccelerateInterpolator());
编辑: 请务必阅读bigstones的答案,因为除非你愿意创建自己的ScrollView(由于你有源代码,这并不是那么难),否则我的建议无济于事。
答案 1 :(得分:1)
ScrollView
使用Scroller
来确定动画播放的方式。我认为您可以编写自定义Scroller
并更改决定运动的函数。
Here an example使用Scroller
和here Scroller
's source code。
可悲的是,除了获取ScrollView
的来源并用您的Scroller
取代标准ScrollView
之外,我不知道让Scroller
使用您的GestureDetector
更简单的方法。另一种方法是创建一个更简单的自定义滚动视图。
修改强>
好像是Android的通知栏效果。如果您不需要它来跟随手指,但只响应投掷手势,那么使用动画和View
实现起来应该不会太难。类似的东西:
触摸或慢速摇晃 - >反弹动画;
足够快的速度 - >向上滑动动画;
如果您更喜欢用手指(如Android的通知栏),则必须使用{{1}}的滚动框架,我认为它会更复杂(但你可以去并看看他们是如何做到的。)