SmartRefreshLayout---“智能”下拉刷新布局

本文介绍了在Android项目中使用SmartRefreshLayout实现下拉刷新的功能,包括如何添加依赖、配置布局文件,以及在不使用上拉加载更多的场景下进行业务集成。SmartRefreshLayout提供了与RecyclerView的无缝配合,支持自定义Header/Footer,并且能在Android Studio的Xml编辑器中预览效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目中用到下拉刷新的频率可以说非常高,今天总结一下自己项目中用到的下拉刷新的点。

  1. 结合RecyclerView使用
  2. 自定义Header/Footer
  3. 可以在Android Studio Xml 编辑器中预览

使用:

添加依赖

compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.1'
compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.0.1'//如果使用了特殊的Header

布局文件

        <com.scwang.smartrefresh.layout.SmartRefreshLayout
            android:id="@+id/refreshLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginLeft="2dp"
            android:layout_marginRight="2dp"
            android:orientation="vertical"
            app:srlEnableHeaderTranslationContent="true"
            app:srlEnableLoadmore="false">

            <cn.reschool.parent.widget.StoreHouseHeader
                android:layout_width="match_parent"
                android:layout_height="100dp"
                android:background="@color/view_bg"
                app:shhLineWidth="2dp"
                app:shhText="Re School" />

            <android.support.v7.widget.RecyclerView
                android:id="@+id/list"
                android:name="cn.reschool.parent.ui.activity.MomentActivity"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                app:layoutManager="LinearLayoutManager"
                tools:context="cn.reschool.parent.ui.activity.MomentActivity" />

            <com.scwang.smartrefresh.layout.footer.ClassicsFooter
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />
        </com.scwang.smartrefresh.layout.SmartRefreshLayout>


业务(我的业务中,不进行上拉加载更多)

        mRefreshLayout.setOnRefreshListener(new OnRefreshListener() {
            @Override
            public void onRefresh(RefreshLayout refreshlayout) {
                requestData();
            }
        });

        mRefreshLayout.setOnLoadmoreListener(new OnLoadmoreListener() {
            @Override
            public void onLoadmore(RefreshLayout refreshlayout) {
                mRefreshLayout.finishLoadmore(2000);
            }
        });


属性 Attributes

名称-name格式-format描述-description
srlPrimaryColorcolor主题颜色
srlAccentColorcolor强调颜色
srlReboundDurationinteger释放后回弹动画时长
srlHeaderHeightdimensionHeader的标准高度
srlFooterHeightdimensionFooter的标准高度
srlDragRatefloat显示拖动高度/真实拖动高度(默认0.5,阻尼效果)
srlHeaderMaxDragRatefloatHeader最大拖动高度/Header标准高度(默认2,要求>=1)
srlFooterMaxDragRatefloatFooter最大拖动高度/Footer标准高度(默认2,要求>=1)
srlEnableRefreshboolean是否开启下拉刷新功能(默认true)
srlEnableLoadmoreboolean是否开启加上拉加载功能(默认true)
srlEnableHeaderTranslationContentboolean拖动Header的时候是否同时拖动内容(默认true)
srlEnableFooterTranslationContentboolean拖动Footer的时候是否同时拖动内容(默认true)
srlEnablePreviewInEditModeboolean是否在编辑模式时显示预览效果(默认true)
srlDisableContentWhenRefreshboolean是否在刷新的时候禁止内容的一切手势操作(默认false)
srlDisableContentWhenLoadingboolean是否在加载的时候禁止内容的一切手势操作(默认false)

方法 Method

名称-name格式-format描述-description
setPrimaryColorscolors主题\强调颜色
setPrimaryColorsIdcolors主题\强调颜色资源Id
setReboundDurationinteger释放后回弹动画时长
setHeaderHeightdimensionHeader的标准高度(px/dp 两个版本)
setFooterHeightdimensionFooter的标准高度(px/dp 两个版本)
setDragRatefloat显示拖动高度/真实拖动高度(默认0.5,阻尼效果)
setHeaderMaxDragRatefloatHeader最大拖动高度/Header标准高度(默认2,要求>=1)
setFooterMaxDragRatefloatFooter最大拖动高度/Footer标准高度(默认2,要求>=1)
setEnableRefreshboolean是否开启下拉刷新功能(默认true)
setEnableLoadmoreboolean是否开启加上拉加载功能(默认true)
setEnableHeaderTranslationContentboolean拖动Header的时候是否同时拖动内容(默认true)
setEnableFooterTranslationContentboolean拖动Footer的时候是否同时拖动内容(默认true)
setEnableAutoLoadmoreboolean是否监听列表滚动到底部时触发加载事件
setDisableContentWhenRefreshboolean是否在刷新的时候禁止内容的一切手势操作(默认false)
setDisableContentWhenLoadingboolean是否在加载的时候禁止内容的一切手势操作(默认false)
setReboundInterpolatorInterpolator设置回弹动画的插值器
setRefreshHeaderRefreshHeader设置指定的Header
setRefreshFooterRefreshFooter设置指定的Footer
setOnRefreshListenerOnRefreshListener设置刷新监听器
setOnLoadmoreListenerOnLoadmoreListener设置加载监听器
setOnRefreshLoadmoreListenerOnRefreshLoadmoreListener同时设置上面两个监听器
setOnMultiPurposeListenerOnMultiPurposeListener设置多功能监听器
setLoadmoreFinishedboolean设置全部数据加载完成,之后不会触发加载事件
finishRefresh(int delayed)完成刷新,结束刷新动画
finishLoadmore(int delayed)完成加载,结束加载动画
getRefreshHeaderRefreshHeader获取Header
getRefreshFooterRefreshFooter获取Footer
getStateRefreshState获取当前状态
isRefreshingboolean是否正在刷新
isLoadingboolean是否正在加载
autoRefresh(int delayed)触发自动刷新
autoLoadmore(int delayed)触发自动加载


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值