【问题标题】:Custom scroll effect for scrollview?滚动视图的自定义滚动效果?
【发布时间】:2011-03-15 21:31:04
【问题描述】:

有谁知道如何制作我自己的滚动函数,如 fling() 或 smoothScrollTo()? 我有一个扩展了 ScrollView 的类,但我不知道如何制作这个......

我希望它像投掷但倒退一样工作,我的意思不是从给定速度减慢,而是希望它从 0 开始以与投掷减慢相同的速度加速,然后在给定位置停止滚动...

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

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

【问题讨论】:

    标签: android animation scroll scrollview


    【解决方案1】:

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

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

    即

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

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

    【讨论】:

    • +1 用于指出构造函数中的插值器。我不记得了!
    • 我尝试使用源代码制作自己的滚动视图,但它仍然有一些变量和其他我无法从我的应用程序中使用的东西...
    • 我瞄准的效果就像 WP7 锁屏,你把它从屏幕上向上扔掉,如果你的滚动视图没有一直滚动到最后,我希望它“掉下来”希望它以速度 0 开始并增加直到它再次到达起始位置:)
    【解决方案2】:

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

    Here an example 使用 Scroller 和 here Scroller's source code。

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

    编辑

    好像是安卓的通知栏效果。如果你不需要它跟随手指,而只响应弹射手势,使用动画和GestureDetector 应该不会太难实现。比如:

    触摸或慢投 -> 反弹动画;

    足够快的投掷 -> 向上滑动动画;

    如果您希望它跟随您的手指(如 Android 的通知栏),您将不得不使用View 的滚动框架,我认为它会更复杂(但您可以去看看他们是怎么做到的)。

    【讨论】:

    • 这是我现在制作的方式,但这样我在动画时按住滚动视图时无法在中间停止动画......
    • @Alioooop 那么您可以尝试第二个选项。嗯...祝你好运!
    猜你喜欢
    • 2023-03-08
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 2020-10-14
    • 2012-10-26
    相关资源
    最近更新 更多