GithubHelp home page GithubHelp logo

82367825 / refreshlayout Goto Github PK

View Code? Open in Web Editor NEW
3.0 2.0 1.0 169 KB

下拉刷新框架 模仿SwipeRefreshLayout原理实现,SwipeRefreshLayout支持的控件,基本上RefreshLayout都支持,包括ListView, RecyclerView, ScrollView, TextView等。

Java 100.00%

refreshlayout's Introduction

下拉刷新库RefreshLayout介绍

相关博客介绍:http://blog.csdn.net/z82367825/article/details/77883660

如何引入

在build.gradle文件中加入

compile 'com.zero.refreshlayout.library:RefreshLayout:1.0.2'

简单使用

首先是xml代码:

    <com.zero.refreshlayout.library.RefreshLayout
        android:id="@+id/refresh_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        
        <TextView
            android:id="@+id/text_view"
            android:text="text"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
        
    </com.zero.refreshlayout.library.RefreshLayout>

在java代码设置相关的属性,并且设置监听器

mRefreshLayout = (RefreshLayout) findViewById(R.id.refresh_layout);
mRefreshLayout.setHeaderView(new TextHeaderView(this));
mRefreshLayout.setFooterView(new TextFooterView(this));
mRefreshLayout.setRefreshListener(new RefreshListener() {
            @Override
            public void onRefresh() {
                MainThreadHandler.execute(new Runnable() {
                    @Override
                    public void run() {
                        mRefreshLayout.finishRefresh();
                    }
                }, 2000);
            }

            @Override
            public void onLoadMore() {
                MainThreadHandler.execute(new Runnable() {
                    @Override
                    public void run() {
                        mRefreshLayout.finishLoadMore();
                    }
                }, 2000);
            }
        });

更多的开放API:

  • void finishRefresh() 结束下拉刷新状态
  • void finishLoadMore() 结束上拉加载状态
  • void setHeaderViewHeight(int headerViewHeight) 设置HeaderView的高度,如果不设置的话,HeaderView默认为wrap_content
  • void setFooterViewHeight(int footerViewHeight) 设置FooterView的高度,如果不设置的话,FooterView默认为wrap_content
  • setHeaderViewMaxPullDistance(int headerViewMaxPullDistance) 设置下拉最大拉伸长度,如果不设置的话,默认为HeaderView高度的2.5倍
  • setFooterViewMaxPullDistance(int footerViewMaxPullDistance) 设置上拉最大拉伸长度,如果不设置的话,默认为FooterView高度的2.5倍
  • void setHeaderViewEnable(boolean headerViewEnable) 设置HeaderView是否可用
  • void setFooterViewEnable(boolean footerViewEnable) 设置FooterView是否可用
  • void setDragObstruction(float dragObstruction) 设置拖拽阻力,传值范围为0f-1f,值越小,代表阻力越大,如果不设置,默认为0.75f

个性化使用

1)布局样式多样化

如果你对视图的布局样式不喜欢,这里暂时提供了另外两种布局样式。

如何切换布局样式,只需要调用

void setRefreshMode(RefreshMode refreshMode)

默认样式 RefreshMode.LINEAR

mRefreshLayout.setRefreshMode(RefreshMode.LINEAR);

这里写图片描述

覆盖样式 RefreshMode.COVER_LAYOUT_FRONT (布局覆盖在下拉控件之前)

mRefreshLayout.setRefreshMode(RefreshMode.COVER_LAYOUT_FRONT);

这里写图片描述

覆盖样式 RefreshMode.COVER_LAYOUT_BEHIND (布局被下拉控件覆盖)

mRefreshLayout.setRefreshMode(RefreshMode.COVER_LAYOUT_BEHIND);

这里写图片描述

2) 定制HeaderView以及FooterView

最重要当然是自己定制HeaderView以及FooterView,通过下面简单的例子我们就能轻松看懂

所有的HeaderView都必须继承AbsHeaderView, 所有的FooterView都必须继承AbsFooterView,我们看到,这里实现了一个TextHeaderView类

public class TextHeaderView extends AbsHeaderView {

    private TextView mTextView;
    
    public TextHeaderView(Context context) {
        super(context);
        mTextView = new TextView(context);
        mTextView.setBackgroundColor(0xFFFFFFFF);
        mTextView.setTextColor(0xFF000000);
        mTextView.setTextSize(20);
        mTextView.setPadding(50, 50, 50, 50);
        mTextView.setGravity(Gravity.CENTER);
        mTextView.setText("下拉刷新");
    }

    @Override
    public View getContentView() {
        return mTextView;
    }

    @Override
    public void onPullDown(float fraction) {
        mTextView.setText("下拉刷新");
    }

    @Override
    public void onFinishPullDown(float fraction) {
        
    }

    @Override
    public void onRefreshing() {
        mTextView.setText("刷新...");
    }
}

  • AbsHeaderView#onPullDown HeaderView正在被下拉时调用,fraction参数为HeaderView完全显示的比例
  • AbsHeaderView#onFinishPullDown HeaderView被松手弹回,fraction参数为HeaderView完全显示的比例
  • AbsHeaderView#onRefreshing HeaderView在处于刷新状态

3)默认提供的HeaderView,FooterView主题

如果我们只是想快速使用,可以使用现成的HeaderView以及FooterView, RefreshLayout暂时提供了几个样式

mRefreshLayout.setHeaderView(new BezierWaveHeader(this));
mRefreshLayout.setFooterView(new BezierWaveFooter(this));

这里写图片描述

mRefreshLayout.setHeaderView(new SquareSpreadHeader(this));
mRefreshLayout.setFooterView(new SquareSpreadFooter(this));

这里写图片描述

更新历史

  • v1.0.2 新增RefreshLayout#setDragObstruction(float dragObstruction)方法
  • v1.0.1   修复bug

Contact Me

e-mail: [email protected]

refreshlayout's People

Contributors

82367825 avatar

Stargazers

UaoanLao avatar  avatar  avatar

Watchers

James Cloos avatar  avatar

Forkers

asurahang

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.