1. <div id="f8mbs"></div>
        您好,歡迎來到源碼搜藏網!分享精神,快樂你我!
        [加入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 代碼段可以防止內存泄露
            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的使用轉載http://www.rhcg.tw/appboke/39558.html
        標簽:網站源碼
        辽宁十一选五单双