不多废话,直切主题。
方案一、利用CardView嵌套ImageView实现圆角。具体实现方式见文章《CardView的使用》
方案二、利用Glide的RequestOptions.bitmapTransform来实现,很简单,具体如下:
RoundedCorners corners = new RoundedCorners(50);
RequestOptions roundedOptions = RequestOptions.bitmapTransform(corners);
ImageView ivCard = findViewById(R.id.ivCard);
String url = "http://img0.imgtn.bdimg.com/it/u=1352823040,1166166164&fm=27&gp=0.jpg";
Glide.with(this).load(url).apply(roundedOptions).into(ivCard);
效果如下:
上图中,最外层的圆角是用CardView实现的,内层图片的圆角是通过Glide来实现的。是不是很简单,再也不用到处找自定义的圆角RoundImageView了。
RequestOptions 的其他用法:
RequestOptions options = new RequestOptions()
//加载成功之前占位图
.placeholder(R.mipmap.ic_launcher)
//加载错误之后的错误图
.error(R.mipmap.ic_launcher)
//指定图片控件的尺寸
.override(400,400)
//指定图片的缩放类型为fitCenter(等比例缩放图片,宽或者是高等于ImageView的宽或者是高)
.fitCenter()
// 指定图片的缩放类型为centerCrop(等比例缩放图片,
// 直到图片的寬高都大于等于ImageView的寬高,然后截取中间的显示)
.centerCrop()
//指定图片的缩放类型为centerCrop(圆形)
.circleCrop()
//true:不使用内存缓存;false:設置內存緩存
.skipMemoryCache(true)
.skipMemoryCache(false)
//同時缓存原始分辨率的图片以及轉換壓縮過後的图片
.diskCacheStrategy(DiskCacheStrategy.ALL)
//不使用磁盘缓存
.diskCacheStrategy(DiskCacheStrategy.NONE)
//只缓存原始分辨率的图片
.diskCacheStrategy(DiskCacheStrategy.DATA)
//只缓存轉換壓縮過後的图片
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
//根據實際情況系統自動選擇何種緩存
.diskCacheStrategy(DiskCacheStrategy.AUTOMATIC);