PullToRefreshListView 变成RecyclerView
2016-04-19 12:31
316 查看
继承PullToRefreshBase 复写滑动判断 import android.content.Context; import android.support.v7.widget.RecyclerView; import android.util.AttributeSet; import com.handmark.pulltorefresh.library.PullToRefreshBase; /** * @author xuanyouwu * @email xuanyouwu@163.com * @time 2016-04-19 11:02 * <p/> * 下拉刷新 上拉加载 自动刷新PullRecyclerView */ public class PullRecyclerView extends PullToRefreshBase<RecyclerView> { public PullRecyclerView(Context context, Mode mode, AnimationStyle animStyle) { super(context, mode, animStyle); } public PullRecyclerView(Context context, Mode mode) { super(context, mode); } public PullRecyclerView(Context context, AttributeSet attrs) { super(context, attrs); } public PullRecyclerView(Context context) { super(context); } @Override public Orientation getPullToRefreshScrollDirection() { return Orientation.VERTICAL; } @Override protected RecyclerView createRefreshableView(Context context, AttributeSet attrs) { RecyclerView recyclerView = new RecyclerView(context, attrs); return recyclerView; } @Override protected boolean isReadyForPullEnd() { return DesignViewUtils.isSlideToBottom(getRefreshableView()); } @Override protected boolean isReadyForPullStart() { return DesignViewUtils.isSlideToTop(getRefreshableView()); } }
<pre name="code" class="java">import android.support.design.widget.AppBarLayout;import android.support.v7.widget.RecyclerView;/*** @author xuanyouwu* @email xuanyouwu@163.com* @time 2016-04-13 16:25*/public class DesignViewUtils {/*** AppBarLayout 完全显示 打开状态** @param verticalOffset* @return*/public static boolean isAppBarLayoutOpen(int verticalOffset) {return verticalOffset >= 0;}/*** AppBarLayout 关闭或折叠状态** @param appBarLayout* @param verticalOffset* @return*/public static boolean isAppBarLayoutClose(AppBarLayout appBarLayout, int verticalOffset) {if (appBarLayout == null) return false;return appBarLayout.getTotalScrollRange() == Math.abs(verticalOffset);}/*** RecyclerView 滚动到底部 最后一条完全显示** @param recyclerView* @return*/public static boolean isSlideToBottom(RecyclerView recyclerView) {if (recyclerView == null) return false;if (recyclerView.computeVerticalScrollExtent() + recyclerView.computeVerticalScrollOffset() >= recyclerView.computeVerticalScrollRange())return true;return false;}/*** RecyclerView 滚动到顶端** @param recyclerView* @return*/public static boolean isSlideToTop(RecyclerView recyclerView) {if (recyclerView == null) return false;return recyclerView.computeVerticalScrollOffset() <= 0;}}
相关文章推荐
- spring mvc 从excel导入数据
- Android tween 动画 XML 梳理
- oracle进阶实战笔记
- 接口和抽象类什么时候使用才合适?
- IPOPT工具解决非线性规划最优化问题使用案例
- Linux内核移植 part4:内核timer
- HDU 4135 Co-prime (容斥原理, 数学)
- [数学] BZOJ 4544 椭圆上的整点
- C++ WINDOWS API 如何使用NMAKE和CL编译
- 136. Single Number
- <Pro WPF 4.5 in C#> - Note-02
- EAS性能优化
- android edittext 去边框 去下划线
- web页面记住密码存在安全问题 - 处理方式
- 26Sudoku Killer
- java开发学习工具,必须收藏
- oracle基础实战笔记
- php命名空间的设计思想和缺点
- [线段树]分数修改
- Linux共享Windows文件夹