在使用 Glide 加載圖檔是,當我們在顯示一張圖檔的時候,想讓他等比例縮放到ImageView的大小,又想這張圖檔實作矩形圓角,我們的正常的寫法就是:
Glide.with(context)
.load(url)
.transform(new GlideCircleTransform(context))
.centerCrop()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.crossFade()
.into(view);
但是這樣在項目中出現的效果卻是這樣的:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0NXYFhGd192UvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2Lc1TPB9UMFdUY3h3VRZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TN0IzNzkTMxEDNyIDM3EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
你會發現,咦?我的圓角呢?我代碼明明設定了啊。難道我寫的是假代碼?
那麼,我們去掉 centerCrop() 再看看:
現在圓角是有了,但是圖檔明顯卻沒有撐滿了。
原因到底是什麼呢? 其實主要問題是在 centerCrop()方法裡面。
看centerCrop()方法的源碼可知,也是需要調用transform()方法的.是以前後共用CenterCrop會覆寫掉GlideRoundImage的效果:
public BitmapRequestBuilder<ModelType, TranscodeType> centerCrop() {
return transform(glide.getBitmapCenterCrop());
}
那麼我們要怎麼去解決呢? 方法如下:
Glide.with(context)
.load(url)
.transform(new CenterCrop(context), new GlideRoundTransform(context))
.diskCacheStrategy(DiskCacheStrategy.ALL)
.crossFade()
.into(view);
2個效果同時放在transform裡面就可以了,效果圖
轉自:http://blog.csdn.net/Alpha58/article/details/56835558