您好,欢迎来到源码搜藏网!分享精神,快乐你我!
[加入VIP] 设为首页 | 收藏本站 | 网站地图 | Sitemap | TAG标签
  • 特码历史记录
  • 在线工具
  • jquery手册
  • 特马直播开奖:Android开发下拉刷新、上拉加载SmartRefreshLayout的使用

    时间:2019-02-23 19:46 来源:互联网 作者:源码搜藏 浏览: 次 收藏 挑错 推荐 打印

    这是一个可自定义,多功能,多选择,多神奇的 下拉刷新,上拉加载 的控件 刷新加载的动图效果,请看这里哦源码地址https://github.com/scwang90/SmartRefreshLayout build.gradle 中添加依赖 或者直接下载源代码导入类库 refresh-layout , refresh-header , refre

    特码历史记录 www.lm47u.com 这是一个可自定义,多功能,多选择,多神奇的下拉刷新,上拉加载的控件
    刷新加载的动图效果,请看这里哦>源码地址 https://github.com/scwang90/SmartRefreshLayout

    build.gradle 中添加依赖

          或者直接下载源代码导入类库'refresh-layout','refresh-header','refresh-footer'
    //1.1.0 API改动过大,老用户升级需谨慎
    compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-14'
    compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0-alpha-14'//没有使用特殊Header,可以不加这行
    compile 'com.android.support:appcompat-v7:25.3.1'//版本 23以上(必须)
    
    //1.0.5 当1.1.0出现问题可以回退到1.0.5.1
    compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.5.1'
    compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.0.5.1'//没有使用特殊Header,可以不加这行
    compile 'com.android.support:appcompat-v7:25.3.1'//版本 23以上(必须)
    compile 'com.android.support:design:25.3.1'//版本随意(非必须,引用可以解决无法预览问题)

    Application中全局设置Header 和 Footer

    public class App extends Application {
        //static 代码段可以防止内存泄露
        static {
            //设置全局的Header构建器
            SmartRefreshLayout.setDefaultRefreshHeaderCreator(new DefaultRefreshHeaderCreator() {
                    @Override
                    public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) {
                        layout.setPrimaryColorsId(R.color.colorPrimary, android.R.color.white);//全局设置主题颜色
                        return new ClassicsHeader(context);//.setTimeFormat(new DynamicTimeFormat("更新于 %s"));//指定为经典Header,默认是 贝塞尔雷达Header
                    }
                });
            //设置全局的Footer构建器
            SmartRefreshLayout.setDefaultRefreshFooterCreator(new DefaultRefreshFooterCreator() {
                    @Override
                    public RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) {
                        //指定为经典Footer,默认是 BallPulseFooter
                        return new ClassicsFooter(context).setDrawableSize(20);
                    }
                });
        }
    }

    在XML布局文件中添加 SmartRefreshLayout

    <!--这是基础款,没有添加header,和footer,默认使用经典的刷新和加载-->
    <com.scwang.smartrefresh.layout.SmartRefreshLayout
            android:id="@+id/refreshLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:srlEnableFooterFollowWhenLoadFinished="true"
            app:srlEnableScrollContentWhenLoaded="true"
            android:layout_below="@+id/toolbar"
            >
            <android.support.v7.widget.RecyclerView
                android:id="@+id/recyclerview"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@color/white"
                ></android.support.v7.widget.RecyclerView>
         
        </com.scwang.smartrefresh.layout.SmartRefreshLayout>

    java代码中的使用

    SmartRefreshLayout refreshLayout = view.findViewById(R.id.refreshLayout);
           //刷新的监听事件
            refreshLayout.setOnRefreshListener(new OnRefreshListener() {
                @Override
                public void onRefresh(@NonNull RefreshLayout refreshLayout) {
                    //请求数据
                    refreshLayout.finishRefresh();  //刷新完成 
                }
            });
            //加载的监听事件
            refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
                @Override
                public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
                      refreshLayout.finishLoadMore();      //加载完成 
                      refreshLayout.finishLoadMoreWithNoMoreData();  //全部加载完成,没有数据了调用此方法
                }
            });

    常用的用法

    refreshLayout.autoRefresh(); //自动刷新
    refreshLayout.autoLoadMore(); //自动加载更多
    刷新完成和加载完成分为如下几种情况
    refreshLayout.finishRefresh(); //刷新完成
    refreshLayout.finishRefresh(int delayed); //刷新完成, 参数delayed 设置延时
    refreshLayout.finishLoadMore(); //加载完成
    refreshLayout.finishLoadMore(int delayed); //加载完成, 参数delayed 设置延时
    这两个方法是在加载失败时调用的
    refreshLayout.finishRefresh(false);//结束刷新(刷新失败)
    refreshLayout.finishLoadMore(false); //结束加载(加载失败)

    refreshLayout.finishLoadMoreWithNoMoreData(); //全部加载完成,没有数据了调用此方法
    隐藏刷新加载的方法
    refreshLayout.setEnableLoadMore(false); //隐藏加载,不使用底部加载
    refreshLayout.setEnableRefresh(false); //不使用刷新,隐藏刷新

    refreshLayout.setNoMoreData(false);//恢复没有更多数据的原始状态,版本 1.0.5

    SmartRefreshLayout中的属性讲解

        <attr name="srlDrawableSize" format="dimension"/><!--图片尺寸-->
        <attr name="srlDrawableArrowSize" format="dimension"/><!--箭头图片尺寸-->
        <attr name="srlDrawableProgressSize" format="dimension"/><!--箭头图片尺寸-->
        <attr name="srlDrawableMarginRight" format="dimension"/><!--图片和文字的间距-->
        <attr name="srlTextSizeTitle" format="dimension"/><!--标题字体-->
        <attr name="srlTextSizeTime" format="dimension"/><!--时间字体-->
        <attr name="srlFinishDuration" format="integer"/><!--完成时停留时间-->
        <attr name="srlPrimaryColor" format="color"/><!--主要颜色-->
        <attr name="srlAccentColor" format="color"/><!--强调颜色-->
        <attr name="srlDrawableArrow" format="reference"/><!--箭头图片-->
        <attr name="srlDrawableProgress" format="reference"/><!--转动图片-->
        <attr name="srlEnableHorizontalDrag" format="boolean"/><!--支持水平拖动-->
    
        <attr name="srlClassicsSpinnerStyle" format="enum">
            <enum name="Translate" value="0"/><!--平行移动-->
            <enum name="Scale" value="1"/><!--拉伸形变-->
            <enum name="FixedBehind" value="2"/><!--固定在背后-->
        </attr>
    
        <attr name="layout_srlSpinnerStyle" format="enum">
            <enum name="Translate" value="0"/><!--平行移动-->
            <enum name="Scale" value="1"/><!--拉伸形变-->
            <enum name="FixedBehind" value="2"/><!--固定在背后-->
            <enum name="FixedFront" value="3"/><!--固定在前面-->
            <enum name="MatchLayout" value="4"/><!--填满布局-->
        </attr>
    
     <declare-styleable name="SmartRefreshLayout">
            <attr name="srlPrimaryColor"/>     <!--主题颜色-->
            <attr name="srlAccentColor"/>    <!--强调颜色-->
            <attr name="srlReboundDuration" format="integer"/>  <!--释放后回弹动画时长-->
            <attr name="srlHeaderHeight" format="dimension"/> <!--Header的标准高度-->
            <attr name="srlFooterHeight" format="dimension"/> <!--Footer的标准高度-->
            <attr name="srlHeaderInsetStart" format="dimension"/>
            <attr name="srlFooterInsetStart" format="dimension"/>
            <attr name="srlDragRate" format="float"/>     <!--拖动高度设置-->
            <attr name="srlHeaderMaxDragRate" format="float"/> <!--Header最大拖动高度/Header标准高度(默认2,要求>=1)-->
            <attr name="srlFooterMaxDragRate" format="float"/> <!--Footer最大拖动高度/Footer标准高度(默认2,要求>=1)-->
            <attr name="srlHeaderTriggerRate" format="float"/> <!--设置Header触发刷新距离 与 HeaderHieght 的比率(默认1)-->
            <attr name="srlFooterTriggerRate" format="float"/> <!--设置Footer触发刷新距离 与 FooterHieght 的比率(默认1)-->
            <attr name="srlEnableRefresh" format="boolean"/> <!--是否开启下拉刷新功能(默认true)-->
            <attr name="srlEnableLoadMore" format="boolean"/> <!--是否开启加上拉加载功能(默认true)-->
            <attr name="srlEnableHeaderTranslationContent" format="boolean"/> <!--拖动Header的时候是否同时拖动内容(默认true)-->
            <attr name="srlEnableFooterTranslationContent" format="boolean"/> <!--拖动Footer的时候是否同时拖动内容(默认true)-->
            <attr name="srlHeaderTranslationViewId" format="reference"/>
            <attr name="srlFooterTranslationViewId" format="reference"/>
            <attr name="srlEnablePreviewInEditMode" format="boolean"/> <!--是否在编辑模式时显示预览效果(默认true)-->
            <attr name="srlEnableAutoLoadMore" format="boolean"/>
            <attr name="srlEnableOverScrollBounce" format="boolean"/>
            <attr name="srlEnablePureScrollMode" format="boolean"/>
            <attr name="srlEnableNestedScrolling" format="boolean"/>
            <attr name="srlEnableScrollContentWhenLoaded" format="boolean"/> <!--是否在加载完成之后滚动内容显示新数据-->
            <attr name="srlEnableScrollContentWhenRefreshed" format="boolean"/> <!--是否在刷新完成之后滚动内容显示新数据-->
            <attr name="srlEnableLoadMoreWhenContentNotFull" format="boolean"/>
            <attr name="srlEnableFooterFollowWhenLoadFinished" format="boolean"/>
            <attr name="srlEnableClipHeaderWhenFixedBehind" format="boolean"/>
            <attr name="srlEnableClipFooterWhenFixedBehind" format="boolean"/>
            <attr name="srlEnableOverScrollDrag" format="boolean"/>
            <attr name="srlDisableContentWhenRefresh" format="boolean"/> <!--是否在刷新的时候禁止内容的一切手势操作(默认false)-->
            <attr name="srlDisableContentWhenLoading" format="boolean"/> <!--是否在加载的时候禁止内容的一切手势操作(默认false)-->
            <attr name="srlFixedHeaderViewId" format="reference"/>
            <attr name="srlFixedFooterViewId" format="reference"/>
        </declare-styleable>
    
    

    设置SmartRefreshLayout中自带酷炫的刷新头

    Android开发下拉刷新、上拉加载SmartRefreshLayout的使用

    Android开发下拉刷新、上拉加载SmartRefreshLayout的使用

    不会放动图,实在抱歉,放个截屏凑合一下吧,截图来自smartREfreshLayout的github上

    Android开发下拉刷新、上拉加载SmartRefreshLayout的使用

     <com.scwang.smartrefresh.layout.SmartRefreshLayout
            android:id="@+id/refreshLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:srlEnableFooterFollowWhenLoadFinished="true"
            app:srlEnableScrollContentWhenLoaded="true"
            android:layout_below="@+id/toolbar"
            >
           <!--盒子掉落的样式 -->
            <com.scwang.smartrefresh.header.DropBoxHeader
                android:layout_width="match_parent"
                android:layout_height="wrap_content"/>
            <android.support.v7.widget.RecyclerView
                android:id="@+id/recyclerview"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@color/white"
                ></android.support.v7.widget.RecyclerView>
            <!--经典的加载样式-->
            <com.scwang.smartrefresh.layout.footer.ClassicsFooter
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:srlClassicsSpinnerStyle="Translate" />
        </com.scwang.smartrefresh.layout.SmartRefreshLayout>

    Android开发下拉刷新、上拉加载SmartRefreshLayout的使用

    只是把com.scwang.smartrefresh.header.DropBoxHeader换成了com.scwang.smartrefresh.header.DeliveryHeader

          <!--减少篇幅,其余代码和上图代码块一只,只是DropBoxHeader换成了DeliveryHeader-->
          <!--气球的样式 -->
       <com.scwang.smartrefresh.header.DeliveryHeader
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    

    Android开发下拉刷新、上拉加载SmartRefreshLayout的使用

    
     <com.scwang.smartrefresh.layout.SmartRefreshLayout
            android:id="@+id/refreshLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@android:color/white"
            app:srlHeaderMaxDragRate="2.5"
            app:srlPrimaryColor="@android:color/darker_gray"
            app:srlAccentColor="@android:color/white"
            app:srlEnableLoadMore="false">
            <!--srlHeaderMaxDragRate=2.5时候WaterDropHeader的下拉效果最好-->
             <!--苹果水滴的样式-->
            <com.scwang.smartrefresh.header.WaterDropHeader
                android:layout_width="match_parent"
                android:layout_height="wrap_content"/>
     </com.scwang.smartrefresh.layout.SmartRefreshLayout

    Android开发下拉刷新、上拉加载SmartRefreshLayout的使用

          <!--全屏水波的样式 -->
       <com.scwang.smartrefresh.header.WaveSwipeHeader
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

    Android开发下拉刷新、上拉加载SmartRefreshLayout的使用

          <!--金色校园的样式 -->
       <com.scwang.smartrefresh.header.PhoenixHeader
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

    截图直接看效果吧,虽说不是动图,意思一下

    Android开发下拉刷新、上拉加载SmartRefreshLayout的使用

    Android开发下拉刷新、上拉加载SmartRefreshLayout的使用

    贝塞尔雷达是在刷新包中 com.scwang.smartrefresh.layout.header.BezierRadarHeader

    Android开发下拉刷新、上拉加载SmartRefreshLayout的使用

    Android开发下拉刷新、上拉加载SmartRefreshLayout的使用

    Android开发下拉刷新、上拉加载SmartRefreshLayout的使用

    Android开发下拉刷新、上拉加载SmartRefreshLayout的使用

    Android开发下拉刷新、上拉加载SmartRefreshLayout的使用

    Android开发下拉刷新、上拉加载SmartRefreshLayout的使用转载//www.lm47u.com/appboke/39558.html
    1| 145| 232| 170| 413| 338| 627| 833| 777| 394|