【问题标题】:Android ListView: get Overscroll distanceAndroid ListView:获取Overscroll距离
【发布时间】:2013-09-15 18:22:19
【问题描述】:

有没有办法确定用户在 Android ListView 中拥有overscrolled 的确切像素数?当用户尝试向上滚动超过第一个列表项,并且 overscroll/bounce 动画开始播放时,我需要检测过度滚动距离。基本上我会在那个空间做一些事情,比如动画中的折叠,类似于 iPhone 上的Clear 应用程序。

我尝试在我的 ListView 及其项目上调用 getScrollY()getTop()(使用 getChildAt(0).getTop),但一切都返回 0。作为参考,我的列表项目都是相同的高度。

我还尝试将onScrollListener 添加到listview 并仅计算ACTION_DOWN 上的原始Y 位置与ACTION_MOVE 上的Y 位置之间的差异,但似乎listview以较慢的速度滚动。

任何帮助都会很棒。

【问题讨论】:

    标签: java android listview mobile


    【解决方案1】:

    重写这个方法怎么样?

    protected boolean overScrollBy (int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent)

    scrollY 将保持为 0,但当 isTouchEvent 为 true 时,您可以累积 deltaY 以获取用户过度滚动的程度。

    【讨论】:

    • 嗨,博,这很有趣,我确实重写了该方法,最初认为它没用,因为 scrollY 总是显示为 0 - 如果有机会,我会看看 deltaY 参数;顺便说一句,我使用上面的链接创建了一个自定义列表视图,并取得了巨大的成功,我打算将它发布到 git 上,也许写一篇简短的博客文章,我将链接回这里。谢谢
    【解决方案2】:

    经过大量挖掘,甚至更多的挫折,答案似乎是你不能。更烦人的是,我查看了 Android source code,可以看到我需要的代码都很好地隐藏在 AbsListView 的内部 gubbings 中。但一切都没有丢失。似乎您可以使用 AbsListView 作为指南来构建自己的视图,并在其中执行您需要的操作。它比我想要的更冗长,但就这样吧。我还找到了一个很好的tutorial,关于如何构建自己的视图,您可以在其中做任何您想做的事情。

    编辑

    我终于在 Github 上启动并运行了一个演示。如果你有兴趣,你可以找到它here。当您从顶部下拉时,新视图将旋转进来,如果您松开或向上滚动,视图将旋转出来。

    【讨论】:

      【解决方案3】:

      起初我认为我可以在 onOverScrolled 获得过度滚动距离, 但在 onOverScrolled (int scrollX, int scrollY, booleanclampedX, booleanclampedY)

      scrollX 为 0 或 maxOverScrollDistence。

      所以你不能在那里获得 Overscroll 距离。

      但你可以在

      处获得 Overscroll 距离

      protected boolean overScrollBy (int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent)

      例如,如果您的滚动视图垂直滚动, 那么

      if(deltaY+scrollY

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多