SmartRefreshLayout使用

一萄涯、前言:

SmartRefreshLayout是一個(gè)“聰明”或者“智能”的下拉刷新布局绪氛,由于它的“智能”,它不只是支持所有的View涝影,還支持多層嵌套的視圖結(jié)構(gòu)枣察。它繼承自ViewGroup 而不是FrameLayout或LinearLayout,提高了性能燃逻。 也吸取了現(xiàn)在流行的各種刷新布局的優(yōu)點(diǎn)序目,包括谷歌官方的 SwipeRefreshLayout,其他第三方的 Ultra-Pull-To-Refresh唆樊、TwinklingRefreshLayout宛琅。還集成了各種炫酷的 Header 和 Footer。 SmartRefreshLayout的目標(biāo)是打造一個(gè)強(qiáng)大逗旁,穩(wěn)定嘿辟,成熟的下拉刷新框架,并集成各種的炫酷片效、多樣红伦、實(shí)用、美觀的Header和Footer淀衣。

SmartRefreshLayout官網(wǎng)

二昙读、使用:

1. 導(dǎo)入依賴:

在build.gradle中添加依賴

//V7包版本
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-28'
implementation 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0-alpha-28'//沒有使用特殊Header,可以不加這行
implementation 'com.android.support:appcompat-v7:25.3.1'//版本 23以上(必須)

//androidx 版本
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-andx-11'
implementation 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0-andx-11'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'

2. 使用指定的Header和Footer

-方法一:全局設(shè)置(優(yōu)先級最低膨桥,會(huì)被下面兩種方法取代)

public class App extends Application {
   //static 代碼段可以防止內(nèi)存泄露
    //static 代碼段可以防止內(nèi)存泄露
    static {
        //設(shè)置全局的Header構(gòu)建器
        SmartRefreshLayout.setDefaultRefreshHeaderCreator(new DefaultRefreshHeaderCreator() {
            @Override
            public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) {
                layout.setPrimaryColorsId(R.color.color_FFFAFAFA, R.color.color_FF00000);//全局設(shè)置主題顏色
                ClassicsHeader classicsHeader = new ClassicsHeader(context);
                return classicsHeader;////指定為經(jīng)典Header蛮浑,默認(rèn)是 貝塞爾雷達(dá)Header
            }
        });
        //設(shè)置全局的Footer構(gòu)建器
        SmartRefreshLayout.setDefaultRefreshFooterCreator(new DefaultRefreshFooterCreator() {
            @Override
            public RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) {
                //指定為經(jīng)典Footer,默認(rèn)是 BallPulseFooter
                ClassicsFooter classicsFooter = new ClassicsFooter(context);
                classicsFooter.setDrawableSize(20);
                //底部加載動(dòng)畫和布局
                classicsFooter.setVisibility(View.GONE);
                //內(nèi)容不滿一頁時(shí)不能開啟上拉加載功能
                layout.setEnableLoadMoreWhenContentNotFull(false);
                return classicsFooter;
            }
        });
    }
}
  • 方法二 XML布局文件指定(優(yōu)先級中等只嚣,會(huì)被方法三覆蓋)
<com.scwang.smartrefresh.layout.SmartRefreshLayout
   xmlns:app="http://schemas.android.com/apk/res-auto"
   android:id="@+id/refreshLayout"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:background="#444444"
   app:srlPrimaryColor="#444444"
   app:srlAccentColor="@android:color/white"
   app:srlEnablePreviewInEditMode="true">
   <!--srlAccentColor srlPrimaryColor 將會(huì)改變 Header 和 Footer 的主題顏色-->
   <!--srlEnablePreviewInEditMode 可以開啟和關(guān)閉預(yù)覽功能-->
   <com.scwang.smartrefresh.layout.header.ClassicsHeader
       android:layout_width="match_parent"
       android:layout_height="wrap_content"/>
   <TextView
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:padding="@dimen/padding_common"
       android:background="@android:color/white"
       android:text="@string/description_define_in_xml"/>
   <com.scwang.smartrefresh.layout.footer.ClassicsFooter
       android:layout_width="match_parent"
       android:layout_height="wrap_content"/>
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
  • 方法三 Java代碼設(shè)置(優(yōu)先級最高)
final RefreshLayout refreshLayout = (RefreshLayout) findViewById(R.id.refreshLayout);
//設(shè)置 Header 為 貝塞爾雷達(dá) 樣式
refreshLayout.setRefreshHeader(new BezierRadarHeader(this).setEnableHorizontalDrag(true));
//設(shè)置 Footer 為 球脈沖 樣式
refreshLayout.setRefreshFooter(new BallPulseFooter(this).setSpinnerStyle(SpinnerStyle.Scale));

三呀打、各種效果和顯示操作:

1敦第、默認(rèn)使用

布局:根布局為LinearLayout,SmartRefreshLayout直接包裹一個(gè)RecyclerView

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <com.scwang.smartrefresh.layout.SmartRefreshLayout
        android:id="@+id/refreshLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <android.support.v7.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#fff"
            android:overScrollMode="never" />
    </com.scwang.smartrefresh.layout.SmartRefreshLayout>
</LinearLayout>

代碼:設(shè)置刷新監(jiān)聽,下拉刷新功能默認(rèn)是打開的:mRefreshLayout.setEnableRefresh(true);

RefreshLayout mRefreshLayout = findViewById(R.id.refreshLayout);
mRefreshLayout.setOnRefreshListener(new OnRefreshListener() {
            @Override
            public void onRefresh(@NonNull RefreshLayout refreshLayout) {
                 List<String>  data = initDatas();
                 Message message = new Message();
                 message.what = 1 ;
                 message.obj = data ;
                 mHandler.sendMessageDelayed(message,2000);
            }
        });

設(shè)置加載監(jiān)聽抄邀,加載更多功能默認(rèn)為關(guān)閉:mRefreshLayout.setEnableLoadMore(false);宣鄙,如果設(shè)置監(jiān)聽會(huì)打開加載更多功能:

 RefreshLayout mRefreshLayout = findViewById(R.id.refreshLayout);
        mRefreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
            @Override
            public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
                List<String>  data = initDatas();
                Message message = new Message();
                message.what = 2;
                message.obj = data ;
                mHandler.sendMessageDelayed(message,2000);
            }
        });
    private Handler mHandler = new Handler(new Handler.Callback() {
        @Override
        public boolean handleMessage(Message msg) {
            switch (msg.what){
                case 1:         //刷新加載
                    List<String> mList  = (List<String>) msg.obj;
                    mRefreshLayout.finishRefresh(true);
                    adapter.setDatas(mList);
                    break;
                case 2:         //加載更多
                    List<String> mLoadMoreDatas = (List<String>) msg.obj;
                    mRefreshLayout.finishLoadMore(true);
                    adapter.addMoreValue(mLoadMoreDatas);
                    break;
            }
            return false;
        }
    });

顯示的效果:


上拉刷新.png
下拉加載.png

2写烤、經(jīng)典風(fēng)格

布局

 <com.scwang.smartrefresh.layout.SmartRefreshLayout
        android:id="@+id/refreshLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <com.scwang.smartrefresh.layout.header.ClassicsHeader
            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="#fff"
            android:overScrollMode="never" />
        <com.scwang.smartrefresh.layout.footer.ClassicsFooter
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:srlClassicsSpinnerStyle="Translate"/>
    </com.scwang.smartrefresh.layout.SmartRefreshLayout>
經(jīng)典效果.png

在其中可以根據(jù)需要進(jìn)行各種屬性設(shè)置焰扳;
注:在設(shè)置屬性時(shí),代碼中針對文字大小使用的是sp藐石,故有特殊需求的需要改變設(shè)置:
如不隨系統(tǒng)字體大小改變的實(shí)現(xiàn)方式即供,或自己設(shè)置dp:((TextView)header.findViewById(ClassicsHeader.ID_TEXT_TITLE)).setTextSize(TypedValue.COMPLEX_UNIT_DIP,16);

3、 FalsifyHeader 虛假的Header于微,用于 真正的 Header 在RefreshLayout外部時(shí)逗嫡,使用本虛假的FalsifyHeader填充在RefreshLayout內(nèi)部办素,具體使用方法參考紙飛機(jī);

單獨(dú)使用FalsifyHead的效果為在下拉時(shí)出現(xiàn)空白下拉布局祸穷,這個(gè)也是可以監(jiān)聽下拉滴:

444.png

FalsifyFooter 上拉加載和Falsifyheader是一樣的空白背景效果,是可以拉動(dòng)監(jiān)聽的

4勺三、自定義Header可以參考Demo中的使用-Custom

5雷滚、淘寶二樓header TwoLevelHeader,參考demo中實(shí)戰(zhàn)-淘寶二樓

下面的為特殊樣式header吗坚,需要引用:com.scwang.smartrefresh:SmartRefreshHeader:1.1.0-alpha-14

6祈远、飛行氣球:DeliveryHeader

7、掉落盒子:DropBoxHeader

8商源、全屏水滴:WaveSwipeHeader

9车份、官方下拉Meterial:MaterialHeader

10、顏色閃爍漸變頭:StoreHouseHeader

11牡彻、戰(zhàn)爭城市游戲頭:FunGameBattleCityHeader

12扫沼、打磚塊游戲:FunGameHitBlockHeader

13、彈出圓圈加載:BezierCircleHeader

14庄吼、沖上云霄:TaurusHeader

15缎除、金色校園:PhoenixHeader

四、 官網(wǎng)給的一些設(shè)置屬性方法

代碼总寻、xml設(shè)置和Classics的一些屬性設(shè)置方法

1器罐、全局設(shè)置:

1、SmartRefreshLayout

// java代碼設(shè)置
public class RefreshActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        //下面示例中的值等于默認(rèn)值
        RefreshLayout refreshLayout = (RefreshLayout)findViewById(R.id.refreshLayout);
        refreshLayout.setPrimaryColorsId(R.color.colorPrimary, android.R.color.white);
        refreshLayout.setDragRate(0.5f);//顯示下拉高度/手指真實(shí)下拉高度=阻尼效果
        refreshLayout.setReboundDuration(300);//回彈動(dòng)畫時(shí)長(毫秒)

        refreshLayout.setHeaderHeight(100);//Header標(biāo)準(zhǔn)高度(顯示下拉高度>=標(biāo)準(zhǔn)高度 觸發(fā)刷新)
        refreshLayout.setHeaderHeightPx(100);//同上-像素為單位 (V1.1.0刪除)
        refreshLayout.setFooterHeight(100);//Footer標(biāo)準(zhǔn)高度(顯示上拉高度>=標(biāo)準(zhǔn)高度 觸發(fā)加載)
        refreshLayout.setFooterHeightPx(100);//同上-像素為單位 (V1.1.0刪除)

        refreshLayout.setFooterHeaderInsetStart(0);//設(shè)置 Header 起始位置偏移量 1.0.5
        refreshLayout.setFooterHeaderInsetStartPx(0);//同上-像素為單位 1.0.5 (V1.1.0刪除)
        refreshLayout.setFooterFooterInsetStart(0);//設(shè)置 Footer 起始位置偏移量 1.0.5
        refreshLayout.setFooterFooterInsetStartPx(0);//同上-像素為單位 1.0.5 (V1.1.0刪除)

        refreshLayout.setHeaderMaxDragRate(2);//最大顯示下拉高度/Header標(biāo)準(zhǔn)高度
        refreshLayout.setFooterMaxDragRate(2);//最大顯示下拉高度/Footer標(biāo)準(zhǔn)高度
        refreshLayout.setHeaderTriggerRate(1);//觸發(fā)刷新距離 與 HeaderHeight 的比率1.0.4
        refreshLayout.setFooterTriggerRate(1);//觸發(fā)加載距離 與 FooterHeight 的比率1.0.4

        refreshLayout.setEnableRefresh(true);//是否啟用下拉刷新功能
        refreshLayout.setEnableLoadMore(false);//是否啟用上拉加載功能
        refreshLayout.setEnableAutoLoadMore(true);//是否啟用列表慣性滑動(dòng)到底部時(shí)自動(dòng)加載更多
        refreshLayout.setEnablePureScrollMode(false);//是否啟用純滾動(dòng)模式
        refreshLayout.setEnableNestedScroll(false);//是否啟用嵌套滾動(dòng)
        refreshLayout.setEnableOverScrollBounce(true);//是否啟用越界回彈
        refreshLayout.setEnableScrollContentWhenLoaded(true);//是否在加載完成時(shí)滾動(dòng)列表顯示新的內(nèi)容
        refreshLayout.setEnableHeaderTranslationContent(true);//是否下拉Header的時(shí)候向下平移列表或者內(nèi)容
        refreshLayout.setEnableFooterTranslationContent(true);//是否上拉Footer的時(shí)候向上平移列表或者內(nèi)容
        refreshLayout.setEnableLoadMoreWhenContentNotFull(true);//是否在列表不滿一頁時(shí)候開啟上拉加載功能
        refreshLayout.setEnableFooterFollowWhenLoadFinished(false);//是否在全部加載結(jié)束之后Footer跟隨內(nèi)容1.0.4
        refreshLayout.setEnableOverScrollDrag(false);//是否啟用越界拖動(dòng)(仿蘋果效果)1.0.4

        refreshLayout.setEnableScrollContentWhenRefreshed(true);//是否在刷新完成時(shí)滾動(dòng)列表顯示新的內(nèi)容 1.0.5
        refreshLayout.srlEnableClipHeaderWhenFixedBehind(true);//是否剪裁Header當(dāng)時(shí)樣式為FixedBehind時(shí)1.0.5
        refreshLayout.srlEnableClipFooterWhenFixedBehind(true);//是否剪裁Footer當(dāng)時(shí)樣式為FixedBehind時(shí)1.0.5

        refreshLayout.setDisableContentWhenRefresh(false);//是否在刷新的時(shí)候禁止列表的操作
        refreshLayout.setDisableContentWhenLoading(false);//是否在加載的時(shí)候禁止列表的操作

        refreshLayout.setOnMultiPurposeListener(new SimpleMultiPurposeListener());//設(shè)置多功能監(jiān)聽器
        refreshLayout.setScrollBoundaryDecider(new ScrollBoundaryDecider());//設(shè)置滾動(dòng)邊界判斷
        refreshLayout.setScrollBoundaryDecider(new ScrollBoundaryDeciderAdapter());//自定義滾動(dòng)邊界

        refreshLayout.setRefreshHeader(new ClassicsHeader(context));//設(shè)置Header
        refreshLayout.setRefreshFooter(new ClassicsFooter(context));//設(shè)置Footer
        refreshLayout.setRefreshContent(new View(context));//設(shè)置刷新Content(用于非xml布局代替addView)1.0.4

        refreshLayout.autoRefresh();//自動(dòng)刷新
        refreshLayout.autoLoadMore();//自動(dòng)加載
        refreshLayout.autoRefresh(400);//延遲400毫秒后自動(dòng)刷新
        refreshLayout.autoLoadMore(400);//延遲400毫秒后自動(dòng)加載
        refreshLayout.finishRefresh();//結(jié)束刷新
        refreshLayout.finishLoadMore();//結(jié)束加載
        refreshLayout.finishRefresh(3000);//延遲3000毫秒后結(jié)束刷新
        refreshLayout.finishLoadMore(3000);//延遲3000毫秒后結(jié)束加載
        refreshLayout.finishRefresh(false);//結(jié)束刷新(刷新失斀バ小)
        refreshLayout.finishLoadMore(false);//結(jié)束加載(加載失敽浞弧)
        refreshLayout.finishLoadMoreWithNoMoreData();//完成加載并標(biāo)記沒有更多數(shù)據(jù) 1.0.4
        refreshLayout.closeHeaderOrFooter();//關(guān)閉正在打開狀態(tài)的 Header 或者 Footer(1.1.0)
        refreshLayout.resetNoMoreData();//恢復(fù)沒有更多數(shù)據(jù)的原始狀態(tài) 1.0.4(1.1.0刪除)
        refreshLayout.setNoMoreData(false);//恢復(fù)沒有更多數(shù)據(jù)的原始狀態(tài) 1.0.5

    }
}

//全局一次性設(shè)置默認(rèn)屬性和默認(rèn)Header
public class App extends Application {
    static {//使用static代碼段可以防止內(nèi)存泄漏

        //設(shè)置全局默認(rèn)配置(優(yōu)先級最低,會(huì)被其他設(shè)置覆蓋)
        SmartRefreshLayout.setDefaultRefreshInitializer(new DefaultRefreshInitializer() {
            @Override
            public void initialize(@NonNull Context context, @NonNull RefreshLayout layout) {
                //開始設(shè)置全局的基本參數(shù)(可以被下面的DefaultRefreshHeaderCreator覆蓋)
                layout.setReboundDuration(1000);
                layout.setReboundInterpolator(new DropBounceInterpolator());
                layout.setFooterHeight(100);
                layout.setDisableContentWhenLoading(false);
                layout.setPrimaryColorsId(R.color.colorPrimary, android.R.color.white);
            }
        });

        //全局設(shè)置默認(rèn)的 Header
        SmartRefreshLayout.setDefaultRefreshHeaderCreator(new DefaultRefreshHeaderCreator() {
            @Override
            public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) {
                //開始設(shè)置全局的基本參數(shù)(這里設(shè)置的屬性只跟下面的MaterialHeader綁定祟印,其他Header不會(huì)生效肴沫,能覆蓋DefaultRefreshInitializer的屬性和Xml設(shè)置的屬性)
                layout.setEnableHeaderTranslationContent(false);
                return new MaterialHeader(context).setColorSchemeResources(R.color.colorRed,R.color.colorGreen,R.color.colorBlue);
            }
        });
    }
}


xml代碼設(shè)置

<!-- 下面示例中的值等于默認(rèn)值 -->
<com.scwang.smartrefresh.layout.SmartRefreshLayout
    android:id="@+id/refreshLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:srlAccentColor="@android:color/white"
    app:srlPrimaryColor="@color/colorPrimary"
    app:srlReboundDuration="300"
    app:srlDragRate="0.5"

    app:srlHeaderMaxDragRate="2"
    app:srlFooterMaxDragRate="2"
    app:srlHeaderTriggerRate="1"
    app:srlFooterTriggerRate="1"

    app:srlHeaderHeight="100dp"
    app:srlFooterHeight="100dp"
    app:srlHeaderInsetStart="0dp"
    app:srlFooterInsetStart="0dp"

    app:srlEnableRefresh="true"
    app:srlEnableLoadMore="true"
    app:srlEnableAutoLoadMore="true"
    app:srlEnablePureScrollMode="false"
    app:srlEnableNestedScrolling="false"
    app:srlEnableOverScrollDrag="true"
    app:srlEnableOverScrollBounce="true"
    app:srlEnablePreviewInEditMode="true"
    app:srlEnableScrollContentWhenLoaded="true"
    app:srlEnableScrollContentWhenRefreshed="true"
    app:srlEnableHeaderTranslationContent="true"
    app:srlEnableFooterTranslationContent="true"
    app:srlEnableLoadMoreWhenContentNotFull="false"
    app:srlEnableFooterFollowWhenLoadFinished="false"

    app:srlEnableClipHeaderWhenFixedBehind="true"
    app:srlEnableClipFooterWhenFixedBehind="true"

    app:srlDisableContentWhenRefresh="false"
    app:srlDisableContentWhenLoading="false"

    app:srlFixedFooterViewId="@+id/header_fixed"
    app:srlFixedHeaderViewId="@+id/footer_fixed"
    app:srlHeaderTranslationViewId="@+id/header_translation"
    app:srlFooterTranslationViewId="@+id/footer_translation"
    />
    <!--srlAccentColor:強(qiáng)調(diào)顏色-->
    <!--srlPrimaryColor:主題顏色-->
    <!--srlEnablePreviewInEditMode:是否啟用Android Studio編輯xml時(shí)預(yù)覽效果-->
    <!--srlFixedFooterViewId:指定一個(gè)View在內(nèi)容列表滾動(dòng)時(shí)固定-->
    <!--srlFixedHeaderViewId:指定一個(gè)View在內(nèi)容列表滾動(dòng)時(shí)固定-->
    <!--srlHeaderTranslationViewId:指定下拉Header時(shí)偏移的視圖Id-->
    <!--srlFooterTranslationViewId:指定上拉Footer時(shí)偏移的視圖Id-->
    <!--未說明的:看上面的set方法說明-->

2、ClassicsHeader

//java代碼設(shè)置

public class RefreshActivity extends Activity {
    static {
        ClassicsHeader.REFRESH_HEADER_PULLDOWN = "下拉可以刷新";
        ClassicsHeader.REFRESH_HEADER_REFRESHING = "正在刷新...";
        ClassicsHeader.REFRESH_HEADER_LOADING = "正在加載...";
        ClassicsHeader.REFRESH_HEADER_RELEASE = "釋放立即刷新";
        ClassicsHeader.REFRESH_HEADER_FINISH = "刷新完成";
        ClassicsHeader.REFRESH_HEADER_FAILED = "刷新失敗";
        ClassicsHeader.REFRESH_HEADER_SECONDARY = "釋放進(jìn)入二樓";
        ClassicsHeader.REFRESH_HEADER_LASTTIME = "上次更新 M-d HH:mm";
        ClassicsHeader.REFRESH_HEADER_LASTTIME = "'Last update' M-d HH:mm";
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ClassicsHeader.REFRESH_HEADER_PULLDOWN = getString(R.string.header_pulldown);//"下拉可以刷新";
        ClassicsHeader.REFRESH_HEADER_REFRESHING = getString(R.string.header_refreshing);//"正在刷新...";
        ClassicsHeader.REFRESH_HEADER_LOADING = getString(R.string.header_loading);//"正在加載...";
        ClassicsHeader.REFRESH_HEADER_RELEASE = getString(R.string.header_release);//"釋放立即刷新";
        ClassicsHeader.REFRESH_HEADER_FINISH = getString(R.string.header_finish);//"刷新完成";
        ClassicsHeader.REFRESH_HEADER_FAILED = getString(R.string.header_failed);//"刷新失敗";
        ClassicsHeader.REFRESH_HEADER_SECONDARY = getString(R.string.header_secondary);//"釋放進(jìn)入二樓";
        ClassicsHeader.REFRESH_HEADER_LASTTIME = getString(R.string.header_lasttime);//"上次更新 M-d HH:mm";
        ClassicsHeader.REFRESH_HEADER_LASTTIME = getString(R.string.header_lasttime);//"'Last update' M-d HH:mm"
        //下面示例中的值等于默認(rèn)值
        ClassicsHeader header = (ClassicsHeader)findViewById(R.id.header);
        header.setAccentColor(android.R.color.white);//設(shè)置強(qiáng)調(diào)顏色
        header.setPrimaryColor(R.color.colorPrimary);//設(shè)置主題顏色
        header.setTextSizeTitle(16);//設(shè)置標(biāo)題文字大信岳怼(sp單位)
        header.setTextSizeTitle(16, TypedValue.COMPLEX_UNIT_SP);//同上(1.1.0版本刪除)
        header.setTextSizeTime(10);//設(shè)置時(shí)間文字大蟹恪(sp單位)
        header.setTextSizeTime(10, TypedValue.COMPLEX_UNIT_SP);//同上(1.1.0版本刪除)
        header.setTextTimeMarginTop(10);//設(shè)置時(shí)間文字的上邊距(dp單位)
        header.setTextTimeMarginTopPx(10);//同上-像素單位(1.1.0版本刪除)
        header.setEnableLastTime(true);//是否顯示時(shí)間
        header.setFinishDuration(500);//設(shè)置刷新完成顯示的停留時(shí)間(設(shè)為0可以關(guān)閉停留功能)
        header.setDrawableSize(20);//同時(shí)設(shè)置箭頭和圖片的大小(dp單位)
        header.setDrawableArrowSize(20);//設(shè)置箭頭的大心跷摹(dp單位)
        header.setDrawableProgressSize(20);//設(shè)置圖片的大凶そ蟆(dp單位)
        header.setDrawableMarginRight(20);//設(shè)置圖片和箭頭和文字的間距(dp單位)
        header.setDrawableSizePx(20);//同上-像素單位
        header.setDrawableArrowSizePx(20);//同上-像素單位(1.1.0版本刪除)
        header.setDrawableProgressSizePx(20);//同上-像素單位(1.1.0版本刪除)
        header.setDrawableMarginRightPx(20);//同上-像素單位(1.1.0版本刪除)
        header.setArrowBitmap(bitmap);//設(shè)置箭頭位圖(1.1.0版本刪除)
        header.setArrowDrawable(drawable);//設(shè)置箭頭圖片
        header.setArrowResource(R.drawable.ic_arrow);//設(shè)置箭頭資源
        header.setProgressBitmap(bitmap);//設(shè)置圖片位圖(1.1.0版本刪除)
        header.setProgressDrawable(drawable);//設(shè)置圖片
        header.setProgressResource(R.drawable.ic_progress);//設(shè)置圖片資源
        header.setTimeFormat(new DynamicTimeFormat("上次更新 %s"));//設(shè)置時(shí)間格式化(時(shí)間會(huì)自動(dòng)更新)
        header.setLastUpdateText("上次更新 3秒前");//手動(dòng)更新時(shí)間文字設(shè)置(將不會(huì)自動(dòng)更新時(shí)間)
        header.setSpinnerStyle(SpinnerStyle.Translate);//設(shè)置移動(dòng)樣式(不支持:MatchLayout)
    }
}



<!-- 下面示例中的值等于默認(rèn)值 -->
<com.scwang.smartrefresh.layout.SmartRefreshLayout>
    <com.scwang.smartrefresh.layout.header.ClassicsHeader
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:srlAccentColor="@android:color/white"
        app:srlPrimaryColor="@color/colorPrimary"
        app:srlTextSizeTitle="16sp"
        app:srlTextSizeTime="10dp"
        app:srlTextTimeMarginTop="2dp"
        app:srlEnableLastTime="true"
        app:srlFinishDuration="500"
        app:srlDrawableSize="20dp"
        app:srlDrawableArrowSize="20dp"
        app:srlDrawableProgressSize="20dp"
        app:srlDrawableMarginRight="20dp"
        app:srlDrawableArrow="@drawable/ic_arrow"
        app:srlDrawableProgress="@drawable/ic_progress"
        app:srlClassicsSpinnerStyle="Translate"/>
</com.scwang.smartrefresh.layout.SmartRefreshLayout>

3、ClassicsFooter

//java代碼設(shè)置

public class RefreshActivity extends Activity {
    static {
        ClassicsFooter.REFRESH_FOOTER_PULLING = "上拉加載更多";
        ClassicsFooter.REFRESH_FOOTER_RELEASE = "釋放立即加載";
        ClassicsFooter.REFRESH_FOOTER_REFRESHING = "正在刷新...";
        ClassicsFooter.REFRESH_FOOTER_LOADING = "正在加載...";
        ClassicsFooter.REFRESH_FOOTER_FINISH = "加載完成";
        ClassicsFooter.REFRESH_FOOTER_FAILED = "加載失敗";
        ClassicsFooter.REFRESH_FOOTER_NOTHING = "沒有更多數(shù)據(jù)了";
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ClassicsFooter.REFRESH_FOOTER_PULLING = getString(R.string.footer_pulling);//"上拉加載更多";
        ClassicsFooter.REFRESH_FOOTER_RELEASE = getString(R.string.footer_release);//"釋放立即加載";
        ClassicsFooter.REFRESH_FOOTER_REFRESHING = getString(R.string.footer_refreshing);//"正在刷新...";
        ClassicsFooter.REFRESH_FOOTER_LOADING = getString(R.string.footer_loading);//"正在加載...";
        ClassicsFooter.REFRESH_FOOTER_FINISH = getString(R.string.footer_finish);//"加載完成";
        ClassicsFooter.REFRESH_FOOTER_FAILED = getString(R.string.footer_failed);//"加載失敗";
        ClassicsFooter.REFRESH_FOOTER_NOTHING = getString(R.string.footer_nothing);//"沒有更多數(shù)據(jù)了";

        //下面示例中的值等于默認(rèn)值
        ClassicsFooter footer = (ClassicsFooter)findViewById(R.id.footer);
        footer.setAccentColor(android.R.color.white);//設(shè)置強(qiáng)調(diào)顏色
        footer.setPrimaryColor(R.color.colorPrimary);//設(shè)置主題顏色
        footer.setTextSizeTitle(16);//設(shè)置標(biāo)題文字大杏罂蕖(sp單位)
        footer.setTextSizeTitle(16, TypedValue.COMPLEX_UNIT_SP);//同上
        footer.setFinishDuration(500);//設(shè)置刷新完成顯示的停留時(shí)間
        footer.setDrawableSize(20);//同時(shí)設(shè)置箭頭和圖片的大谐烈隆(dp單位)
        footer.setDrawableArrowSize(20);//設(shè)置箭頭的大小(dp單位)
        footer.setDrawableProgressSize(20);//設(shè)置圖片的大屑跷(dp單位)
        footer.setDrawableMarginRight(20);//設(shè)置圖片和箭頭和文字的間距(dp單位)
        footer.setDrawableSizePx(20);//同上-像素單位(1.1.0版本刪除)
        footer.setDrawableArrowSizePx(20);//同上-像素單位(1.1.0版本刪除)
        footer.setDrawableProgressSizePx(20);//同上-像素單位(1.1.0版本刪除)
        footer.setDrawableMarginRightPx(20);//同上-像素單位(1.1.0版本刪除)
        footer.setArrowBitmap(bitmap);//設(shè)置箭頭位圖(1.1.0版本刪除)
        footer.setArrowDrawable(drawable);//設(shè)置箭頭圖片
        footer.setArrowResource(R.drawable.ic_arrow);//設(shè)置箭頭資源
        footer.setProgressBitmap(bitmap);//設(shè)置圖片位圖(1.1.0版本刪除)
        footer.setProgressDrawable(drawable);//設(shè)置圖片
        footer.setProgressResource(R.drawable.ic_progress);//設(shè)置圖片資源
        footer.setSpinnerStyle(SpinnerStyle.Translate);//設(shè)置移動(dòng)樣式(不支持:MatchLayout)
    }
}
xml代碼設(shè)置

<!-- 下面示例中的值等于默認(rèn)值 -->
<com.scwang.smartrefresh.layout.SmartRefreshLayout>
    <com.scwang.smartrefresh.layout.header.ClassicsFooter
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:srlAccentColor="@android:color/white"
        app:srlPrimaryColor="@color/colorPrimary"
        app:srlTextSizeTitle="16sp"
        app:srlFinishDuration="500"
        app:srlDrawableSize="20dp"
        app:srlDrawableArrowSize="20dp"
        app:srlDrawableProgressSize="20dp"
        app:srlDrawableMarginRight="20dp"
        app:srlDrawableArrow="@drawable/ic_arrow"
        app:srlDrawableProgress="@drawable/ic_progress"
        app:srlClassicsSpinnerStyle="Translate"/>
</com.scwang.smartrefresh.layout.SmartRefreshLayout>

五豌习、表格屬性

1. Attributes

Attributes

name format description
srlPrimaryColor color 主題顏色
srlAccentColor color 強(qiáng)調(diào)顏色
srlReboundDuration integer 釋放后回彈動(dòng)畫時(shí)長(默認(rèn)250毫秒)
srlHeaderHeight dimension Header的標(biāo)準(zhǔn)高度(dp)
srlFooterHeight dimension Footer的標(biāo)準(zhǔn)高度(dp)
srlHeaderInsetStart dimension Header的起始偏移量(dp)V1.0.5
srlFooterInsetStart dimension Footer的起始偏移量(dp)V1.0.5
srlDragRate float 顯示拖動(dòng)高度/真實(shí)拖動(dòng)高度(默認(rèn)0.5存谎,阻尼效果)
srlHeaderMaxDragRate float Header最大拖動(dòng)高度/Header標(biāo)準(zhǔn)高度(默認(rèn)2,要求>=1)
srlFooterMaxDragRate float Footer最大拖動(dòng)高度/Footer標(biāo)準(zhǔn)高度(默認(rèn)2肥隆,要求>=1)
srlHeaderTriggerRate float Header觸發(fā)刷新距離 與 HeaderHeight 的比率(默認(rèn)1)
srlFooterTriggerRate float Footer觸發(fā)加載距離 與 FooterHeight 的比率(默認(rèn)1)
srlEnableRefresh boolean 是否開啟下拉刷新功能(默認(rèn)true)
srlEnableLoadMore boolean 是否開啟加上拉加載功能(默認(rèn)false-智能開啟)
srlEnableAutoLoadMore boolean 是否監(jiān)聽列表慣性滾動(dòng)到底部時(shí)觸發(fā)加載事件(默認(rèn)true)
srlEnableHeaderTranslationContent boolean 拖動(dòng)Header的時(shí)候是否同時(shí)拖動(dòng)內(nèi)容(默認(rèn)true)
srlEnableFooterTranslationContent boolean 拖動(dòng)Footer的時(shí)候是否同時(shí)拖動(dòng)內(nèi)容(默認(rèn)true)
srlEnablePreviewInEditMode boolean 是否在編輯模式時(shí)顯示預(yù)覽效果(默認(rèn)true)
srlEnablePureScrollMode boolean 是否開啟純滾動(dòng)模式(默認(rèn)false-開啟時(shí)只支持一個(gè)子視圖)
srlEnableOverScrollDrag boolean 是否啟用越界拖動(dòng)(仿蘋果效果)V1.0.4
srlEnableOverScrollBounce boolean 設(shè)置是否開啟越界回彈功能(默認(rèn)true)
srlEnableNestedScrolling boolean 是否開啟嵌套滾動(dòng)NestedScrolling(默認(rèn)false-智能開啟)
srlEnableScrollContentWhenLoaded boolean 是否在加載完成之后滾動(dòng)內(nèi)容顯示新數(shù)據(jù)(默認(rèn)-true)
srlEnableScrollContentWhenRefreshed boolean 是否在刷新成功之后滾動(dòng)內(nèi)容顯示新數(shù)據(jù)(默認(rèn)-true)
srlEnableLoadMoreWhenContentNotFull boolean 在內(nèi)容不滿一頁的時(shí)候既荚,是否可以上拉加載更多(默認(rèn)-false)
srlEnableFooterFollowWhenLoadFinished boolean 是否在全部加載結(jié)束之后Footer跟隨內(nèi)容
srlEnableClipHeaderWhenFixedBehind boolean 是否剪裁Header當(dāng)時(shí)樣式為FixedBehind時(shí)V1.0.5
srlEnableClipFooterWhenFixedBehind boolean 是否剪裁Footer當(dāng)時(shí)樣式為FixedBehind時(shí)V1.0.5
srlDisableContentWhenRefresh boolean 是否在刷新的時(shí)候禁止內(nèi)容的一切手勢操作(默認(rèn)false)
srlDisableContentWhenLoading boolean 是否在加載的時(shí)候禁止內(nèi)容的一切手勢操作(默認(rèn)false)
srlFixedHeaderViewId id 指定固定頂部的視圖Id
srlFixedFooterViewId id 指定固定底部的視圖Id
srlHeaderTranslationViewId id 指定下拉Header時(shí)偏移的視圖Id
srlFooterTranslationViewId id 指定上拉Footer時(shí)偏移的視圖Id

2、 Method

name format description
setPrimaryColors colors 主題\強(qiáng)調(diào)顏色
setPrimaryColorsId colors 主題\強(qiáng)調(diào)顏色資源Id
setReboundDuration integer 釋放后回彈動(dòng)畫時(shí)長(默認(rèn)250毫秒)
setHeaderHeight dimension Header的標(biāo)準(zhǔn)高度(px/dp 兩個(gè)版本)
setFooterHeight dimension Footer的標(biāo)準(zhǔn)高度(px/dp 兩個(gè)版本)
setHeaderInsetStart dimension Header起始位置偏移量(px/dp 兩個(gè)版本)V1.0.5
setFooterInsetStart dimension Footer起始位置偏移量(px/dp 兩個(gè)版本)V1.0.5
setDragRate float 顯示拖動(dòng)高度/真實(shí)拖動(dòng)高度(默認(rèn)0.5栋艳,阻尼效果)
setHeaderMaxDragRate float Header最大拖動(dòng)高度/Header標(biāo)準(zhǔn)高度(默認(rèn)2恰聘,要求>=1)
setFooterMaxDragRate float Footer最大拖動(dòng)高度/Footer標(biāo)準(zhǔn)高度(默認(rèn)2,要求>=1)
setHeaderTriggerRate float Header觸發(fā)刷新距離 與 HeaderHeight 的比率(默認(rèn)1)
setFooterTriggerRate float Footer觸發(fā)加載距離 與 FooterHeight 的比率(默認(rèn)1)
setEnableRefresh boolean 是否開啟下拉刷新功能(默認(rèn)true)
setEnableLoadMore boolean 是否開啟加上拉加載功能(默認(rèn)false-智能開啟)
setEnableHeaderTranslationContent boolean 拖動(dòng)Header的時(shí)候是否同時(shí)拖動(dòng)內(nèi)容(默認(rèn)true)
setEnableFooterTranslationContent boolean 拖動(dòng)Footer的時(shí)候是否同時(shí)拖動(dòng)內(nèi)容(默認(rèn)true)
setEnableAutoLoadMore boolean 是否監(jiān)聽列表慣性滾動(dòng)到底部時(shí)觸發(fā)加載事件(默認(rèn)true)
setEnablePureScrollMode boolean 是否開啟純滾動(dòng)模式(默認(rèn)false-開啟時(shí)只支持一個(gè)子視圖)
setEnableOverScrollDrag boolean 是否啟用越界拖動(dòng)(仿蘋果效果)V1.0.4
setEnableOverScrollBounce boolean 設(shè)置是否開啟越界回彈功能(默認(rèn)true)
setEnableNestedScrolling boolean 是否開啟嵌套滾動(dòng)NestedScrolling(默認(rèn)false-智能開啟)
setEnableScrollContentWhenLoaded boolean 是否在加載完成之后滾動(dòng)內(nèi)容顯示新數(shù)據(jù)(默認(rèn)-true)
setEnableScrollContentWhenRefreshed boolean 是否在刷新成功之后滾動(dòng)內(nèi)容顯示新數(shù)據(jù)(默認(rèn)-true)V1.0.5
setEnableLoadMoreWhenContentNotFull boolean 在內(nèi)容不滿一頁的時(shí)候吸占,是否可以上拉加載更多(默認(rèn)-false)
setEnableFooterFollowWhenLoadFinished boolean 是否在全部加載結(jié)束之后Footer跟隨內(nèi)容
setEnableClipHeaderWhenFixedBehind boolean 是否剪裁Header當(dāng)時(shí)樣式為FixedBehind時(shí)V1.0.5
setEnableClipFooterWhenFixedBehind boolean 是否剪裁Footer當(dāng)時(shí)樣式為FixedBehind時(shí)V1.0.5
setDisableContentWhenRefresh boolean 是否在刷新的時(shí)候禁止內(nèi)容的一切手勢操作(默認(rèn)false)
setDisableContentWhenLoading boolean 是否在加載的時(shí)候禁止內(nèi)容的一切手勢操作(默認(rèn)false)
setReboundInterpolator Interpolator 設(shè)置回彈動(dòng)畫的插值器(默認(rèn)減速)
setRefreshHeader RefreshHeader 設(shè)置指定的Header(默認(rèn)貝塞爾雷達(dá))
setRefreshFooter RefreshFooter 設(shè)置指定的Footer(默認(rèn)球脈沖)
setRefreshContent View 設(shè)置刷新Content(用于動(dòng)態(tài)替換空布局)
setOnRefreshListener OnRefreshListener 設(shè)置刷新監(jiān)聽器(不設(shè)置晴叨,默認(rèn)3秒后關(guān)刷新)
setOnLoadMoreListener OnLoadMoreListener 設(shè)置加載監(jiān)聽器(不設(shè)置,默認(rèn)3秒后關(guān)加載)
setOnRefreshLoadMoreListener OnRefreshLoadMoreListener 同時(shí)設(shè)置上面兩個(gè)監(jiān)聽器
setOnMultiPurposeListener OnMultiPurposeListener 設(shè)置多功能監(jiān)聽器
setLoadMoreFinished boolean 設(shè)置全部數(shù)據(jù)加載完成矾屯,之后不會(huì)觸發(fā)加載事件
setScrollBoundaryDecider boundary 設(shè)置滾動(dòng)邊界判斷
finishRefresh (int delayed) 完成刷新兼蕊,結(jié)束刷新動(dòng)畫
finishLoadMore (int delayed) 完成加載,結(jié)束加載動(dòng)畫
finishRefresh (boolean success) 完成刷新件蚕,并設(shè)置是否成功
finishLoadMore (boolean success) 完成加載孙技,并設(shè)置是否成功
finishLoadMoreWithNoMoreData 完成加載并標(biāo)記沒有更多數(shù)據(jù)(V1.0.4)
closeHeaderOrFooter 關(guān)閉 Header 或者 Footer(1.1.0)
resetNoMoreData V1.0.4(V1.1.0刪除,用 setNoMoreData(false) 代替)
setNoMoreData boolean 設(shè)置更多數(shù)據(jù)狀態(tài)V1.0.5
getRefreshHeader RefreshHeader 獲取Header
getRefreshFooter RefreshFooter 獲取Footer
getState RefreshState 獲取當(dāng)前狀態(tài)
isRefreshing boolean (V1.1.0刪除排作,版本用 getState==Refreshing 代替)
isLoading boolean (V1.1.0刪除绪杏,版本用 getState==Loading 代替)
autoRefresh (int delayed) 觸發(fā)自動(dòng)刷新
autoLoadMore (int delayed) 觸發(fā)自動(dòng)加載

3、Header-Attributes

name format description
srlPrimaryColor color 主題顏色
srlAccentColor color 強(qiáng)調(diào)顏色
srlDrawableArrow drawable 箭頭圖片
srlDrawableProgress drawable 轉(zhuǎn)動(dòng)圖片
srlClassicsSpinnerStyle enum 變換樣式:Translate(平行移動(dòng))纽绍、Scale(拉伸形變)蕾久、FixedBehind(固定在背后)
srlSpinnerStyle enum 變換樣式:srlClassicsSpinnerStyle的全部、FixedFront(固定在前面或全屏)
srlFinishDuration int 動(dòng)畫結(jié)束時(shí)拌夏,顯示完成狀態(tài)停留的時(shí)間(毫秒)
srlEnableLastTime boolean 是否顯示上次更新時(shí)間(默認(rèn)true)
srlDrawableMarginRight dimension 圖片相對右邊文字的距離(默認(rèn)20dp)
srlTextTimeMarginTop dimension 更新時(shí)間相對上面標(biāo)題的距離(默認(rèn)2dp)
srlTextSizeTitle dimension 標(biāo)題文字大猩(默認(rèn)16sp)
srlTextSizeTime dimension 時(shí)間文字大小(默認(rèn)12sp)

4障簿、Header-Method

name format description
setPrimaryColor color 主題顏色
setAccentColor color 強(qiáng)調(diào)顏色
setArrowDrawable drawable 設(shè)置箭頭圖片
setProgressDrawable drawable 設(shè)置轉(zhuǎn)動(dòng)圖片
setArrowBitmap bitmap 設(shè)置箭頭圖片(V1.1.0版本刪除)
setProgressBitmap bitmap 設(shè)置轉(zhuǎn)動(dòng)圖片(V1.1.0版本刪除)
setArrowResource int 設(shè)置箭頭圖片
setProgressResource int 設(shè)置轉(zhuǎn)動(dòng)圖片
setSpinnerStyle enum 變換樣式:參考屬性srlSpinnerStyle
setClassicsSpinnerStyle enum 變換樣式:參考屬性srlClassicsSpinnerStyle
setFinishDuration int 設(shè)置動(dòng)畫結(jié)束時(shí)盹愚,顯示完成狀態(tài)停留的時(shí)間(毫秒)
setEnableLastTime boolean 是否顯示上次更新時(shí)間(默認(rèn)true)
setTextSizeTitle dimension 標(biāo)題文字大小(默認(rèn)16sp)
setTextSizeTime dimension 時(shí)間文字大姓竟省(默認(rèn)12sp)
setLastUpdateText string 手動(dòng)設(shè)置更新時(shí)間皆怕,將不會(huì)自動(dòng)更新時(shí)間

</article>


參考鏈接:http://www.reibang.com/p/29e315ff44a6

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市西篓,隨后出現(xiàn)的幾起案子愈腾,更是在濱河造成了極大的恐慌,老刑警劉巖岂津,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件虱黄,死亡現(xiàn)場離奇詭異,居然都是意外死亡吮成,警方通過查閱死者的電腦和手機(jī)橱乱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進(jìn)店門辜梳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人泳叠,你說我怎么就攤上這事作瞄。” “怎么了危纫?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵粉洼,是天一觀的道長。 經(jīng)常有香客問我叶摄,道長,這世上最難降的妖魔是什么安拟? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任蛤吓,我火速辦了婚禮,結(jié)果婚禮上糠赦,老公的妹妹穿的比我還像新娘会傲。我一直安慰自己,他們只是感情好拙泽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布淌山。 她就那樣靜靜地躺著,像睡著了一般顾瞻。 火紅的嫁衣襯著肌膚如雪泼疑。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天荷荤,我揣著相機(jī)與錄音退渗,去河邊找鬼。 笑死蕴纳,一個(gè)胖子當(dāng)著我的面吹牛会油,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播古毛,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼翻翩,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了稻薇?” 一聲冷哼從身側(cè)響起嫂冻,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎塞椎,沒想到半個(gè)月后絮吵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡忱屑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年蹬敲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了暇昂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,144評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡伴嗡,死狀恐怖急波,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瘪校,我是刑警寧澤澄暮,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站阱扬,受9級特大地震影響泣懊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜麻惶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一馍刮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧窃蹋,春花似錦卡啰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至杀迹,卻和暖如春亡脸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背树酪。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工梗掰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嗅回。 一個(gè)月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓及穗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親绵载。 傳聞我的和親對象是個(gè)殘疾皇子埂陆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評論 2 355