亚洲精品亚洲人成在线观看麻豆,在线欧美视频一区,亚洲国产精品一区二区动图,色综合久久丁香婷婷

              當(dāng)前位置:首頁 > IT技術(shù) > 移動(dòng)平臺(tái) > 正文

              Android的圖片加載之Glide
              2021-10-11 15:03:40

              Image的scaleType認(rèn)識(shí)

              Bitmap加載進(jìn)ImageView,為什么會(huì)形狀各異,是因?yàn)樵O(shè)置了不同的縮放方式,設(shè)置ImageView填充方式的前提是使用src作為設(shè)置圖片的來源,否則的話,會(huì)導(dǎo)致圖片填充方式設(shè)置無效的情況。

              • scaleType=“matrix” 是保持原圖大小、從左上角的點(diǎn)開始,以矩陣形式繪圖。
              • scaleType=“fitXY” 是將原圖進(jìn)行橫方向(即XY方向)的拉伸后繪制的。
              • scaleType=“fitStart” 是將原圖沿左上角的點(diǎn)(即matrix方式繪圖開始的點(diǎn)),按比例縮放原圖繪制而成的。
              • scaleType=“fitCenter” 是將原圖沿上方居中的點(diǎn)(即matrix方式繪圖第一行的居中的點(diǎn)),按比例縮放原圖繪制而成的。
              • scaleType=“fitEnd” 是將原圖沿下方居中的點(diǎn)(即matrix方式繪圖最后一行的居中的點(diǎn)),按比例縮放原圖繪制而成的。
              • scaleType=“Center” 是保持原圖大小,以原圖的幾何中心點(diǎn)和ImagView的幾何中心點(diǎn)為基準(zhǔn),只繪制ImagView大小的圖像。
              • scaleType=“centerCrop” 不保持原圖大小,以原圖的幾何中心點(diǎn)和ImagView的幾何中心點(diǎn)為基準(zhǔn),只繪制ImagView大小的圖像(以填滿ImagView為目標(biāo),對(duì)原圖進(jìn)行裁剪)。
              • scaleType=“centerInside” 不保持原圖大小,以原圖的幾何中心點(diǎn)和ImagView的幾何中心點(diǎn)為基準(zhǔn),只繪制ImagView大小的圖像(以顯示完整圖片為目標(biāo),對(duì)原圖進(jìn)行縮放)。

              Glide

              導(dǎo)入依賴的庫(kù)
              implementation 'com.github.bumptech.glide:glide:4.12.0'
              annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
              

              直接使用Glide

              //配置請(qǐng)求的參數(shù)
              RequestOptions options = RequestOptions
                              .centerCropTransform()//.centerCrop().autoClone();
                              .centerCrop()//指定圖片縮放類型
                              .fitCenter()//指定圖片縮放類型
                              .circleCrop()
                              .centerInside()
                              .override(300, 300)//指定圖片大小
                              .placeholder(R.drawable.ic_launcher_background)//定義View的占位符
                              .error(R.drawable.ic_launcher_background)//定義錯(cuò)誤圖片資源
                              .diskCacheStrategy(DiskCacheStrategy.NONE)//定義緩存策略
                              .priority(Priority.HIGH)//優(yōu)先級(jí)
                              .format(DecodeFormat.PREFER_RGB_565)//下載圖片類型
                              .skipMemoryCache(true);//跳過內(nèi)存緩存
                      //緩存策略 ALL(所有的圖像) NONE(不緩存) DATA(原數(shù)據(jù)) RESOURCE(轉(zhuǎn)換之后的資源) AUTOMATIC(自適應(yīng))
              
                      Glide.with(view)//配置相應(yīng)的界面生命周期
                              .applyDefaultRequestOptions(options)
                              .asBitmap()
                              .load(url)
                              .into(view);//調(diào)用對(duì)應(yīng)的bitmap到view中
              

              使用Glide擴(kuò)展

              第一步 生成全局的Glide對(duì)象

              @GlideModule
              public class XXAppGlideModule extends AppGlideModule {
              }
              

              第二步配置Glide的擴(kuò)展

              @GlideExtension
              public class XXGlideExtension {
                  private XXGlideExtension() {
                  }
              
                  /**
                   * 全局統(tǒng)一配置
                   *
                   * @param options options
                   */
                  @GlideOption
                  public static BaseRequestOptions<?> injectOptions(BaseRequestOptions<?> options) {
                      return options.placeholder(R.drawable.ic_loading)
                              .timeout(3000)
                              .error(R.drawable.ic_load_failed);
                  }
              
                  /**
                   * 圓形圖片擴(kuò)展
                   *
                   * @param options options
                   * @return circle options
                   */
                  @GlideOption
                  public static BaseRequestOptions<?> myCircleOptions(BaseRequestOptions<?> options) {
                      return injectOptions(options)
                              .circleCrop();
                  }
              }
              

              第三步 使用全局的Glide對(duì)象,記得要重新編譯才能生成Glide的擴(kuò)展

              GlideApp.with(this)
                              .load(imageUrl)
                              .myCircleOptions()//injectOptions()
                              .into(imageView);
              

              本文摘自 :https://www.cnblogs.com/

              開通會(huì)員,享受整站包年服務(wù)立即開通 >