BGARefreshLayout扩展自定义添加Header和Footer

1.引入下拉刷新库

    compile 'cn.bingoogolapple:bga-refreshlayout:1.1.7@aar'

项目中引入的其他库

   compile 'com.android.support:recyclerview-v7:25.0.1'
   compile 'com.android.support:design:25.0.1'
   compile 'com.android.support:cardview-v7:25.0.1'
  //轮播图使用
    compile 'cn.bingoogolapple:bga-banner:2.1.4@aar'
    //可以添加header和footer的超级adapter
    compile 'cn.bingoogolapple:bga-adapter:1.1.5@aar'
    //类似QQ的滑动Item滑动侧滑菜单
    compile 'cn.bingoogolapple:bga-swipeitemlayout:1.0.4@aar'
   //指示器
    compile 'cn.bingoogolapple:bga-indicator:1.0.1@aar'
    //retrofit
    compile 'com.squareup.retrofit2:retrofit:2.1.0'
    compile 'com.squareup.retrofit2:converter-gson:2.1.0'
    compile 'cn.pedant.sweetalert:library:1.3'
   //glide图片加载器
    compile 'com.github.bumptech.glide:glide:3.7.0'  

2.新建BGAYaTangRefreshViewHolder 继承库文件的抽象类BGARefreshViewHolder

实现其父类的带参数的构造方法和7个抽象方法,重写getLoadMoreFooterView()和getRefreshHeaderView()实现自定义的头部的底部



package cn.bingoogolapple.refreshlayout.demo.asmewill;

import android.content.Context;
import android.graphics.Color;
import android.view.View;
import android.widget.TextView;

import cn.bingoogolapple.refreshlayout.BGARefreshViewHolder;
import cn.bingoogolapple.refreshlayout.demo.R;

/**
 * Created by shuij on 2017/11/11 0011.
 */

public class BGAYaTangRefreshViewHolder extends BGARefreshViewHolder {
    private TextView mHeaderStatusTv;
    private String mPullDownRefreshText = "下拉刷新";
    private String mReleaseRefreshText = "松开刷新";
    private String mRefreshingText = "正在刷新...";
    private boolean mIsLoadingMoreEnabled = true;
    /**
     * 整个加载更多控件的背景颜色资源id
     */
    private int mLoadMoreBackgroundColorRes = -1;
    /**
     * 整个加载更多控件的背景drawable资源id
     */
    private int mLoadMoreBackgroundDrawableRes = -1;

    /**
     * @param context
     * @param isLoadingMoreEnabled 上拉加载更多是否可用
     */
    public BGAYaTangRefreshViewHolder(Context context, boolean isLoadingMoreEnabled) {
        super(context, isLoadingMoreEnabled);
    }
    /****
     * 重新自定义FooterView
     * @return
     */
    @Override
    public View getRefreshHeaderView() {
        if (mRefreshHeaderView == null) {
            mRefreshHeaderView = View.inflate(mContext, R.layout.refresh_head, null);
            mRefreshHeaderView.setBackgroundColor(mContext.getResources().getColor(R.color.Cf2f2f5));
            if (mRefreshViewBackgroundColorRes != -1) {
                mRefreshHeaderView.setBackgroundResource(mRefreshViewBackgroundColorRes);
            }
            if (mRefreshViewBackgroundDrawableRes != -1) {
                mRefreshHeaderView.setBackgroundResource(mRefreshViewBackgroundDrawableRes);
            }
            mHeaderStatusTv = (TextView) mRefreshHeaderView.findViewById(R.id.tipTextView);
            mHeaderStatusTv.setText(mPullDownRefreshText);

        }
        return mRefreshHeaderView;
    }

    /****
     * 重新自定义FooterView
     * @return
     */

    @Override
    public View getLoadMoreFooterView() {
        if (!mIsLoadingMoreEnabled) {
            return null;
        }
        if (mLoadMoreFooterView == null) {
            mLoadMoreFooterView = View.inflate(mContext, R.layout.listview_footer, null);
            mLoadMoreFooterView.setBackgroundColor(Color.TRANSPARENT);
            if (mLoadMoreBackgroundColorRes != -1) {
                mLoadMoreFooterView.setBackgroundResource(mLoadMoreBackgroundColorRes);
            }
            if (mLoadMoreBackgroundDrawableRes != -1) {
                mLoadMoreFooterView.setBackgroundResource(mLoadMoreBackgroundDrawableRes);
            }
            mFooterStatusTv = (TextView) mLoadMoreFooterView.findViewById(R.id.tv_load);
            mFooterStatusTv.setText("拼命"+mLodingMoreText);
        }
        return mLoadMoreFooterView;
    }

    @Override
    public void handleScale(float scale, int moveYDistance) {

    }

    @Override
    public void changeToIdle() {

    }

    @Override
    public void changeToPullDown() {
        mHeaderStatusTv.setText(mPullDownRefreshText);
    }

    @Override
    public void changeToReleaseRefresh() {
        mHeaderStatusTv.setText(mReleaseRefreshText);
    }

    @Override
    public void changeToRefreshing() {
        mHeaderStatusTv.setText(mRefreshingText);
    }

    @Override
    public void onEndRefreshing() {
        mHeaderStatusTv.setText(mPullDownRefreshText);

    }

    /***
     * 设置刷新提示语句
     * @param mRefreshingText
     */

    public void setmRefreshingText(String mRefreshingText) {
        this.mRefreshingText = mRefreshingText;
    }

    public void setmPullDownRefreshText(String mPullDownRefreshText) {
        this.mPullDownRefreshText = mPullDownRefreshText;
    }

    public void setmReleaseRefreshText(String mReleaseRefreshText) {
        this.mReleaseRefreshText = mReleaseRefreshText;
    }

    /***
     * 设置控件的背景资源id
     * @param mLoadMoreBackgroundColorRes
     */

    public void setmLoadMoreBackgroundColorRes(int mLoadMoreBackgroundColorRes) {
        this.mLoadMoreBackgroundColorRes = mLoadMoreBackgroundColorRes;
    }

    public void setmLoadMoreBackgroundDrawableRes(int mLoadMoreBackgroundDrawableRes) {
        this.mLoadMoreBackgroundDrawableRes = mLoadMoreBackgroundDrawableRes;
    }
}

3.使用方法主要代码如下:

  BGAYaTangRefreshViewHolder bgaYaTangRefreshViewHolder=new   BGAYaTangRefreshViewHolder(mApp,true);
        bgaYaTangRefreshViewHolder.setPullDistanceScale(3.0f);
        bgaYaTangRefreshViewHolder.setSpringDistanceScale(1.0f);
        mRefreshLayout.setRefreshViewHolder(bgaYaTangRefreshViewHolder);
        mDataLv.setAdapter(mAdapter);

xml文件:

<cn.bingoogolapple.refreshlayout.BGARefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/refreshLayout"
    style="@style/MatchMatch"
    android:paddingBottom="@dimen/test_padding_margin"
    android:paddingTop="@dimen/test_padding_margin"
    android:background="@color/Cf2f2f5">

    <cn.bingoogolapple.refreshlayout.BGAStickyNavLayout
        style="@style/MatchAuto"
        android:layout_marginBottom="@dimen/test_padding_margin"
        android:layout_marginTop="@dimen/test_padding_margin"
        android:background="@color/test_spacing2"
        android:paddingBottom="@dimen/test_padding_margin"
        android:paddingTop="@dimen/test_padding_margin">

        <TextView
            style="@style/MatchWrap"
            android:layout_marginBottom="@dimen/test_padding_margin"
            android:layout_marginTop="@dimen/test_padding_margin"
            android:background="@color/test_spacing3"
            android:gravity="center"
            android:paddingBottom="50dp"
            android:paddingTop="50dp"
            android:text="顶部视图"
            android:textColor="@android:color/white"
            android:textSize="30sp" />

        <LinearLayout
            style="@style/MatchWrap.Horizontal"
            android:layout_marginBottom="@dimen/test_padding_margin"
            android:layout_marginTop="@dimen/test_padding_margin"
            android:background="@color/colorPrimary"
            android:paddingBottom="5dp"
            android:paddingTop="5dp">

            <TextView
                android:id="@+id/retweet"
                style="@style/AutoWrap"
                android:gravity="center"
                android:text="转发"
                android:textColor="@android:color/white"
                android:textSize="14sp" />

            <TextView
                android:id="@+id/comment"
                style="@style/AutoWrap"
                android:gravity="center"
                android:text="评论"
                android:textColor="@android:color/white"
                android:textSize="14sp" />

            <TextView
                android:id="@+id/praise"
                style="@style/AutoWrap"
                android:gravity="center"
                android:text="赞"
                android:textColor="@android:color/white"
                android:textSize="14sp" />
        </LinearLayout>

        <ListView
            android:id="@+id/data"
            style="@style/MatchMatch"
            android:layout_marginBottom="@dimen/test_padding_margin"
            android:layout_marginTop="@dimen/test_padding_margin"
            android:background="@android:color/white"
            android:divider="@mipmap/list_divider"
            android:overScrollMode="never"
            android:paddingBottom="@dimen/test_padding_margin"
            android:paddingTop="@dimen/test_padding_margin"
            android:scrollbars="none"
            tools:listitem="@layout/item_normal" />

    </cn.bingoogolapple.refreshlayout.BGAStickyNavLayout>
</cn.bingoogolapple.refreshlayout.BGARefreshLayout>

4.自定义效果图如下:

4.1自定义雅堂金融下拉样式头部刷新样式

图片.png

4.1自定义雅堂金融上啦加载样式
图片.png

5.代码参考地址:

https://github.com/Asmewill/BGARefreshLayout-Android-master

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,271评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,725评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,252评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,634评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,549评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,985评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,471评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,128评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,257评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,233评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,235评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,940评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,528评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,623评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,858评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,245评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,790评论 2 339

推荐阅读更多精彩内容