Glide 基本使用(一)

一渊抽、前言:

下一篇:Glide 基本封裝使用(二)http://www.reibang.com/p/61de90eb6d93

Glide是谷歌為我們推薦的一個(gè)圖片加載庫尾膊。為什么要選擇使用Glide呢欲逃?

  1. Glide 輕量級(jí);
  2. 速度快凡纳;
  3. 可以根據(jù)所需加載圖片的大小自動(dòng)適配所需分辨率的圖疏虫;
  4. 支持多種格式圖片(靜態(tài)webp,動(dòng)態(tài)gif特石,jpeg盅蝗,jpg,png)姆蘸;
  5. 支持多種數(shù)據(jù)源圖片(url墩莫,drawable芙委,src,file狂秦,asserts灌侣,raw)。

二裂问、使用:

1. 添加依賴:

implementation 'com.github.bumptech.glide:glide:4.5.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.5.0'

2. 添加訪問網(wǎng)絡(luò)權(quán)限

<uses-permission android:name="android.permission.INTERNET" />
//它可以監(jiān)聽用戶的連接狀態(tài)并在用戶重新連接到網(wǎng)絡(luò)時(shí)重啟之前失敗的請(qǐng)求
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
//用于硬盤緩存和讀取
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

3. Glide的常見用法:

  • with() 提供了幾種構(gòu)造方法侧啼,可以在源碼里看,有Context, Activity, Fragment等,如果傳入Application.this作為參數(shù)時(shí),Glide的加載不受當(dāng)前Activity生命周期影響朋贬,但這會(huì)導(dǎo)致即使Activity結(jié)束后,仍然繼續(xù)加載圖片哪审。
  • load() 對(duì)象: String(文件路徑,網(wǎng)絡(luò)地址)虑瀑,F(xiàn)ile(文件資源)湿滓,Integer(資源id)。
  • asGif() 表示的gif動(dòng)畫缴川,加載GIF圖片茉稠,不加該方法時(shí),也可以加載GIF把夸;加了該方法而线,如果資源不是GIF,會(huì)加載失斄等铡膀篮;
  • asBitmap:表示靜態(tài)圖,把圖片當(dāng)成bitmap對(duì)待岂膳,如果是Gif時(shí)會(huì)停留在第一幀 誓竿;
  • diskCacheStrategy() 表示磁盤緩存策略。
    1.DiskCacheStrategy.RESULT:展示小大的圖片緩存
    2.DiskCacheStrategy.ALL; 展示在控件中大小圖片尺寸和原圖都會(huì)緩存
    3.DiskCacheStrategy.NONE:不設(shè)置緩存
    4.DiskCacheStrategy.SOURCE:原圖緩存
  • override(int width, int height)
    設(shè)置加載圖片的寬高谈截,像素為單位筷屡,在自定義ImageView大小或者計(jì)算瀑布流高度時(shí),偶爾會(huì)用到;
  • placeholder() 在加載過程中設(shè)置占位圖簸喂,可以傳入Drawable或resouceId ;
  • error() 加載失敗顯示的圖片毙死,可以傳入Drawable或resouceId ;
  • thumbnail() 縮略圖顯示傳入值(0-1f),設(shè)置縮略圖喻鳄,先加載縮略圖再加載完整圖片,在大量的圖片流列表里,這個(gè)方法還是挺好用的, 快速滑動(dòng)列表時(shí),不致于出現(xiàn)大量的空白扼倘, .thumbnail(0.1f) //縮略圖為原來的十分之一;
  • crossFade() 顯示動(dòng)畫-淡入淡出
  • transform() 設(shè)置圖片圓角或圓形顯示(繼承 BitmapTransformation)這都是很常用的哦
  • centerCrop() 圖片顯示類型 fitCenter();
  • into() into直接傳入ImageView;
  • dontAnimate() Glide加載時(shí)默認(rèn)會(huì)有淡入淡出的加載效果除呵,該方法可以去掉動(dòng)畫效果再菊,直接顯示圖片 ;
  • skipMemoryCache(true) 跳過圖片緩存 ;
  • priority(Priority.NORMAL) 加載優(yōu)先級(jí)爪喘,優(yōu)先級(jí)越高越先加載 ;
  • crossFade(int duration) 加載時(shí)淡入淡出動(dòng)畫時(shí)間纠拔,也可以不傳秉剑,默認(rèn)300ms ;
  • animate() 自定義加載動(dòng)畫绿语;
  • bitmapTransform() 對(duì)圖片進(jìn)行轉(zhuǎn)換秃症,只能用于bitmap ;
  • transform() 對(duì)圖片進(jìn)行轉(zhuǎn)換 吕粹;
  • Glide.get(this).clearDiskCache() 清理磁盤緩存,需要在子線程中執(zhí)行 岗仑;
  • Glide.get(this).clearMemory(); 清理內(nèi)存緩存匹耕,可以直接在主線程執(zhí)行;

4. 加載圖片到imageView

Glide.with(Context context).load(Strint url).into(ImageView imageView);

5. 各種形式的圖片加載到ImageView

// 加載本地圖片
File file = new File(getExternalCacheDir() + "/image.jpg");
Glide.with(this).load(file).into(imageView);

// 加載應(yīng)用資源
int resource = R.drawable.image;
Glide.with(this).load(resource).into(imageView);

// 加載二進(jìn)制流
byte[] image = getImageBytes();
Glide.with(this).load(image).into(imageView);

// 加載Uri對(duì)象
Uri imageUri = getImageUri();
Glide.with(this).load(imageUri).into(imageView);

// 加載Url地址
String url = "http://img2.ph.126.net/OOEdWpTSE1Zi3ZUiwKUFFQ==/3374322020907845279.jpg";
Glide.with(this).load(url).into(imageView);

6. 加載帶有占位圖

Glide.with(this).load(url).placeholder(R.drawable.loading).into(imageView);

占位圖目的為在目的圖片還未加載出來的時(shí)候荠雕,提前展示給用戶的一張圖片稳其;

7. 加載失敗 放置占位符

Glide.with(this).load(url).placeholder(R.drawable.loading).error(R.drawable.error)
     .diskCacheStrategy(DiskCacheStrategy.NONE)//關(guān)閉Glide的硬盤緩存機(jī)制
     .into(imageView);

//DiskCacheStrategy.NONE: 表示不緩存任何內(nèi)容。
//DiskCacheStrategy.SOURCE: 表示只緩存原始圖片炸卑。
//DiskCacheStrategy.RESULT: 表示只緩存轉(zhuǎn)換過后的圖片(默認(rèn)選項(xiàng))既鞠。
//DiskCacheStrategy.ALL : 表示既緩存原始圖片,也緩存轉(zhuǎn)換過后的圖片盖文。

8. 加載指定格式的圖片--指定為靜止圖片

Glide.with(this)
     .load(url)
     .asBitmap()//只加載靜態(tài)圖片嘱蛋,如果是git圖片則只加載第一幀。
     .placeholder(R.drawable.loading)
     .error(R.drawable.error)
     .diskCacheStrategy(DiskCacheStrategy.NONE)
     .into(imageView);

9. 加載動(dòng)態(tài)圖片

Glide.with(this)
     .load(url)
     .asGif()//加載動(dòng)態(tài)圖片五续,若現(xiàn)有圖片為非gif圖片洒敏,則直接加載錯(cuò)誤占位圖。
     .placeholder(R.drawable.loading)
     .error(R.drawable.error)
     .diskCacheStrategy(DiskCacheStrategy.NONE)
     .into(imageView);

10. 加載指定大小的圖片

Glide.with(this)
     .load(url)
     .placeholder(R.drawable.loading)
     .error(R.drawable.error)
     .diskCacheStrategy(DiskCacheStrategy.NONE)
     .override(100, 100)//指定圖片大小
     .into(imageView);

11. 關(guān)閉框架的內(nèi)存緩存機(jī)制

Glide.with(this)
     .load(url)
     .skipMemoryCache(true)  //傳入?yún)?shù)為false時(shí)疙驾,則關(guān)閉內(nèi)存緩存凶伙。
     .into(imageView);

12. 關(guān)閉硬盤的緩存

Glide.with(this)
     .load(url)
     .diskCacheStrategy(DiskCacheStrategy.NONE)     //關(guān)閉硬盤緩存操作
     .into(imageView);

//其他參數(shù)表示:
//DiskCacheStrategy.NONE: 表示不緩存任何內(nèi)容。
//DiskCacheStrategy.SOURCE: 表示只緩存原始圖片它碎。
//DiskCacheStrategy.RESULT: 表示只緩存轉(zhuǎn)換過后的圖片(默認(rèn)選項(xiàng))函荣。
//DiskCacheStrategy.ALL : 表示既緩存原始圖片,也緩存轉(zhuǎn)換過后的圖片扳肛。

13. 當(dāng)引用的 url 存在 token 時(shí)解決方法-->重寫 Glide 的 GlideUrl 方法

當(dāng) url 中存在用戶信息傻挂,可以重寫 Glide 中的方法進(jìn)行判斷。

public class MyGlideUrl extends GlideUrl {

    private String mUrl;

    public MyGlideUrl(String url) {
        super(url);
        mUrl = url;
    }

    @Override
    public String getCacheKey() {
        return mUrl.replace(findTokenParam(), "");
    }

    private String findTokenParam() {
        String tokenParam = "";
        int tokenKeyIndex = mUrl.indexOf("?token=") >= 0 ? mUrl.indexOf("?token=") : mUrl.indexOf("&token=");
        if (tokenKeyIndex != -1) {
            int nextAndIndex = mUrl.indexOf("&", tokenKeyIndex + 1);
            if (nextAndIndex != -1) {
                tokenParam = mUrl.substring(tokenKeyIndex + 1, nextAndIndex + 1);
            } else {
                tokenParam = mUrl.substring(tokenKeyIndex);
            }
        }
        return tokenParam;
    }

}

調(diào)用加載圖片的方式為:

Glide.with(this)
     .load(new MyGlideUrl(url))
     .into(imageView);

14. Glide 實(shí)現(xiàn)預(yù)加載

//a敞峭、預(yù)加載代碼
Glide.with(this)
     .load(url)
     .diskCacheStrategy(DiskCacheStrategy.SOURCE)
     .preload();

//preload() 有兩種重載
 // 1踊谋、帶有參數(shù)的重載,參數(shù)作用是設(shè)置預(yù)加載的圖片大小旋讹;
//2殖蚕、不帶參數(shù)的表示加載的圖片為原始尺寸轿衔;

//b、使用預(yù)加載的圖片
Glide.with(this)
     .load(url)
     .diskCacheStrategy(DiskCacheStrategy.SOURCE)
     .into(imageView);

切記:diskCacheStrategy() 方法內(nèi)必須設(shè)置參數(shù)為:“ DiskCacheStrategy.SOURCE ”睦疫,否則可能預(yù)加載失敗害驹,導(dǎo)致顯示圖片時(shí),需要重新加載蛤育。

15. 利用Glide將圖片加載到不同控件或加載成不同使用方式

(1)宛官、拿到圖片實(shí)例

//1、通過自己構(gòu)造 target 可以獲取到圖片實(shí)例
SimpleTarget<GlideDrawable> simpleTarget = new SimpleTarget<GlideDrawable>() {
    @Override
    public void onResourceReady(GlideDrawable resource, GlideAnimation glideAnimation) {
        imageView.setImageDrawable(resource);
    }
};

//2瓦糕、將圖片實(shí)例記載到指定的imageview上底洗,也可以做其他的事情
public void loadImage(View view) {
    String url = "http://cn.bing.com/az/hprichbg/rb/TOAD_ZH-CN7336795473_1920x1080.jpg";
    Glide.with(this)
         .load(url)
         .into(simpleTarget);
}

(2)、將圖片加載到任何位置

/*
*將圖片加載為控件背景
*/
public class MyLayout extends LinearLayout {

    private ViewTarget<MyLayout, GlideDrawable> viewTarget;

    public MyLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
        viewTarget = new ViewTarget<MyLayout, GlideDrawable>(this) {
            @Override
            public void onResourceReady(GlideDrawable resource, GlideAnimation glideAnimation) {
                MyLayout myLayout = getView();
                myLayout.setImageAsBackground(resource);
            }
        };
    }

    public ViewTarget<MyLayout, GlideDrawable> getTarget() {
        return viewTarget;
    }

    public void setImageAsBackground(GlideDrawable resource) {
        setBackground(resource);
    }

}


//引用圖片到指定控件作為背景
public class MainActivity extends AppCompatActivity {

    MyLayout myLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myLayout = (MyLayout) findViewById(R.id.background);
    }

    public void loadImage(View view) {
        String url = "http://cn.bing.com/az/hprichbg/rb/TOAD_ZH-CN7336795473_1920x1080.jpg";
        Glide.with(this)
             .load(url)
             .into(myLayout.getTarget());
    }

}

16. Glide 實(shí)現(xiàn)圖片下載

使用 downloadOnly(int width, int height) 或 downloadOnly(Y target) 方法替代 into(view) 方法咕娄。

public void downloadImage(View view) {
    new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                String url = "http://cn.bing.com/az/hprichbg/rb/TOAD_ZH-CN7336795473_1920x1080.jpg";
                final Context context = getApplicationContext();
                FutureTarget<File> target = Glide.with(context)
                                                 .load(url)
                                                 .downloadOnly(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL);
                final File imageFile = target.get();
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(context, imageFile.getPath(), Toast.LENGTH_LONG).show();
                    }
                });
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }).start();
}

(1)亥揖、有兩個(gè)參數(shù)的 downloadOnly(int width, int height) 方法表示指定下載尺寸,用于在子線程內(nèi)進(jìn)行下載圣勒;
(2)费变、一個(gè)參數(shù)的 downloadOnly(Y target) 方法 在主線程內(nèi)進(jìn)行下載
(3)、target.get() 方法可以獲取到下載文件保存路徑圣贸;
使用下載完的圖片的方式

public void loadImage(View view) {
    String url = "http://cn.bing.com/az/hprichbg/rb/TOAD_ZH-CN7336795473_1920x1080.jpg";
    Glide.with(this)
            .load(url)
            .diskCacheStrategy(DiskCacheStrategy.SOURCE)
            .into(imageView);
}

注意: diskCacheStrategy() 方法的參數(shù)應(yīng)該為 DiskCacheStrategy.SOURCE 或者 DiskCacheStrategy.ALL否則可能導(dǎo)致加載圖片到控件的時(shí)候挚歧,需要重新加載。

17. 監(jiān)聽 Glide 加載的狀態(tài)

public void loadImage(View view) {
    String url = "http://cn.bing.com/az/hprichbg/rb/TOAD_ZH-CN7336795473_1920x1080.jpg";
    Glide.with(this)
            .load(url)
            .listener(new RequestListener<String, GlideDrawable>() {
                @Override
                public boolean onException(Exception e, String model, Target<GlideDrawable> target,
                    boolean isFirstResource) {
                    return false;
                }

                @Override
                public boolean onResourceReady(GlideDrawable resource, String model,
                    Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
                    return false;
                }
            })
            .into(imageView);
}

(1)吁峻、onException() 方法表示加載失敗滑负,onResourceReady() 表示加載成功;
(2)锡搜、 每個(gè)方法都有一個(gè) boolean 的返回值橙困,false表示未處理、true 表示處理耕餐。

18. Glide 的圖形變換功能

(1)凡傅、禁用圖形變換功能

Glide.with(this)
     .load(url)
     .dontTransform()
     .into(imageView);

這個(gè)方法時(shí)全局的,導(dǎo)致其他地方的圖片也不可進(jìn)行圖形變換了肠缔。

(2)夏跷、修改方法,通過 override() 方法設(shè)置大小

Glide.with(this)
     .load(url)
     .override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)
     .into(imageView);

(3)明未、簡(jiǎn)單的圖形變換

Glide.with(this)
     .load(url)
     .centerCrop()
     .into(imageView);

Glide.with(this)
     .load(url)
     .fitCenter()
     .into(imageView);

通過 centerCrop()方法 按照原始的長(zhǎng)寬比充滿全屏和 fitCenter() 方法 對(duì)原圖的中心區(qū)域進(jìn)行裁剪對(duì)圖片進(jìn)行相關(guān)設(shè)置槽华。

(4)、override() 方法與 centerCrop() 方法配合使用

String url = "http://cn.bing.com/az/hprichbg/rb/AvalancheCreek_ROW11173354624_1920x1080.jpg";
Glide.with(this)
     .load(url)
     .override(500, 500)
     .centerCrop()
     .into(imageView);

三趟妥、總結(jié):

1.為什么會(huì)偶爾看到類似于"You cannot start a load for a destroyed activity"的異常呢?

當(dāng)你的圖片還在loaidng猫态, 或者你在asynctask里面的 post 里去 加載圖片,當(dāng)async 還在跑時(shí), 你back, finish 了你的activity亲雪,那么就報(bào)錯(cuò)了勇凭。所以請(qǐng)記住一句話: 不要再非主線程里面使用Glide加載圖片,如果真的使用了义辕,請(qǐng)把context參數(shù)換成getApplicationContext()虾标。這里是解決方案

2.另外Glide還提供了清除緩存的實(shí)現(xiàn)

  • Glide.get(context).clearDiskCache();(清除磁盤緩存) 必須在子線程
  • Glide.get(context).clearMemory();(清除內(nèi)存緩存) 必須在主線程

3.圓形圖片設(shè)置占位圖后第一次只顯示占位圖,第二次才正常顯示

這個(gè)問題比較多出現(xiàn)在用了自定義的圓形圖片控件或者CircleImageView之類的灌砖,解決方法如下:
(1)不設(shè)置占位圖
(2)使用Glide自帶的轉(zhuǎn)換來加載圓形圖片

Glide.with(this)
     .load(url)
     .asBitmap()
     .centerCrop()
     .override(300, 300)
     .error(R.mipmap.delete)
     .into(new BitmapImageViewTarget(imageView) {
              @Override
              protected void setResource(Bitmap resource) {
              RoundedBitmapDrawable circularBitmapDrawable =
                      RoundedBitmapDrawableFactory.create(context.getResources(), resource);
              circularBitmapDrawable.setCircular(true);
              imageView.setImageDrawable(circularBitmapDrawable);
              }
       });

(3) 使用bitmap加載到CircleImageView中

Glide.with(mContext)
     .load(url) 
     .placeholder(R.drawable.loading_spinner)
     .into(new SimpleTarget<Bitmap>(width, height) {
        @Override 
        public void onResourceReady(Bitmap bitmap, GlideAnimation anim) {
            CircleImageView使用setImageBitmap(bitmap) 
        } 
    };

4. 設(shè)置了占位圖后璧函,第一次加載的圖片大小和占位圖一樣

比如我在XML里這么寫

     <ImageView
            android:id="@+id/normal_iv"
            android:layout_width="150dp"
            android:layout_height="200dp"
            android:scaleType="fitCenter"/>

在Activity里這么寫

Glide.with(mContext)
                .load(Constant.IMAGE_URL)
                .placeholder(R.mipmap.ic_zhanwei)
                .into(normalIv);

占位圖是一張正方形的圖,要加載的是一張寬圖基显,ScaleType用的是fitCenter,理論上講加載出來的圖片應(yīng)該是居中等比例顯示的蘸吓,就像這樣

圖片.png

但實(shí)際上第一次加載時(shí),是這樣

圖片.png

圖片被拉伸到和占位圖一樣的大小, 只有加載過一次后撩幽,圖片才能正常加載美澳。這種情況比較多出現(xiàn)在特定寬高或者動(dòng)態(tài)創(chuàng)建ImageView時(shí),設(shè)置的占位圖和實(shí)際加載的圖片或ScaleType比例不同,解決辦法是去除占位圖摸航,在ImageView中設(shè)置background當(dāng)占位圖。

5. 加載GIF特別慢或加載出錯(cuò)

偶爾需要加載GIF圖片時(shí)舅桩,會(huì)出現(xiàn)加載很慢的情況酱虎,可以加上diskCacheStrategy(DiskCacheStrategy.SOURCE),這樣可以很快加載出來擂涛。另外可以通過GlideDrawableImageViewTarget(ImageView view, int maxLoopCount)進(jìn)行循環(huán)次數(shù)的控制读串。
加載GIF一般會(huì)加上asGif的方法,不加也是可以加載的撒妈,但如果加上這個(gè)方法后恢暖,圖片卻不是GIF,會(huì)加載出錯(cuò)狰右。

參考作者:王元_Trump
鏈接:http://www.reibang.com/p/e78407a18716
參考作者:http://www.reibang.com/p/791ee473a89b
參考作者:小落zl
原文:https://blog.csdn.net/u014301370/article/details/71131533

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末杰捂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子棋蚌,更是在濱河造成了極大的恐慌嫁佳,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谷暮,死亡現(xiàn)場(chǎng)離奇詭異蒿往,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)湿弦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門瓤漏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事蔬充〉悖” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵娃惯,是天一觀的道長(zhǎng)跷乐。 經(jīng)常有香客問我,道長(zhǎng)趾浅,這世上最難降的妖魔是什么愕提? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮皿哨,結(jié)果婚禮上浅侨,老公的妹妹穿的比我還像新娘。我一直安慰自己证膨,他們只是感情好如输,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著央勒,像睡著了一般不见。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上崔步,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天稳吮,我揣著相機(jī)與錄音,去河邊找鬼井濒。 笑死灶似,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的瑞你。 我是一名探鬼主播酪惭,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼者甲!你這毒婦竟也來了春感?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤过牙,失蹤者是張志新(化名)和其女友劉穎甥厦,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寇钉,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡刀疙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了扫倡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谦秧。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡竟纳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出疚鲤,到底是詐尸還是另有隱情锥累,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布集歇,位于F島的核電站桶略,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏诲宇。R本人自食惡果不足惜际歼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望姑蓝。 院中可真熱鬧鹅心,春花似錦、人聲如沸纺荧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宙暇。三九已至输枯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間占贫,已是汗流浹背用押。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留靶剑,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓池充,卻偏偏與公主長(zhǎng)得像桩引,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子收夸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354