1. 程式人生 > >不用自定義,ImageView實現圓角的兩種方式

不用自定義,ImageView實現圓角的兩種方式

不多廢話,直切主題。
方案一、利用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);