美文网首页项目扩展代码分装
Android 下拉刷新上拉加载PullToRefresh

Android 下拉刷新上拉加载PullToRefresh

作者: 晓峰残月 | 来源:发表于2016-12-14 21:33 被阅读15101次

    PullToRefresh

    最新更新详见github,欢迎star or fork

    开发者可以使用 PullToRefresh 对各种控件实现下拉刷新或者上拉加载以及可以自定义刷新和加载部分的视图。

    目前支持:ScrollViewListViewWebViewRecyclerView

    效果图

    基本用法

    1、添加 Gradle 依赖

    目前只支持 Android Studio,最新版本可到GitHub上查看

    compile 'com.jwenfeng.pulltorefresh:library:1.0.3'
    

    2、布局文件

    注意:内容控件 有且只能有一个,目前支持:ScrollViewListViewWebViewRecyclerView

    <?xml version="1.0" encoding="utf-8"?>
    <com.jwenfeng.library.pulltorefresh.PullToRefreshLayout 
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        
        <!-- 内容控件 有且只能有一个 -->
         <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        
         </ScrollView>
        
    </com.jwenfeng.library.pulltorefresh.PullToRefreshLayout>
        
    

    3、在Activity或者Fragment中使用

    pullToRefreshLayout.setRefreshListener(new BaseRefreshListener() {
                @Override
                public void refresh() {
                    new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            // 结束刷新
                            pullToRefreshLayout.finishRefresh();
                        }
                    }, 2000);
                }
    
                @Override
                public void loadMore() {
                    new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            // 结束加载更多
                            pullToRefreshLayout.finishLoadMore();
                        }
                    }, 2000);
                }
            });
    

    4、自定义视图

    自定义下拉刷新视图需要实现 HeadView 接口

    public interface HeadView {
    
        /**
         * 开始下拉
         */
        void begin();
    
        /**
         * 回调的精度,单位为px
         *
         * @param progress 当前高度
         * @param all      总高度
         */
        void progress(float progress, float all);
    
        void finishing(float progress, float all);
        /**
         * 下拉完毕
         */
        void loading();
    
        /**
         * 看不见的状态
         */
        void normal();
    
        /**
         * 返回当前视图
         * */
        View getView();
    
    }
    

    具体请参考Demo中 HeadRefreshView

    上拉加载更多用法和下拉刷新类似,具体参考 LoadMoreView.java

    5、其他

    可以设置下拉刷新和上拉加载控件的高度和拉取的最大高度,默认为60dp,最大拉取为120dp,可自行设置。

    最后

    github地址:https://github.com/823546371/PullToRefresh
    欢迎 Star or Fork。欢迎交流指正。

    尊重原创,转载请注明: Android 下拉刷新上拉加载PullToRefresh,侵权必究!

    相关文章

      网友评论

      • 83c3cbb5a86a:楼主,下拉过程中箭头有个缩放过程,我看了源码怎么没发现?请问在哪里实现的呢?
      • a7bd7b8b584d:我想让上拉加载完成后第二页数据露出一部分如何操作?
      • d8054a3bf587:楼主,问一下,在滑动过程切换底部button切换fragment,切换回来滑动就有问题,不停的弹回原位,,,求教
      • 710a3cdd1bef:楼主,如果要显示多一行用于展示最后一次刷新的时间,HeadView这个接口是不是暂时还不能实现,还是有其他方法实现
      • LJIAMING:如果显示了emptyview想要刷新怎么办??
      • LJIAMING:error_view的文字要怎么修改?
        晓峰残月:@LJIAMING 可以自己定义
      • 409d496d7545:楼主我想问一下 你这个改变下拉头的样式在哪改变
        晓峰残月:@洒家买蘑菇 demo里面有
      • 8174f38967ec:请问要怎么通过按钮来触发滑动刷新
      • b2f156ab1568:你这个刷新加载每次触发都会执行两次怎么解
        晓峰残月:@小G先生_4b2e 823546371
        b2f156ab1568:@晓峰残月 加个qq聊一下2670504049
        晓峰残月:@小G先生_4b2e 不会吧,你可以发下你的代码我看下
      • 天马流星权:上拉刷新的时候,刷新完成,listView就会下沉到底...我的需求就是不要下沉了(感觉下沉后用户还要再拉才看到有没有加载到数据,体验好像不大好.参考一些知名的APP也这样的)...要怎么实现呢?谢谢!
      • 月月_1994:楼主,你好,我在用你的这个控件的时候,想要自定义headerview 和footview,但是我只能每次用的时候都加一个set设置,我能不能直接继承你的pulltorefresh然后设置再用呢
        晓峰残月:@月月_1994 可以的
      • da1b76f3ca12:楼主你好,我只想用下拉刷新不想用上拉刷新请问怎么修改代码?
        晓峰残月:setCanLoadMore(false);
      • aca8436f8e3c:楼主 这个刷新期间为什么不能滑动能解决么??很想用这个lib。能更新一下吗???
        aca8436f8e3c:@晓峰残月 谢谢
        晓峰残月:@不够勇敢的小恢恢 已修复刷新加载期间不能滑动问题,详见https://github.com/823546371/PullToRefresh,欢迎star or fork
        aca8436f8e3c:晚上帮忙看看呗!
      • 微微心凉L:楼主 这个刷新期间为什么不能滑动 怎么搞?
        晓峰残月:@微微心凉L 以修复刷新加载期间不能滑动问题,详见https://github.com/823546371/PullToRefresh,欢迎star or fork
        微微心凉L:@晓峰残月 哈哈 。大佬有时间你修复一下吧。 我是菜鸟 :relaxed:
        晓峰残月:@微微心凉L 这个去重写事件那一块就行了,最近比较忙,有时间了加上,你也可以自己改一下
      • 光羽隼:在刷新期间不能滑动,怎么解决?:pensive:
      • 298ac7ee7f62:我想给listview 添加addHeaderView ,但是下拉刷新的图却出来了。我该怎么解决呢?求大神带带我。
        东土也:请问添加ListView添加Heard头的方法解决了吗
        晓峰残月:@徐龙超 可以把项目代码发到我的邮箱823546371@qq.com
      • 07b0c4d53d10:嗨,,您好,使用viewpager滑动4个framnent时,多次来回滑动会有问题,整个视图都不会显示出来,,
        47c3f6444d00:@还有星星 什么问题。。。
        07b0c4d53d10: @晓峰残月 可以的,明天我整理一下,发至您的邮箱,谢谢!
        晓峰残月:@还有星星 方便的话把源码发我邮箱我看下:823546371@qq.com
      • d148e112948c:添加compile 'com.jwenfeng.pulltorefresh:library:1.0.1'依赖后出现下面的错误
        Error:Execution failed for task ':app:processDebugManifest'.
        > Manifest merger failed with multiple errors, see logs
        d148e112948c:@泡沫上d幻影 你的target SDK版本是多少
        d148e112948c:@晓峰残月 我谷歌了一下,是因为不同sdk不能合并
        晓峰残月:@泡沫上d幻影 改成1.0.3版本试试

      本文标题:Android 下拉刷新上拉加载PullToRefresh

      本文链接:https://www.haomeiwen.com/subject/alkwmttx.html