1. 程式人生 > >Glide中centerCrop()與.transform()共用問題

Glide中centerCrop()與.transform()共用問題

當我們在顯示一張圖片的時候,想讓他等比例縮放到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裡面就可以解決問題了,效果圖
這裡寫圖片描述

附上矩形圓角的程式碼:,如下