• <code id="58gs9"></code>

      <mark id="58gs9"></mark>
      1. 您好£¬欢迎来到源码搜藏网£¡分享精神£¬快乐你我£¡
        [加入VIP] 设为首页 | 收藏本站 | 网站地图 | Sitemap | TAG标签
      2. 首 页
      3. 在线工具
      4. jquery手册
      5. 当前位置£º首页 > 安卓源码 > 技术博客 >

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

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

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

        这是一个可自定义,多功能,多选择,多神奇的下拉刷新,上拉加载的控件
        刷新加载的动图效果,请看这里哦>源码地址 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 代码段可以?#20048;?#20869;存泄露
            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);//?#25351;?#27809;有更多数据的原始状态,版本 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的标?#20960;?#24230;-->
                <attr name="srlFooterHeight" format="dimension"/> <!--Footer的标?#20960;?#24230;-->
                <attr name="srlHeaderInsetStart" format="dimension"/>
                <attr name="srlFooterInsetStart" format="dimension"/>
                <attr name="srlDragRate" format="float"/>     <!--拖动高度设置-->
                <attr name="srlHeaderMaxDragRate" format="float"/> <!--Header最大拖动高度/Header标?#20960;?#24230;£¨默认2£¬要求>=1£©-->
                <attr name="srlFooterMaxDragRate" format="float"/> <!--Footer最大拖动高度/Footer标?#20960;?#24230;£¨默认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中?#28304;?#37239;炫的刷新头

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

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

        ?#25442;?#25918;动图,实在抱歉,放个截屏凑合一下吧,截图来自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的使用转载

        快速集成MQTT协议到Android客户端,只需要简

        android自定义尺子收集demo

        错误运行app: This version of Android Stu

        android日历收集demo

        android图片上传功能实现

        安卓开发?#22987;Ç¡ª¡ªTabHost组件(一)£¨实现底

        ¡¾Android¡¿BugHD-简单实用的Bug收集工具-

        Android开发轻松自制flyme悬浮球

        解决关于SearchView的样?#25509;?#25511;制问题 Andro

        最完整的Android开发工具集合整理

        Android开发greenDao数据库升级Hepler£¬保

        Android drawText 在指定位置进行画文字

        ´ó¸»ÎÌÆåÅÆÓéÀÖ¹ÙÍø

      6. <code id="58gs9"></code>

          <mark id="58gs9"></mark>

          1. <code id="58gs9"></code>

              <mark id="58gs9"></mark>