All Projects → yanyiqun001 → goRefresh

yanyiqun001 / goRefresh

Licence: Apache-2.0 license
让下拉刷新炫酷起来~轻松接入lottie动画,支持listview recyclerview scrollerview webview 。同时支持listview和recyclerview上拉加载

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to goRefresh

vuejs-loadmore
A pull-down refresh and pull-up loadmore scroll component for Vue.js. Vue上拉加载下拉刷新组件
Stars: ✭ 62 (+158.33%)
Mutual labels:  refresh, loadmore
Xrefreshlayout
【已过时,不再更新,请使用更强大的SmartRefreshLayout!】A refresh layout(无侵入下拉刷新和加载布局), can refresh RecyclerView for all LayoutManager, NestedScrollView。
Stars: ✭ 127 (+429.17%)
Mutual labels:  pulltorefresh, refreshlayout
ParticlesRefreshLayout-android
Particles Refresh Layout library for Android
Stars: ✭ 15 (-37.5%)
Mutual labels:  refresh, refreshlayout
ZRefreshLayout
一个可以全局随意配置头部的下拉刷新与上拉加载库;
Stars: ✭ 30 (+25%)
Mutual labels:  loadmore, refreshlayout
Smartrefreshlayout
🔥下拉刷新、上拉加载、二级刷新、淘宝二楼、RefreshLayout、OverScroll,Android智能下拉刷新框架,支持越界回弹、越界拖动,具有极强的扩展性,集成了几十种炫酷的Header和 Footer。
Stars: ✭ 23,185 (+96504.17%)
Mutual labels:  pulltorefresh, refreshlayout
PullToRefresh
下拉刷新库可自定义刷新加载
Stars: ✭ 111 (+362.5%)
Mutual labels:  pulltorefresh, loadmore
Flutter refresh
flutter refresh 上拉刷新 下拉加载 进度条
Stars: ✭ 51 (+112.5%)
Mutual labels:  refresh, refreshlayout
SwipeRefreshPlus
参考swiperefreshlayout添加下拉加载更多
Stars: ✭ 24 (+0%)
Mutual labels:  loadmore, refreshlayout
Pullrefreshlayout
下拉刷新,上拉加载,真实的回弹(overscroll)效果(媲美qq),且大小只有37KB(是其他主流刷新库或回弹库的1/2,1/3,甚至是1/4),同时,自定义header和footer,可以实现任何你想的到的功能(例如:自动触发加载更多、二级刷新等)
Stars: ✭ 639 (+2562.5%)
Mutual labels:  pulltorefresh, refreshlayout
React Native Mjrefresh
基于ios MJRefresh https://github.com/CoderMJLee/MJRefresh 开发的插件,可提供自定义的弹性刷新
Stars: ✭ 140 (+483.33%)
Mutual labels:  refresh, refreshlayout
PowerRefresh
Support nested scroll for refresh and load more.
Stars: ✭ 64 (+166.67%)
Mutual labels:  loadmore, refreshlayout
React Native Smartrefreshlayout
基于android SmartRefreshLayout https://github.com/scwang90/SmartRefreshLayout 开发的插件,可提供类似ios的弹性刷新
Stars: ✭ 240 (+900%)
Mutual labels:  refresh, refreshlayout
Swiperefreshlayout
swipeRefreshLayout refresh pull-to-refresh
Stars: ✭ 26 (+8.33%)
Mutual labels:  refresh, refreshlayout
Smoothrefreshlayout
一款支持上下拉刷新、越界回弹、二级刷新、横向刷新、拉伸回弹、平滑滚动、嵌套滚动的多功能刷新控件
Stars: ✭ 1,166 (+4758.33%)
Mutual labels:  refresh, refreshlayout
Shswiperefreshlayout
Android 升级版 SwipeRefreshLayout,支持RecyclerView、ScrollView等大部分组件,下拉刷新(Refresh)和上拉加载(Loadmore),支持自定义HeaderView和FooterView
Stars: ✭ 236 (+883.33%)
Mutual labels:  refresh, refreshlayout
Springview
🔥 A custom view pull to refresh,support ScrollView,ListView,RecyclerView,WebView and all another views, easy to use
Stars: ✭ 1,936 (+7966.67%)
Mutual labels:  pulltorefresh, refreshlayout
Pulltorefresh
Flutter相关的项目QQ:277155832 Email:2[email protected]
Stars: ✭ 454 (+1791.67%)
Mutual labels:  pulltorefresh
Pulltorefresh H5 Iscroll
基于IScroll5的PullToRefresh实现.。提供多套皮肤机制,便于拓展!
Stars: ✭ 56 (+133.33%)
Mutual labels:  pulltorefresh
Pulltorefresh.js
A quick and powerful plugin for your pull-to-refresh needs in your webapp.
Stars: ✭ 3,814 (+15791.67%)
Mutual labels:  pulltorefresh
Xrefreshview
一个万能的android下拉上拉刷新的框架,完美支持recyclerview
Stars: ✭ 1,685 (+6920.83%)
Mutual labels:  pulltorefresh

goRefresh

image

Apk下载体验

image

demo gif

image image

image image

image image

image image

image

使用方式

项目gradle文件添加

allprojects {
          repositories {
              ...
              maven { url "https://jitpack.io" }
          }
      }

module下添加依赖

dependencies{
      compile 'com.github.yanyiqun001.goRefresh:refreshlayout:0.6.2'
      compile 'com.github.yanyiqun001.goRefresh:refreshlayout_lottie:0.6.2' (需要使用lottie动画时添加)
}

根布局文件

<com.GoRefresh.GoRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/goRefreshLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/defaultbg">
    <android.support.v7.widget.RecyclerView
        android:id="@+id/rv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#fff"/>
</com.GoRefresh.GoRefreshLayout>

下拉刷新

简单实现

     // 设置下拉监听  
      goRefreshLayout.setOnRefreshListener(new RefreshListener() {
             @Override
             public void onRefresh() {
                //添加你自己的代码
             }
         });
         
    //  结束刷新  
      goRefreshLayout.finishRefresh();

自定义实现

自定义header需要实现IHeaderView接口,具体请参看demo

自定义头部使用lottie动画 (注意添加依赖)

说明:lottie所使用的文件全部来源于 https://www.lottiefiles.com/ 并且不断添加新的动画效果。demo中只是选取了其中几个样式。大家可自由选择合适的样式作为刷新动画

集成步骤:

  1. 下载动画文件(xxx.json)
  2. 在自己洗项目中建立assets文件夹,将动画文件拷贝其中
  3. 头部布局文件中添加LottieAnimationView: lottie_fileName属性添加动画文件名
   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       xmlns:app="http://schemas.android.com/apk/res-auto"
       android:orientation="vertical"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:gravity="center">
       <com.airbnb.lottie.LottieAnimationView
           android:id="@+id/animation_view"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           app:lottie_fileName="loading_animation.json"
           />
   </LinearLayout>

4.代码中设置

//参数2 头部布局文件layoutid 参数3 LottieAnimationView的id
LottieView lottieView = new LottieView(this, R.layout.lottle_loading_animation, R.id.animation_view);
goRefreshLayout.setHeaderView(lottieView);

上拉加载

说明:为了更自然流畅的体验,footerview并没有添加在gorefresh上面,还是使用传统的adapter中添加footer的方式实现,gorefresh只是提供一个统一的入口方便调用。由于listview 和recyclerview添加上拉的实现方式是不同的(lv有setFooterView方法,rv没有),所以在使用方法上也略有不同。

lv使用:

    //必须设置
    goRefreshLayout.setHasFooter(true); 
    
    //设置加载状态的footerview (不设置使用默认)
    goRefreshLayout.setLoadingView(R.layout.footer_loading);
    
    //设置加载完毕没有更多数据的footerview(不设置使用默认)
    goRefreshLayout.setFinishWithNodataView(R.layout.footer_finish);
    
    //设置错误状态并且具有重试功能的footerview 第二个参数为重试控件的id (不设置使用默认)
    goRefreshLayout.setErrorViewWithRetry(R.layout.footerview_error, R.id.tips);
    
    //设置监听
    goRefreshLayout.setOnLoadMoreListener(new LoadMoreListener() {
                @Override
                public void onLoadmore() {
                    //添加自己的代码
                    handler.postDelayed(new Runnable() {
                           @Override
                          public void run() {
                            //结束刷新
                            rvLoadMoreWrapper.finishLoadMore();    
                            //结束刷新,没有更多数据
      //                    rvLoadMoreWrapper.finishLoadMoreWithNoData();
                            //加载错误
      //                    rvLoadMoreWrapper.finishLoadMoreWithError();                                                                                              
                          }
                    }, 2000);
                }
            });

rv使用:

   //方式1 与lv类似
    goRefreshLayout.setHasFooter(true); 
    
    goRefreshLayout.setLoadingView(R.layout.footer_loading);
 
    goRefreshLayout.setFinishWithNodataView(R.layout.footer_finish);
    
    goRefreshLayout.setErrorViewWithRetry(R.layout.footerview_error, R.id.tips);
    //构建上拉加载adapter
    RvLoadMoreWrapper rvLoadMoreWrapper=goRefreshLayout.buildRvLoadMoreAdapter(adapter);
  
    recyclerView.setAdapter(rvLoadMoreWrapper);
    
    goRefreshLayout.setOnLoadMoreListener(new LoadMoreListener() {
                @Override
                public void onLoadmore() {
                    //添加自己的代码
                   handler.postDelayed(new Runnable() {
                           @Override
                          public void run() {
                            //结束刷新
                            rvLoadMoreWrapper.finishLoadMore();    
                            //结束刷新,没有更多数据
      //                    rvLoadMoreWrapper.finishLoadMoreWithNoData();
                            //加载错误
      //                    rvLoadMoreWrapper.finishLoadMoreWithError();                                                                                              
                          }
                    }, 2000);
                }
            });
    
   //方式2  直接使用RvLoadMoreWrapper进行操作(推荐)
    //构建上拉加载adapter
    RvLoadMoreWrapper rvLoadMoreWrapper=goRefreshLayout.buildRvLoadMoreAdapter(adapter);
    
    rvLoadMoreWrapper.setHasFooter(true)
                    .setLoadingView(R.layout.lottle_loading_animation_footer)
                    .setFinishView(R.layout.footer_finish)
                    .setErrorViewWithRetry(R.layout.footer_error,R.id.tips)
                    .setLoadMoreListener(new LoadMoreListener() {
                        @Override
                        public void onLoadmore() {
                             //添加自己的代码
                             handler.postDelayed(new Runnable() {
                                  @Override
                                 public void run() {
                                      //结束刷新
                                      rvLoadMoreWrapper.finishLoadMore();    
                                      //结束刷新,没有更多数据
                                 //   rvLoadMoreWrapper.finishLoadMoreWithNoData();
                                      //加载错误
                                 //   rvLoadMoreWrapper.finishLoadMoreWithError();                                                                                              
                              }
                            }, 2000);                
                        }
                    });
    recyclerView.setAdapter(rvLoadMoreWrapper);

自定义footer:

自定义footer需要实现IFooterView接口

示例

    public class CustomFooter implements IFooterView {
        private LayoutInflater inflater;
        private View mLoadingView;
        private View mErrorview;
        private View mFinishView;
        public CustomFooter(Context context) {
            inflater=LayoutInflater.from(context);
            mErrorview=inflater.inflate(R.layout.footerview_error,null);
            mLoadingView=inflater.inflate(R.layout.lottle_loading_animation_footer,null);
            mFinishView=inflater.inflate(R.layout.footer_finish,null);
        }
    
        @Override
        public View getLoadingView() {
            return mLoadingView;
        }
    
        @Override
        public View getFinishView() {
            return mFinishView;
        }
    
        @Override
        public View getFailureView() {
            return mErrorview;
        }
    
        @Override
        public int getRetryId() {
            return R.id.tv_retry;
        }
    }

使用

 CustomFooter customFooter = new CustomFooter(this);
 goRefreshLayout.setFooterView(customFooter);
 //或者
 rvLoadMoreWrapper.setFooterView(customFooter)
 //...其余代码略

感谢

TwinklingRefreshLayout

baseAdapter

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].