在研究Android项目的时候看到了ImageView的adjustViewBounds和ScaleType这两个属性,想知道具体怎么使用,所以查阅了相关资料,总结如下
1、adjustViewBounds
官方给出的解释是:
Set this to true if you want the ImageView to adjust its bounds to preserve the aspect ratio of its drawable.
值为boolean类型,设置为true的时候,为了适应ImageView的边界,原图会等进行比例缩放,直到宽或高填满ImageView,宽和高不会超出ImageView的边界
PS:这里网上都说要跟MaxWidth和MaxHeight一起使用,否则没效果,但是官方并没有这么说。于是我做了一个小测试,加上MaxWidth、MaxHeight的demo和不加的,发现完全没有影响,所以个人认为这种该属性和MaxWidth、MaxHeight必须一起使用的说法是不对的。
XML中
android: adjustViewBounds = "true"
Java代码
setAdjustViewBounds(boolean)
2、ScaleType
ImageView的ScaleType属性用法比较简单,下面以表格的形式展示:
XML配置方法
Values | 用法 | 说明 |
---|---|---|
CENTER | android:scaleType = “center” | 在ImageView居中显示,保持原图大小,只有原图Size大于ImageView的时候超过部分才进行裁剪 |
CENTER_CROP | android:scaleType = “centerCrop” | 原图中心与ImageView中心对准,等比例放大原图使得原图宽和高都要填满ImageView,超出部分进行裁剪 |
CENTER_INSIDE | android:scaleType = “centerInside” | 与centerCrop相反,等比例缩小原图,使得原图能够在ImageView中完全显示,不必填满ImageView |
FIT_CENTER | android:scaleType = “fitCenter” | 等比例缩放原图使得高度与ImageView相当,居中显示在ImageView上 |
FIT_END | android:scaleType = “fitEnd” | 同上,最后在ImageView下方显示 |
FIT_START | android:scaleType = “fitStart” | 同上,显示在ImageView的上方 |
FIT_XY | android:scaleType = “fitXY” | 为了让原图能够填满整个ImageView而拉伸或者缩小原图的宽高,不必按比例缩放。 |
MATRIX | android:scaleType = “matrix” | 默认值,从ImageView的左上角开始绘制原图,超过部分做裁剪处理 |
Java
Public Method
1.ValueOf
ImageView.ScaleType.valueOf(String name);
2.Vaules
ImageView.ScaleType[] st = new ImageView.ScaleType[]{};