SuperSwipeRefreshLayout(非浸入式下拉刷新、上拉加载)
2017-03-21 10:01
190 查看
总概:
0,介绍场景
1,介绍简单使用效果
2,介绍简单使用方法
3,介绍定制View使用方法
4,参考
5,附上github地址
0,场景
个人在网上找下拉刷新的,一看一大片的使用adapter实现下拉刷新的效果。
然后想起之前使用RecyclerView添加头部和底部,是使用修改Adapter实现的。然后在使用addItemDecoration的时候,分割线出现bug --- 添加的头部和底部也出现分割线了
因此,在实现上拉加载的时候,看到adapter实现的时候,真的听到心碎的声音了;幸好看到网上大神实现了定制ViewGroup,然后个人以此为基础,实现类似Google加载效果、添加适配器模式完成数据适配,完成以下动画效果
因此,实现了非浸入式的上拉刷新以及下拉加载
1,简单使用效果(下拉刷新和上拉加载)
![](https://img-blog.csdn.net/20170321003345971)
2,简单使用方法
1,引入库,一共五个文件
![](https://img-blog.csdn.net/20170321003331357)
2,使用xml + java
3,定制View使用方法
1)设置下拉刷新(以下方法都可以不实现)
2)设置上拉加载(与下拉刷新,基本类似)
4,参考
第一部分:https://github.com/lsjwzh/MaterialLoadingProgressBar 作用:旋转效果
其实也是仿照Google的SwipeRefreshLayout写的
第二部分:https://github.com/nuptboyzhb/SuperSwipeRefreshLayout 作用:实现下拉刷新和上拉加载效果
这是重点,具体有什么内容,自己看源码
5,工程下载
https://github.com/yline/public_view_superSwipeRefreshLayout
希望用起来,然后同步修改问题(0*0)
0,介绍场景
1,介绍简单使用效果
2,介绍简单使用方法
3,介绍定制View使用方法
4,参考
5,附上github地址
0,场景
个人在网上找下拉刷新的,一看一大片的使用adapter实现下拉刷新的效果。
然后想起之前使用RecyclerView添加头部和底部,是使用修改Adapter实现的。然后在使用addItemDecoration的时候,分割线出现bug --- 添加的头部和底部也出现分割线了
因此,在实现上拉加载的时候,看到adapter实现的时候,真的听到心碎的声音了;幸好看到网上大神实现了定制ViewGroup,然后个人以此为基础,实现类似Google加载效果、添加适配器模式完成数据适配,完成以下动画效果
因此,实现了非浸入式的上拉刷新以及下拉加载
1,简单使用效果(下拉刷新和上拉加载)
2,简单使用方法
1,引入库,一共五个文件
2,使用xml + java
<?xml version="1.0" encoding="utf-8"?> <com.lib.superswipe.SuperSwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/super_swipe_refresh" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/recycle_view" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView> </com.lib.superswipe.SuperSwipeRefreshLayout>
swipeRefreshLayout = (SuperSwipeRefreshLayout) findViewById(R.id.super_swipe_refresh); // init SuperSwipeRefreshLayout swipeRefreshLayout.setOnRefreshListener(new SuperSwipeRefreshLayout.OnSwipeListener() { @Override public void onAnimating() { new Handler().postDelayed(new Runnable() { @Override public void run() { swipeRefreshLayout.setRefreshing(false); // 更新recyclerView recycleAdapter.add(0, "Refresh Item + " + new Random().nextInt(300)); recycleView.scrollToPosition(0); } }, 4000); } }); swipeRefreshLayout.setOnLoadListener(new SuperSwipeRefreshLayout.OnSwipeListener() { @Override public void onAnimating() { new Handler().postDelayed(new Runnable() { @Override public void run() { swipeRefreshLayout.setLoadMore(false); // 更新recyclerView int itemNumber = recycleAdapter.getItemCount(); recycleAdapter.add(itemNumber, "Loaded Item + " + new Random().nextInt(300)); recycleView.scrollToPosition(itemNumber); } }, 4000); } });
3,定制View使用方法
1)设置下拉刷新(以下方法都可以不实现)
// swipeRefreshLayout.setRefreshAdapter(null); // 设置为null,则取消了下拉刷新效果 swipeRefreshLayout.setRefreshAdapter(new DefaultSwipeRefreshAdapter(this) { // 动画下拉时,距离变动 @Override protected void onCreate(float dragDistance, float targetDistance) { super.onCreate(dragDistance, targetDistance); } // 动画下拉时,是否过了临界点 @Override protected void onStart(boolean enable) { super.onStart(enable); } // 传递你需要定制的view; @NonNull @Override protected View getView(Context context) { return super.getView(context); } // 正在刷新时,执行的操作 @Override protected void onAnimating() { super.onAnimating(); new Handler().postDelayed(new Runnable() { @Override public void run() { swipeRefreshLayout.setRefreshing(false); // 更新recyclerView recycleAdapter.add(0, "Refresh Item + " + new Random().nextInt(300)); recycleView.scrollToPosition(0); } }, 4000); } // 设置是否在表面;true:子View随下拉而一起滑动; false:子view不下滑,只是浮在上面 @Override public boolean isTargetScroll() { return super.isTargetScroll(); } // 返回背景颜色 @Override public int getBackgroundResource() { return super.getBackgroundResource(); } });
2)设置上拉加载(与下拉刷新,基本类似)
swipeRefreshLayout.setLoadAdapter(null); swipeRefreshLayout.setOnLoadListener(new SuperSwipeRefreshLayout.OnSwipeListener() { @Override public void onAnimating() { new Handler().postDelayed(new Runnable() { @Override public void run() { swipeRefreshLayout.setLoadMore(false); // 更新recyclerView int itemNumber = recycleAdapter.getItemCount(); recycleAdapter.add(itemNumber, "Loaded Item + " + new Random().nextInt(300)); recycleView.scrollToPosition(itemNumber); } }, 4000); } });
4,参考
第一部分:https://github.com/lsjwzh/MaterialLoadingProgressBar 作用:旋转效果
其实也是仿照Google的SwipeRefreshLayout写的
第二部分:https://github.com/nuptboyzhb/SuperSwipeRefreshLayout 作用:实现下拉刷新和上拉加载效果
这是重点,具体有什么内容,自己看源码
5,工程下载
https://github.com/yline/public_view_superSwipeRefreshLayout
希望用起来,然后同步修改问题(0*0)
相关文章推荐
- [Android实例] Android 6.0RecyclerView SwipeRefreshLayout 下拉刷新 上拉加载
- android-- 自定义下拉刷新上拉加载控件(SwipeRefreshLayout + recyclerView)
- android:ListView下拉刷新上拉加载(SwipeRefreshLayout+滑动监听加载更多)
- 用ListSwipeRefreshLayout实现安卓listView下拉刷新,上拉加载
- Android SwipeRefreshLayout实现下拉刷新,上拉加载、滑动加载(自动加载)和点击加载
- SwipeRefreshLayout下拉刷新和上拉加载
- SwipeRefreshLayout + ListView 实现仿简书 下拉刷新 与 上拉加载
- SwipeRefreshLayout+RecyclerView实现下拉刷新上拉自动加载
- 自定义下拉刷新上拉加载控件(SwipeRefreshLayout + recyclerView)
- 自定义控件: 万能下拉刷新及上拉加载控件SuperRefreshLayout-4
- SwipeRefreshLayout和RecyclerView实现下拉刷新和上拉加载
- SwipeRefreshLayout+RecycleView实现下拉刷新上拉加载
- android SwipeRefreshLayout 实现 下拉刷新 上拉加载
- 简单实现WaveSwipeRefreshLayout+RecyclerView的上拉加载下拉刷新的功能
- Android SwipeRefreshLayout谷歌官方下拉刷新加载WebView网页介绍
- recyclerview+swiperefreshlayout实现GridView下拉刷新,上拉加载更多
- android SwipeRefreshLayout 实现 下拉刷新 上拉加载
- RecyclerView+SwipeRefreshLayout+ViewPager实现上拉加载更多下拉刷新和添加Banner(附源码)
- SwipeRefreshLayout的下拉刷新和上拉加载
- 自己封装的工具类,使用原生SwipeRefreshLayout+RecycleView实现下拉刷新和加载更多