ImageView显示圆角图片的一种方式
当我们需要ImageView显示圆角但是又没有圆角资源图时,可以参考以下方式
<ImageViewandroid:layout_width="244dp"android:layout_height="244dp"android:background="@drawable/rounded_corners"android:clipToOutline="true"android:scaleType="centerCrop"android:src="@drawable/my_pic/>
重点是clipToOutline和background这两个属性的结合使用,clipToOutline设置为true代表图片会按照圆角形状的背景被裁剪,这里我们的背景设置如下:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"><corners android:radius="20dp"/><solid android:color="@color/colorTransparent" /></shape>
我们把圆角设置为20dp
拓展讲下scaleType这个属性:
-
center:
保持图片原始大小
将图片居中显示在ImageView中
不缩放图片,如果图片比View大,则超出部分会被裁剪 -
centerCrop:
保持图片宽高比缩放
使图片至少在一个维度上填满View
居中裁剪超出的部分 -
centerInside:
保持图片宽高比缩放图片
使图片完全显示在View内
如果图片比View小,则不会被放大 -
fitCenter:
保持图片宽高比缩放图片
使图片完全显示在View内
图片会在View中居中显示 -
fitStart:
类似fitCenter,但图片对齐到View左上角 -
fitEnd:
类似fitCenter,但图片对齐到View右下角
-
fitXY:
不保持宽高比
拉伸图片以完全填满View
可能导致图片变形 -
matrix:
使用矩阵变换显示图片
允许通过setImageMatrix()方法自定义变换
关于这个属性的使用建议
头像:使用centerCrop确保头像填满整个View不变形
完整显示图片:使用fitCenter或者centerInside
背景图片:使用center或fitXY确保不变形
精确控制的图片:matrix