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/