Glide雖然非常好用但是沒找到把圖片圓角的方法,所以百度了一個非常不錯的加載類自己實現圓角圖
感謝原文章作者:http://blog.csdn.net/weidongjian/article/details/47144549
自定義一個extend BitmapTransformation的方法,把獲得的bitmap轉化成圓形圖片
import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapShader; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.RectF; import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; import com.bumptech.glide.load.resource.bitmap.BitmapTransformation; /** * 這是一個Glide的加載圖片的幫助類,用來把圖片圓角 * Created by Lizhanqi on 2016/9/16 0016. */ public class GlideRoundTransform extends BitmapTransformation { private static float radius = 0f; public GlideRoundTransform(Context context) { this(context, 4); } public GlideRoundTransform(Context context, int dp) { super(context); this.radius = Resources.getSystem().getDisplayMetrics().density * dp; } @Override protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) { return roundCrop(pool, toTransform); } private static Bitmap roundCrop(BitmapPool pool, Bitmap source) { if (source == null) return null; Bitmap result = pool.get(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888); if (result == null) { result = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888); } Canvas canvas = new Canvas(result); Paint paint = new Paint(); paint.setShader(new BitmapShader(source, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP)); paint.setAntiAlias(true); RectF rectF = new RectF(0f, 0f, source.getWidth(), source.getHeight()); canvas.drawRoundRect(rectF, radius, radius, paint); return result; } @Override public String getId() { return getClass().getName() + Math.round(radius); } }
使用方式:
private RequestManager glideRequest= Glide.with(this);
//加載圓形圖
glideRequest.load("https://www.baidu.com/img/bdlogo.png")
//最重要就是調用這個方法實現,只傳入一個上下文那么他會把圖片畫成圓形圖,傳入數字,自定義圓角的角度
.transform(new GlideCircleTransform(context))
.into(imageView);
//自定義圓角的角度實現圓角矩形
glideRequest.load("https://www.baidu.com/img/bdlogo.png").transform(new GlideRoundTransform(context, 10)).into(imageView);