Glide中centerCrop()與.transform()共用問題
阿新 • • 發佈:2019-01-09
當我們在顯示一張圖片的時候,想讓他等比例縮放到ImageView的大小,又想這張圖片實現矩形圓角.
我們一開始會想到這麼設定
.transform(new GlideRoundImage(getActivity()))
.centerCrop()
But,這樣設定後,圖片只有centerCrop效果,卻沒有矩形圓角效果.如圖
但是這並不是我們想要的效果,然後會想著去掉centerCrop看看是怎樣的
.transform(new GlideRoundImage(getActivity()))
結果卻是這樣的,沒錯! 圖片並沒有按比例縮放. 如圖:
原因
看centerCrop()方法的原始碼可知,也是需要呼叫transform()方法的.所以前後共用CenterCrop會覆蓋掉GlideRoundImage的效果
public BitmapRequestBuilder<ModelType, TranscodeType> centerCrop() {
return transform(glide.getBitmapCenterCrop());
}
解決方法:
.transform(new CenterCrop(getActivity()),new GlideRoundImage(getActivity()))
2個效果同時放在transform裡面就可以解決問題了,效果圖