Android 關(guān)于Glide的拓展(高斯模糊养篓、加載監(jiān)聽、圓形圖片)

高斯模糊.png

1赂蕴、引用

抱歉柳弄,之前由于個(gè)人疏忽原因誤解了。官方自身是不能使用高斯模糊的概说,引入的庫應(yīng)為如下碧注,將官方的額外擴(kuò)展了,使其可以支持高斯模糊糖赔。

compile 'jp.wasabeef:glide-transformations:2.0.1'

2萍丐、加載圖片

2.1 基本加載

Glide.with(context)
    .load(url)
    .into(imageView);

2.2 設(shè)置加載中和加載失敗的情況

Glide.with(context)
    .load(url)
    .placeholder(R.drawable.loading) //占位符 也就是加載中的圖片,可放個(gè)gif
    .error(R.drawable.failed) //失敗圖片
    .into(view);

2.3 加載動(dòng)畫和靜態(tài)圖

Glide.with(context)
    .load(url)
    .asGif() // 只能加載gif文件
     // .asBitmap() // 將gif作為靜態(tài)圖加載
    .into(imageView); 

2.4 添加圖片淡入加載的效果

Glide.with(context)
    .load(url)
    .placeholder(R.drawable.loading)
    .error(R.drawable.failed) 
    .crossFade(1000) // 可設(shè)置時(shí)長(zhǎng)放典,默認(rèn)“300ms”
    .into(view);

2.5 加載高斯模糊圖

Glide.with(context)
    .load(url)
    .placeholder(R.drawable.loading)
    .error(R.drawable.failed) 
    .crossFade(1000)
    .bitmapTransform(new BlurTransformation(context,23,4))  // “23”:設(shè)置模糊度(在0.0到25.0之間)逝变,默認(rèn)”25";"4":圖片縮放比例,默認(rèn)“1”。
    .into(view);

2.6 加載監(jiān)聽器RequestListener

Glide.with(this).load(internetUrl).listener(new RequestListener<String, GlideDrawable>() {
            @Override
            public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
                Toast.makeText(getApplicationContext(),"資源加載異常",Toast.LENGTH_SHORT).show();
                return false;
            }
            //這個(gè)用于監(jiān)聽圖片是否加載完成
            @Override
            public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
                Toast.makeText(getApplicationContext(),"圖片加載完成",Toast.LENGTH_SHORT).show();
                return false;
            }
        }).into(imageView);

注意:如果需要加載完成后設(shè)置圖片透明度為0奋构,則不能設(shè)置.placeholder(R.drawable.url)壳影,否則達(dá)不到你想要的效果。

2.7 圖片緩存機(jī)制

Glide緩存策略

Glide默認(rèn)開啟磁盤緩存和內(nèi)存緩存弥臼,當(dāng)然也可以對(duì)單張圖片進(jìn)行設(shè)置特定的緩存策略宴咧。
設(shè)置圖片不加入到內(nèi)存緩存

Glide.with( context )
    .load( eatFoodyImages[0] )
    .skipMemoryCache( true )
    .into( imageViewInternet );

設(shè)置圖片不加入到磁盤緩存

Glide.with( context )
    .load( eatFoodyImages[0] )
    .diskCacheStrategy( DiskCacheStrategy.NONE )
    .into( imageViewInternet );

Glide支持多種磁盤緩存策略:

DiskCacheStrategy.NONE :不緩存圖片
DiskCacheStrategy.SOURCE :緩存圖片源文件
DiskCacheStrategy.RESULT:緩存修改過的圖片
DiskCacheStrategy.ALL:緩存所有的圖片,默認(rèn)

Glide自動(dòng)緩存當(dāng)前圖片的尺寸径缅,如果其他地方取這個(gè)比例的圖片則取的是緩存掺栅。不緩存等比例的圖片!如果其他地方想要取當(dāng)前圖片的緩存纳猪,可加載時(shí)設(shè)置當(dāng)前圖片的寬高柿冲,用這個(gè)方法:override(300,400),值在dimens里取,直接設(shè)置會(huì)損失清晰度兆旬。

2.8 加載圓角圖片

public class GlideCircleTransform extends BitmapTransformation {
    public GlideCircleTransform(Context context) {
        super(context);
    }

    @Override
    protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
        return circleCrop(pool, toTransform);
    }

    private static Bitmap circleCrop(BitmapPool pool, Bitmap source) {
        if (source == null) return null;
        int size = Math.min(source.getWidth(), source.getHeight());
        int x = (source.getWidth() - size) / 2;
        int y = (source.getHeight() - size) / 2;
        // TODO this could be acquired from the pool too
        Bitmap squared = Bitmap.createBitmap(source, x, y, size, size);
        Bitmap result = pool.get(size, size, Bitmap.Config.ARGB_8888);
        if (result == null) {
            result = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
        }
        Canvas canvas = new Canvas(result);
        Paint paint = new Paint();
        paint.setShader(new BitmapShader(squared, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP));
        paint.setAntiAlias(true);
        float r = size / 2f;
        canvas.drawCircle(r, r, r, paint);
        return result;
    }

    @Override
    public String getId() {
        return getClass().getName();
    }
}

使用:

Glide.with(mContext)
    .load(imageUrl)
    .transform(new GlideCircleTransform(mContext))
    .into(holder.imageView);

2.9 獲得圖片緩存路徑

private String getImagePath(String imgUrl) {    
      String path = null;    
      FutureTarget<File> future = Glide.with(ViewBigImageActivity.this)
             .load(imgUrl)
             .downloadOnly(500, 500);    
     try {        
            File cacheFile = future.get();        
            path = cacheFile.getAbsolutePath();    
     } catch (InterruptedException | ExecutionException e) { 
            e.printStackTrace();    
     }    
     return path;
}

注意:應(yīng)在子線程中執(zhí)行假抄。

使用:


new Thread(new Runnable() {
    @Override
    public void run() {
        // 子線程獲得圖片路徑
        final String imagePath = getImagePath(imageUrl);
        // 主線程更新
        MainActivity.this.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                // 操作代碼
            }
        });
    }
}).start();

3、推薦閱讀

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末丽猬,一起剝皮案震驚了整個(gè)濱河市宿饱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌脚祟,老刑警劉巖谬以,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異由桌,居然都是意外死亡为黎,警方通過查閱死者的電腦和手機(jī)邮丰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來铭乾,“玉大人剪廉,你說我怎么就攤上這事】婚荩” “怎么了斗蒋?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)笛质。 經(jīng)常有香客問我泉沾,道長(zhǎng),這世上最難降的妖魔是什么妇押? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任跷究,我火速辦了婚禮,結(jié)果婚禮上敲霍,老公的妹妹穿的比我還像新娘揭朝。我一直安慰自己,他們只是感情好色冀,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布潭袱。 她就那樣靜靜地躺著,像睡著了一般锋恬。 火紅的嫁衣襯著肌膚如雪屯换。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天与学,我揣著相機(jī)與錄音彤悔,去河邊找鬼。 笑死索守,一個(gè)胖子當(dāng)著我的面吹牛晕窑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播卵佛,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼杨赤,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了截汪?” 一聲冷哼從身側(cè)響起疾牲,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎衙解,沒想到半個(gè)月后阳柔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蚓峦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年舌剂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了济锄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡霍转,死狀恐怖荐绝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情谴忧,我是刑警寧澤很泊,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布角虫,位于F島的核電站沾谓,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏戳鹅。R本人自食惡果不足惜均驶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望枫虏。 院中可真熱鬧妇穴,春花似錦、人聲如沸隶债。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽死讹。三九已至瞒滴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赞警,已是汗流浹背妓忍。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留愧旦,地道東北人世剖。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像笤虫,于是被迫代替她去往敵國和親旁瘫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容