不用自定義,ImageView實現圓角的兩種方式
阿新 • • 發佈:2018-12-21
不多廢話,直切主題。
方案一、利用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);