我的Android下拉刷新框架KKRefreshLayout

KKRefreshLayout

git, 喜欢的话来个star吧

一个下拉刷新框架。已有很多开源刷新工具,但是还找到一个方便自定义,可扩展的。所以自己造个轮子。
还是先写个中文文档就好了.
- 支持自定义下拉/上拉动画
- 支持无数据时上拉显示”没有更多”(可自定义)
- 支持显示满屏的加载动画(如首次没有数据的动画)
- 支持滑动到底部,自动加载
- 支持横向/纵向刷新

Set-up

Gradle:

compile 'net.z0kai:kkrefreshlayout:0.2.1'

or Maven:

<dependency>
  <groupId>net.z0kai</groupId>
  <artifactId>kkrefreshlayout</artifactId>
  <version>0.2.1</version>
  <type>pom</type>
</dependency>

Demo apk下载

目前遇到的使用案例大部分都会添加到demo中
- 各种动画刷新
- 第一次进入页面没数据需要一个加载动画
- 横向弹性跳转更多页面
- 页面上下拉弹性滑动(像iOS弹性效果)
- 如微信各种中心也,一半图片下拉回弹效果

使用方式

推荐自己集成于KKRefreshLayout如下(全局使用),然后可以自定义刷新样式。若不继承则使用默认样式。

/**
 * Created by Z_0Kai on 16/9/30.
 * APP封装新控件,请尽量不要使用到原来刷新控件的接口,封装后方便替换
 */
public class AppRefreshLayout extends KKRefreshLayout {

    private AppRefreshLayoutListener mListener;

    public AppRefreshLayout(Context context) {
        this(context, null);
    }

    public AppRefreshLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public void startRefresh() {
        super.startRefresh();
    }

    public void startLoadMore() {
        super.startLoadMore();
    }

    public void finishRefresh() {
        super.finishRefresh();
    }

    public void finishLoadMore() {
        super.finishLoadMore();
    }

    public void setRefreshEnable(boolean enable) {
        super.setRefreshEnable(enable);
    }

    public void setLoadMoreEnable(boolean enable) {
        super.setLoadMoreEnable(enable);
    }

    public interface AppRefreshLayoutListener {
        void onRefresh();

        void onLoadMore();
    }

    public static class AppRefreshLayoutAdapter implements AppRefreshLayoutListener {
        public void onRefresh() {
        }

        public void onLoadMore() {
        }
    }

    public void setRefreshLayoutListener(AppRefreshLayoutListener listener) {
        mListener = listener;

        super.setRefreshListener(new KKRefreshListener() {
            @Override
            public void onRefresh() {
                if (mListener != null) {
                    mListener.onRefresh();
                }
            }

            @Override
            public void onLoadMore() {
                if (mListener != null) {
                    mListener.onLoadMore();
                }
            }
        });
    }

    /**
     * @hide
     * @deprecated
     */
    @Override
    public void setRefreshListener(KKRefreshListener listener) {
        super.setRefreshListener(listener);
    }
}
  • obtainHeaderView 自定义顶部刷新样式
  • obtainFooterView 自定义上拉样式
  • obtainPageView 自定义页面刷新样式(无默认)

也可以在界面create的时候单独设置

  • setHeadView 设置下拉刷新样式
  • setFooterView 设置上拉加载样式
  • setPageView 设置页面加载效果

布局

<net.z0kai.kkrefreshlayout.KKRefreshLayout
    android:id="@+id/refreshLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:rlLoadMoreEnable="true">
    // one child view
</net.z0kai.kkrefreshlayout.KKRefreshLayout>

布局中设置属性

  • app:rlOrientation="horizontal/vertical" 横向纵向刷新
  • app:rlRefreshEnable="true/false" 是否可下拉刷新

- app:rlLoadMoreEnable="true/false" 是否加载更多

Listener

onRefresh()
onLoadMore()

贡献你的刷新样式

欢迎提交自定义的Header/Footer/PageView到demo中,添加class到
AppConfigs.java

详情请看github

基于SwipeRefreshLayout下拉刷新上拉加载。支持所有的AbsListView、RecycleView 特点  在 layout 中使用,支持 AbsListView 所有的xml属性  支持自动下拉刷新,什么用呢?比如进入界面时,只需要调用 autoRefresh() 方法即可,同时下拉刷新回调函数将会被调用。  上拉加载支持自定义 View 或设置加载文字、动画  轻松设置 Adapter 空数据视图,默认为 TextView 支持更文字,也可自定义 View  对于简单的界面,如只有 ListView 可以继承 app 包中 Fragment 轻松搞定 效果图 使用 仔细看 listSelector 属性,效果见 sample <com.mylhyl.prlayout.SwipeRefreshListView xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:id="@ id/swipeRefresh"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:listSelector="@drawable/selector_list"     tools:context=".app.ListViewXmlFragment" /> 设置上拉加载,更多方法见 IFooterLayout         IFooterLayout footerLayout = swipeRefreshListView.getFooterLayout();         footerLayout.setFooterText("set自定义加载");         footerLayout.setIndeterminateDrawable(getResources().getDrawable(R.drawable.footer_progressbar)); 自定义adapter空数据视图         ImageView emptyView = new ImageView(getContext());         emptyView.setImageResource(R.mipmap.empty);         swipeRefreshGridView.setEmptyView(emptyView); 或         swipeRefreshListView.setEmptyText("数据呢?"); 使用Gradle构建时添加一下依赖即可: compile 'com.mylhyl:pullrefreshlayout:1.0.0' QQ交流群:435173211
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值