亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Glide用法與技巧以及優秀庫的推薦

2019-10-21 21:33:57
字體:
來源:轉載
供稿:網友

當前較為知名的幾個圖片加載庫是Universal-ImageLoader、Glide、FrescoPicasso

比較如下:

Universal-ImageLoader庫2015年年底作者已經停止維護Gilde是Picasso的優化版最后就是Facebook的Fresco,聽說極為強大和高效率,但是大小有4M。最后Glide,google維護。Picasson的優化版,使用簡單,也許沒有Fresco那么強大,但是覺得完全可以hold住大部分項目。

比較 Picasso 與 Glide

  • 1.兩者使用方式類似,但Glide的with()接受的不僅僅是Context,還可以是Activity或是Fragment,Context會自動的從他們獲取。同時將Activity/Fragment作為with()參數的好處是:圖片加載會和Activity/Fragment的生命周期保持一致,比如Paused狀態在暫停加載,在Resumed的時候又自動重新加載。所以我建議傳參的時候傳遞Activity 和 Fragment給Glide,而不是Context。
  • 2.Glide加載的圖片質量要略差于Picasso,這又是為什么呢?這是因為Glide默認的Bitmap格式是RGB_565,比ARGB_8888格式的內存開銷要小一半。Glide當然也可以通過GlideModule設置格式。
  • 3.兩者在磁盤緩存策略上有很大的不同。Picasso緩存的是全尺寸的,而Glide緩存的是跟ImageView尺寸相同的。Glide的這種方式優點是加載顯示非???。而Picasso的方式則因為需要在顯示之前重新調整大小而導致一些延遲。
  • 4.Glide可以加載GIF動態圖,而Picasso不能。
  • 5.Picasso (v2.5.1)大小約為118KB,然而Glide (v3.5.2)的大小約為430KB。Picasso的方法數大約480,然而Glide的方法數約2678。

導入

Picasso和Glide都在jcenter上。在項目中添加依賴非常簡單:

Picasso

dependencies {   compile 'com.squareup.picasso:picasso:2.5.1' } 

Glide

dependencies {   compile 'com.github.bumptech.glide:glide:3.5.2'   compile 'com.android.support:support-v4:24.0.0' } 

Glide的with方法不光接受Context,還接受Activity 和 Fragment,Context會自動的從他們獲取。

1.網絡加載圖片到ImageView中

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

2.當加載網絡圖片時,由于加載過程中圖片未能及時顯示,此時可能需要設置等待時的圖片,通過placeHolder()方法

Glide.with(context).load(imageUrl).placeholder(R.mipmap.ic_launcher).into(imageView);

3.當加載圖片失敗時,通過error(Drawable drawable)方法設置加載失敗后的圖片顯示:

Glide.with(context).load(imageUrl).error(R.mipmap.ic_launcher).into(imageView);

4.圖片的縮放,centerCrop()和fitCenter(): 

1)使用centerCrop是利用圖片圖填充ImageView設置的大小,如果ImageView的Height是match_parent則圖片就會被拉伸填充

Glide.with(context).load(imageUrl).centerCrop().into(imageView);

2)使用fitCenter即縮放圖像讓圖像都測量出來等于或小于 ImageView 的邊界范圍,該圖像將會完全顯示,但可能不會填滿整個ImageView。

Glide.with(context).load(imageUrl).fitCenter().into(imageView);

5.顯示gif動畫,asGif()判斷是否是gif動畫

Glide.with(context).load(imageUrl).asGif().into(imageView);

6.顯示本地視頻

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

7.緩存策略

Glide.with( context ).load(imageUrl).skipMemoryCache(true).into(imageViewInternet );//跳過內存緩存
Glide.with( context ).load(imageUrl).diskCacheStrategy(DiskCacheStrategy.NONE).into( imageViewInternet );//跳過硬盤緩存
  • DiskCacheStrategy.NONE 什么都不緩存
  • DiskCacheStrategy.SOURCE 僅僅只緩存原來的全分辨率的圖像
  • DiskCacheStrategy.RESULT 僅僅緩存最終的圖像,即降低分辨率后的(或者是轉換后的)
  • DiskCacheStrategy.ALL 緩存所有版本的圖像(默認行為)

8.優先級,設置圖片加載的順序:

Glide.with(context).load(imageUrl).priority( Priority.HIGH).into( imageView);

9.獲取Bitmap,設置CircleImageVIew可以使用這個ImageView庫

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

10.加載圓形圖片和圓角圖片

//圓形圖片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();  }}
//圓角圖片public class GlideRoundTransform extends BitmapTransformation {  private static float radius = 0f;  public GlideRoundTransform(Context context) {    this(context, 4);  }  public GlideRoundTransform(Context context, int dp) {    super(context);    this.radius = Resources.getSystem().getDisplayMetrics().density * dp;  }  @Override protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {    return roundCrop(pool, toTransform);  }  private static Bitmap roundCrop(BitmapPool pool, Bitmap source) {    if (source == null) return null;    Bitmap result = pool.get(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888);    if (result == null) {      result = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888);    }    Canvas canvas = new Canvas(result);    Paint paint = new Paint();    paint.setShader(new BitmapShader(source, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP));    paint.setAntiAlias(true);    RectF rectF = new RectF(0f, 0f, source.getWidth(), source.getHeight());    canvas.drawRoundRect(rectF, radius, radius, paint);    return result;  }  @Override public String getId() {    return getClass().getName() + Math.round(radius);  }}
Glide.with(this).load("https://www.baidu.com/img/bdlogo.png").transform(new GlideRoundTransform(context)).into(imageView);Glide.with(this).load("https://www.baidu.com/img/bdlogo.png").transform(new GlideRoundTransform(context,10)).into(imageView);Glide.with(this).load("https://www.baidu.com/img/bdlogo.png").transform(new GlideCircleTransform(context)).into(imageView);

一些使用技巧

1.Glide.with(context).resumeRequests()Glide.with(context).pauseRequests()

當列表在滑動的時候,調用pauseRequests()取消請求,滑動停止時,調用resumeRequests()恢復請求。這樣是不是會好些呢?

2.Glide.clear()

當你想清除掉所有的圖片加載請求時,這個方法可以幫助到你。

3.ListPreloader

如果你想讓列表預加載的話,不妨試一下ListPreloader這個類。

一些基于Glide的優秀庫

1.glide-transformations

一個基于Glide的transformation庫,擁有裁剪,著色,模糊,濾鏡等多種轉換效果,贊的不行不行的~~

2.GlidePalette

一個可以在Glide加載時很方便使用Palette的庫。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品视频一区二区三区四| 国产亚洲精品日韩| 2018日韩中文字幕| 欧美中文在线视频| 国产精品久久久久久久久| 奇门遁甲1982国语版免费观看高清| 欧美性黄网官网| 亚洲视频在线观看网站| 欧美国产高跟鞋裸体秀xxxhd| 欧美日韩亚洲成人| 欧美黑人又粗大| 日韩中文字幕第一页| 黑人巨大精品欧美一区二区| 日韩免费观看av| 久久九九热免费视频| 亚洲欧洲国产精品| 51午夜精品视频| 日韩男女性生活视频| 亚洲国内精品视频| 欧美高清激情视频| 日韩精品视频免费在线观看| 久久好看免费视频| www国产精品com| 欧美日韩国产精品专区| 欧美性感美女h网站在线观看免费| 亚洲国产成人久久| 亚洲xxxx妇黄裸体| 日韩视频欧美视频| 亚洲va久久久噜噜噜| 日韩毛片在线观看| 日韩一区二区欧美| 国产精品久久一区| 夜夜狂射影院欧美极品| 国产99久久精品一区二区 夜夜躁日日躁| 精品亚洲一区二区三区四区五区| 日韩视频精品在线| 精品久久久一区二区| 日韩中文字幕免费看| 精品一区电影国产| 国内精品久久久久影院 日本资源| 国产精品美女呻吟| 国产精品视频免费在线| 午夜剧场成人观在线视频免费观看| 精品国产美女在线| 日韩最新中文字幕电影免费看| 久久精品视频在线播放| 韩国v欧美v日本v亚洲| 日韩女优人人人人射在线视频| 日本精品一区二区三区在线| 久久久久久久影视| 欧美日韩xxx| 国产精品久久久久久久久久尿| 久久亚洲国产成人| 亚洲免费视频观看| 国产91色在线| 欧美日韩高清在线观看| 在线视频免费一区二区| 欧美孕妇孕交黑巨大网站| 欧美视频在线视频| 国产精品老女人视频| 911国产网站尤物在线观看| 久久大大胆人体| 成人av电影天堂| 欧美电影第一页| 国产精品偷伦一区二区| 韩剧1988在线观看免费完整版| 亚洲欧美综合区自拍另类| 国产午夜精品一区二区三区| 欧美成人免费大片| 亚洲综合一区二区不卡| 成人www视频在线观看| 久久色在线播放| 亲爱的老师9免费观看全集电视剧| 国产精品视频精品视频| 亚洲人成伊人成综合网久久久| 毛片精品免费在线观看| 亚洲性生活视频在线观看| 亚洲无线码在线一区观看| 国产视频999| 亚洲男人天堂2024| 国产精品女视频| 日韩电影在线观看免费| 国内伊人久久久久久网站视频| 亚洲男人天堂视频| 97超级碰碰碰| 欧美国产精品人人做人人爱| 欧美老女人性生活| 欧美精品一区在线播放| 国产激情视频一区| 欧美激情综合色| 久久国产加勒比精品无码| 国产精品美女免费视频| 欧美丝袜一区二区三区| 国产精品一区二区三| 亚洲欧美日韩在线一区| 久久精品国产精品| 亚洲在线观看视频| 亚洲国产精品va在线| 色久欧美在线视频观看| 亚洲欧美国产精品久久久久久久| 国外成人性视频| 成人网在线视频| 免费99精品国产自在在线| 国产亚洲精品美女久久久| 欧美午夜精品久久久久久久| 热re91久久精品国99热蜜臀| 国模叶桐国产精品一区| 久久久久久亚洲精品不卡| 精品国产成人av| 黑人巨大精品欧美一区免费视频| 国产欧美日韩亚洲精品| 成人亚洲激情网| 久久久精品一区| 中文字幕日韩精品在线观看| 亚洲美女在线观看| 国产精品va在线| 国产精品91久久久久久| 欧美中文字幕视频| 日韩视频一区在线| 国产精品99久久久久久白浆小说| 欧美猛交免费看| 91国语精品自产拍在线观看性色| 少妇高潮久久77777| 亚洲国产美女精品久久久久∴| 欧美在线性视频| 日韩一区在线视频| 欧美激情视频一区二区三区不卡| 国产综合久久久久久| 国产精品永久在线| 亚洲欧美激情另类校园| 国产精品久久久久aaaa九色| 精品成人久久av| 国产精品久久久精品| 亚洲综合在线小说| 精品中文字幕在线观看| 欧美成在线视频| 成人欧美一区二区三区在线湿哒哒| 91夜夜揉人人捏人人添红杏| 精品香蕉一区二区三区| 久久久久一本一区二区青青蜜月| 欧美理论片在线观看| 久久福利视频导航| 亚洲精品国精品久久99热一| 久久精品国产91精品亚洲| 精品久久久久久亚洲精品| 久久男人av资源网站| 在线成人免费网站| 国产成人精品在线观看| 中国日韩欧美久久久久久久久| 亚洲丁香久久久| 日本一区二区不卡| www.久久草.com| 精品国偷自产在线| 中文字幕v亚洲ⅴv天堂| 亚洲国产成人精品女人久久久| 欧美精品电影免费在线观看| 中文字幕日韩av综合精品| 国产精品入口日韩视频大尺度| 国产精品第一页在线| 91精品久久久久久久久久久| 亚洲人成网站免费播放| 欧美自拍大量在线观看| 亚洲最大成人免费视频| 国产精品日韩欧美|