这个蓝色的影子叫什么?

What is this blue shadow called?

这个蓝色的影子叫什么,它结束后拉动视图会出现?当它出现或消失时是否触发了监听器?

我已经实现了 https://github.com/maurycyw/StaggeredGridView,我想在这个视图组过度滚动时加载更多项目。

它被称为 Overscroller。Listview 内置了对过度滚动的支持。查看 setOverscrollMode 和相关方法 setOverscrollHeadersetOverscrollFooter。 ListView 通过覆盖 AbsListView.onOverscrolled; 来使用滚动 header/footer 如果您想要不同的行为,您可以通过自己覆盖来实现它。

不幸的是,没有现成的库或功能来实现这一点。但是有很好的开放库,你可以适应。

我的建议是检查 SwipeRefreshLayout,它在 Android 支持库中。

这个ViewGroup支持从顶部滑动来回调,你可以调整它来实现底部滑动。

文档:https://developer.android.com/reference/android/support/v4/widget/SwipeRefreshLayout.html

源代码: https://android.googlesource.com/platform/frameworks/support/+/refs/heads/master/v4/java/android/support/v4/widget/SwipeRefreshLayout.java

编辑: 或者,使用滚动侦听器实现 load more 函数相对容易,它只是一个简单的 OnScrollListener,代码如下:

private long lastRequestTime = 0;
public void onScroll (AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount){
      if (((firstVisibleItem+visibleItemCount) > totalItemCount - 4) &&
         (lastRequestTime + 1000 < System.currentTimeMillis())) {
         lastRequestTime = System.currentTimeMillis();
         // load more ...
      }
}