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滑動側(cè)滑菜單
    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

實現(xiàn)其父類的帶參數(shù)的構(gòu)造方法和7個抽象方法,重寫getLoadMoreFooterView()和getRefreshHeaderView()實現(xiàn)自定義的頭部的底部



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);

    }

    /***
     * 設(shè)置刷新提示語句
     * @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;
    }

    /***
     * 設(shè)置控件的背景資源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="轉(zhuǎn)發(fā)"
                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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市案训,隨后出現(xiàn)的幾起案子神郊,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件响巢,死亡現(xiàn)場離奇詭異厅缺,居然都是意外死亡,警方通過查閱死者的電腦和手機楚午,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門昭齐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人醒叁,你說我怎么就攤上這事司浪。” “怎么了把沼?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵啊易,是天一觀的道長。 經(jīng)常有香客問我饮睬,道長租谈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮割去,結(jié)果婚禮上窟却,老公的妹妹穿的比我還像新娘。我一直安慰自己呻逆,他們只是感情好夸赫,可當(dāng)我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著咖城,像睡著了一般茬腿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宜雀,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天切平,我揣著相機與錄音,去河邊找鬼辐董。 笑死悴品,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的简烘。 我是一名探鬼主播苔严,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼夸研!你這毒婦竟也來了邦蜜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤亥至,失蹤者是張志新(化名)和其女友劉穎悼沈,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體姐扮,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡絮供,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了茶敏。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壤靶。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖惊搏,靈堂內(nèi)的尸體忽然破棺而出贮乳,到底是詐尸還是另有隱情,我是刑警寧澤恬惯,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布向拆,位于F島的核電站,受9級特大地震影響酪耳,放射性物質(zhì)發(fā)生泄漏浓恳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望颈将。 院中可真熱鬧梢夯,春花似錦、人聲如沸晴圾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽死姚。三九已至沾凄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間知允,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工叙谨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留温鸽,地道東北人。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓手负,卻偏偏與公主長得像涤垫,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子竟终,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容