包含下拉刷新和自动加载的View.
###下拉刷新
改自 Google 的 SwipeRefreshLayout
, 作了如下改动:
- 修改其下拉样式, 抽取出来作为TopLoadingView, 可根据自身需求自定义View.
- 修改
canChildScrollUp()
方法支持AbsListView.setEmptyView()
. 但emptyView的onTouchEvent
方法需要返回true. - LoadingView 可以根据拉动的百分比(拉伸\透明)变化.
refreshLayout.setLoadingViewScale(boolean scale);
refreshLayout.setLoadingViewAlpha(boolean alpha);
onTouchEvent
在滑动过程中联动子View, 详情可以查看滑动冲突解决-联动子View.- 兼容
ViewPager
, 解决方案可以查看滑动冲突解决-更合理的拦截.
用法如 SwipeRefreshLayout
.
###自动加载
目前提供 AutoLoadListView
, AutoLoadRecyclerView
和 AutoLoadScrollView
三个控件, 因为涉及加载失败和有没有更多内容的情况, 用法比较复杂.
AutoLoadView的加载会有两种不同的形式:
- 点击加载: 当View没有填满屏幕时, 此时View无法滚动, 所以需要点击加载.
- 自动加载: 当View填满屏幕且有更多内容 (
isHaveMore
为true
) 时, 滚动到底部会自动加载.
查看 AutoLoadView
的接口.
public interface AutoLoadView {
void onStart();
void onSuccess(boolean hasMore);
void onFailure();
void setIsHaveMore(boolean isHasMore);
void setOnLoadMoreListener(onLoadMoreListener listener);
}
以此来说明 AutoLoadView
的用法:
- 默认
AutoLoadView
没有更多内容,所以第一次需要设置setIsHaveMore(true)
. 同时设置setLoadMoreListener
. - 每次加载完需要设置有没有更多.
onSuccess(boolean hasMore)
. - 加载失败设置
onFailure()
.