这个蓝影叫什么?

时间:2015-02-11 08:40:54

标签: android android-viewgroup

在视图结束后拉出视图时,这个蓝色阴影是什么?当出现或出现时是否有一个听众被触发?

enter image description here

我已经实现了https://github.com/maurycyw/StaggeredGridView,并且我希望在此视图组被过度滚动时加载更多项目。

2 个答案:

答案 0 :(得分:6)

它被称为Overscroller。Listview内置支持过度滚动。查看setOverscrollMode及相关方法setOverscrollHeadersetOverscrollFooter。如果你想要不同的行为,ListView会通过覆盖AbsListView.onOverscrolled;来使用overscroll页眉/页脚,你可以自己覆盖它来实现它。

答案 1 :(得分:3)

遗憾的是,没有现成的库或功能来实现这一目标。但是有一个很好的开放式图书馆,你可以适应。

我的建议是检查SwipeRefreshLayout,它位于Android支持库上。

此ViewGroup支持从顶部滑动以进行回调,您可以调整它以实现底部滑动。

docs: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 ...
      }
}