Android:Glide使用

圖片加載很是重要,我也對(duì)比過(guò)別的庫(kù),覺(jué)得還是Glide好用,我只是簡(jiǎn)單的分享下我開發(fā)用到的相關(guān)使用方法

如果想深入研究下可以參考Glide最全解析

Glide的配置

配置很簡(jiǎn)單,只要在Module的Gradle添加依賴即可

compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.android.support:support-v4:25.3.0'

當(dāng)然,如果涉及到網(wǎng)絡(luò)加載圖片,記得添加網(wǎng)絡(luò)權(quán)限

<uses-permission android:name="android.permission.INTERNET" />

Glide的使用

初始化

Glide支持Activity和Fragment的綁定

Glide.with(Context context);
Glide.with(Activity activity);
Glide.with(FragmentActivity activity);
Glide.with(Fragment fragment);

將Activity/Fragment作為with()參數(shù)的好處是:圖片加載會(huì)和Activity/Fragment的生命周期保持一致

加載資源

Glide支持網(wǎng)絡(luò)資源、assets資源、Resources資源、File資源、Uri資源、字節(jié)數(shù)組

Glide.with(this).load("http://pic9/258/a2.jpg").into(iv);
Glide.with(this).load("file:///xxx.jpg").into(iv);
Glide.with(this).load(R.mipmap.ic_launcher).into(iv);
Glide.with(this).load(file).into(iv);
Glide.with(this).load(uri).into(iv);
Glide.with(this).load(byte[]).into(iv);

加載gif圖片

  • 加載靜態(tài)gif圖片(靜態(tài)就是gif相當(dāng)于一張圖片)
Glide.with(this).load(imageUrl).asBitmap().into(iv);
  • 加載動(dòng)態(tài)gif圖片(gif是動(dòng)的)
Glide.with(this).load(imageUrl).asGif().into(iv);
  • 顯示本地視頻

Glide 還能顯示視頻!只要他們是存儲(chǔ)在手機(jī)上的。假設(shè)你通過(guò)讓用戶選擇一個(gè)視頻后得到了一個(gè)文件路徑:

String filePath = "/storage/emulated/0/Pictures/example_video.mp4";
Glide .with( context )
    .load( Uri.fromFile(new File( filePath)))
    .into( iv);

這里需要注意的是,這僅僅對(duì)本地視頻起作用。如果沒(méi)有存儲(chǔ)在該設(shè)備上的視頻(如一個(gè)網(wǎng)絡(luò) URL 的視頻),它是不工作的!

設(shè)置加載中和加載失敗的圖片

  • 設(shè)置加載中圖片
.placeholder(R.drawable.placeholder)
  • 設(shè)置加載失敗圖片
.error(R.drawable.error)
  • 設(shè)置縮略圖支持
//先加載縮略圖 然后在加載全圖
Glide.with(this)
    .load(imageUrl)
    .thumbnail(0.1f)
    .into(iv);

設(shè)置加載動(dòng)畫

  • 默認(rèn)是淡入淡出動(dòng)畫
Glide.with(this)
    .load("http://nm/photo/1f/1f7a.jpg")
    .crossFade(int duration)//去減慢(或加快)動(dòng)畫
    .into(iv);
  • 使用 crossFade()
Glide.with(this)
    .load("http://nm/photo/1f/1f7a.jpg")
    .crossFade()//動(dòng)畫默認(rèn)的持續(xù)時(shí)間是 300毫秒
    .into(iv);
  • 添加自定義動(dòng)畫
Glide.with(this)
    .load("http://nm/photo/1f/1f7a.jpg")
    .animate(R.anim.fade_in)
    .into(iv);
  • 去除動(dòng)畫
Glide.with(this)
    .load("http://nm/photo/1f/1f7a.jpg")
    .dontAnimate()
    .into(iv);

縮放圖像

  • CenterCrop 即縮放圖像至填充到ImageView內(nèi),裁剪額外的部分。ImageView會(huì)完全填充,但圖像可能不會(huì)顯示不全。
Glide.with(this)
    .load(url)
    .centerCrop ()
    .into(iv);
  • fitCenter() 圖片會(huì)按照imageview長(zhǎng)寬中最小的邊界作為依據(jù),按比例縮放圖像。該圖像將會(huì)完全顯示,但可能不會(huì)填滿整個(gè) ImageView。
Glide.with(this)
    .load(url)
    .fitCenter()
    .into(iv);

設(shè)置監(jiān)聽回調(diào)

Glide.with(this)
    .load(imageUrl)
    .listener(RequestListener listener)
    .into(iv);

設(shè)置加載尺寸

  • 指定尺寸(圖片大小在xml中不能寫死,是wrap_content才可以指定尺寸)
Glide.with(this)
    .load("http://nm/photo/1f/1f7a.jpg")
    .override(600,600)
    .into(iv);

設(shè)置緩存策略

  • 設(shè)置跳過(guò)內(nèi)存緩存
Glide.with(this)
    .load("http://nm/photo/1f/1f7a.jpg")
    .skipMemoryCache(true)
    .into(iv);
  • 設(shè)置緩存策略
Glide.with(this)
    .load("http://nm/photo/1f/1f7a.jpg")
    .diskCacheStrategy(DiskCacheStrategy.ALL)
    .into(iv);
DiskCacheStrategy.ALL //緩存源資源和轉(zhuǎn)換后的資源
DiskCacheStrategy.NONE//不做任何磁盤緩存
DiskCacheStrategy.RESULT //緩存轉(zhuǎn)換后的資源
DiskCacheStrategy.SOURCE緩存源資源
  • 清理磁盤緩存
Glide.get(this).clearDiskCache();//在子線程中進(jìn)行
  • 清理內(nèi)存緩存
Glide.get(this).clearMemory();//可以在主線程
  • 設(shè)置磁盤緩存目錄和圖片效果(默認(rèn)Bitmap格式是RGB_565)
  1. 在AndroidManifest中application節(jié)點(diǎn)下:
<!--glide緩存目錄設(shè)置-->
<meta-data
    android:name="包名.widget.GlideModuleConfig"
    android:value="GlideModule" />
  1. 創(chuàng)建類GlideModuleConfig
public class GlideModuleConfig implements GlideModule {
    @Override
    public void applyOptions(Context context, GlideBuilder builder) {
        //內(nèi)部存儲(chǔ)/Android/data/包名/cache/glide-images
        builder.setDiskCache(new ExternalCacheDiskCacheFactory(context, "glide-images", 2 * 1024 * 1024));
        //將默認(rèn)的RGB_565效果轉(zhuǎn)換到ARGB_8888
        builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888);
    }

    @Override
    public void registerComponents(Context context, Glide glide) {
        //不做處理
    }
}

BitmapTransformation

Glide在Github上還有一個(gè)庫(kù),可以處理圖片效果,比如裁剪、圓角、高斯模糊等等

  • 引入依賴庫(kù)
compile 'jp.wasabeef:glide-transformations:2.0.1'
  • 實(shí)現(xiàn)高斯模糊
//radius取值1-25,值越大圖片越模糊
Glide.with(context)
    .load(url)
    .bitmapTransform(new BlurTransformation(context, radius))
    .into(iv);
  • 原圖基礎(chǔ)上變換設(shè)置圓形圖
Glide.with(context)
    .load(url)
    .bitmapTransform(new CropCircleTransformation(this))
    .into(iv);
  • 原圖基礎(chǔ)上變換成圓圖 +毛玻璃(高斯模糊)
Glide.with(this)
    .load(url)
    .bitmapTransform(new BlurTransformation(this, 25), new CropCircleTransformation(this))
    .into(iv);
  • 原圖處理成圓角
//如果是四周已經(jīng)是圓角則RoundedCornersTransformation.CornerType.ALL
Glide.with(this)
    .load(url)
    .bitmapTransform(new RoundedCornersTransformation(this, 30, 0, RoundedCornersTransformation.CornerType.BOTTOM))
    .into(iv);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、在build.gradle中添加依賴: compile 'com.github.bumptech.glide...
    Android開發(fā)__落岑閱讀 6,445評(píng)論 3 9
  • 一、簡(jiǎn)介 在泰國(guó)舉行的谷歌開發(fā)者論壇上,谷歌為我們介紹了一個(gè)名叫Glide的圖片加載庫(kù),作者是bumptech。這...
    天天大保建閱讀 7,762評(píng)論 2 28
  • 一、Glide簡(jiǎn)介 Glide 是 Google 員工的開源項(xiàng)目, Google I/O上被推薦使用,一個(gè)高效、開...
    mVincent閱讀 1,585評(píng)論 0 0
  • 之前有一個(gè)微博加我的妹紙,因?yàn)楸舜酥g磁場(chǎng)相近所以一不小心聊成了好盆友。 前段時(shí)間她處于實(shí)習(xí)前期,就是即將步入社會(huì)...
    阿期歐巴閱讀 2,469評(píng)論 15 81
  • 個(gè)人認(rèn)為愛(ài)情是種情感,一種強(qiáng)烈的感情。愛(ài)情就是遵守內(nèi)心感受的情感,不再摻雜其他東西情感,沒(méi)有目的性的情感體驗(yàn),才是...
    長(zhǎng)不大的小豬閱讀 229評(píng)論 0 0

友情鏈接更多精彩內(nèi)容