天天看點

關于 Glide 加載圖檔圓角問題

在使用 Glide 加載圖檔是,當我們在顯示一張圖檔的時候,想讓他等比例縮放到ImageView的大小,又想這張圖檔實作矩形圓角,我們的正常的寫法就是:

Glide.with(context)
    .load(url)
    .transform(new GlideCircleTransform(context))
    .centerCrop()
    .diskCacheStrategy(DiskCacheStrategy.ALL)
    .crossFade()
    .into(view);
           

但是這樣在項目中出現的效果卻是這樣的:

關于 Glide 加載圖檔圓角問題

你會發現,咦?我的圓角呢?我代碼明明設定了啊。難道我寫的是假代碼?

那麼,我們去掉 centerCrop() 再看看:

關于 Glide 加載圖檔圓角問題

現在圓角是有了,但是圖檔明顯卻沒有撐滿了。

原因到底是什麼呢? 其實主要問題是在 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裡面就可以了,效果圖

關于 Glide 加載圖檔圓角問題

轉自:http://blog.csdn.net/Alpha58/article/details/56835558

繼續閱讀