Android ImageView的SaleType属性总结

Android ImageView的SaleType属性总结

在使用这个属性的时候,需要明白其中几个属性的区别:
在这里插入图片描述
在这里插入图片描述
如上图所示为图片自适应的效果。

Center

Center_crop

center_inside

fit_center

fit_end

Fit_start

Fit_end

Fit_xy


为了方便理解,这里将 图片的宽高定义为x,控件ImageView的宽高定义为Y

center属性:

目的:将图片显示在ImagView的中心点,不进行缩放。

1,若x均大于Y,则不完整显示。如下图所示,设置Y为50dp,则图片显示不全。

    <ImageView
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:scaleType="center"
        android:src="@mipmap/ic_gundong"
        tools:ignore="ContentDescription" />

在这里插入图片描述

😂
😂
🐷

2,若x均小于Y,则原图显示。如下图所示,设置Y为200dp.则图片居中原图显示。

在这里插入代码片

在这里插入图片描述

center_crop属性:

目的:将图放在中心点,再进行等比例缩放,使得图片的x均不小于控件的Y。

1,若x均小于Y,则等比例放大图片,直至铺满控件,这种情况等比例放大,可能会导致 某方向上的图片显示不全。如下图所示。横向上图片显示不全。

  <ImageView
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:scaleType="centerCrop"
        android:src="@mipmap/ic_gundong"
        tools:ignore="ContentDescription" />

在这里插入图片描述

2,若x1或x2小于Y1或Y2,则放大铺满控件。(x1 x2 指宽或高,其他同理)。

举例:控件为750750,图片位600800,这样会将600放大到750,而800也会等比例放大,则垂直方向会显示不全,(800所在的方向),会被裁剪。

    <ImageView
        android:layout_width="100dp"
        android:layout_height="200dp"
        android:scaleType="centerCrop"
        android:src="@mipmap/ic_gundong"
        tools:ignore="ContentDescription" />

如下图 当控件高为200dp时,图片等比例放大,当放大至与控件高相当时停止,则横向上的图片被裁剪!
在这里插入图片描述

3,若x>Y,等比例缩小图片,当x1或x2 等于对应的Y1或Y2时,停止缩放,这种情况则会导致图片显示不完整,有缺失。

    <ImageView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:scaleType="centerCrop"
        android:src="@mipmap/ic_gundong"
        tools:ignore="ContentDescription" />

在这里插入图片描述

特点:图片会铺满imagView,但可能会显示不完全。

Center_inside属性:

目的:将图片放在中心点,再进行等比例缩放。使得图片的 X均不小于控件的Y。

1,若x<y,则将图放在中间,此情况下可能四周会出现背景颜色。假设设置图片控件背景色为黑色,Y为300dp。为方便查看。

 <ImageView
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:background="@color/black"
        android:scaleType="centerInside"
        android:src="@mipmap/ic_gundong"
        tools:ignore="ContentDescription" />

在这里插入图片描述

2,若x1或x2 >Y1或Y2,则将图片等比例缩小直到控件 完整显示该图片,此情况下,图片的上下或者左右,可能会出现背景颜色。
如下图所示,设置控件的宽小于图片的宽,及x1>y1,图片缩小至完全显示,但是会有背景颜色,项目实际中可能是白色。

  <ImageView
        android:layout_width="100dp"
        android:layout_height="300dp"
        android:background="@color/black"
        android:scaleType="centerInside"
        android:src="@mipmap/ic_gundong"
        tools:ignore="ContentDescription" />

在这里插入图片描述
同理,设置控件的高小于图片的高,图片也会缩小到等于控件的高。
3,若x>y,则等比例缩小图片使得图片的x均不大于Y,所以也很容易导致上下或者左右出现背景色。

特点:
1,始终会完全显示图片

2,可能导致imageVIew留白,即露出背景颜色。

    <ImageView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:scaleType="centerInside"
        android:src="@mipmap/ic_gundong"
        tools:ignore="ContentDescription" />

在这里插入图片描述

前两者的 区别:
center-crop 要求图片的宽高均不小于控件的宽高。
center_inside 要求图片的宽高均不大于控件的宽高。

fit_center属性:

将图片放在中心点,对图片进行等比例缩放,从而完整的显示图片。。重点完整的显示图片。直到图片的某一个方向的值(X1或x2) 等于控件的某一值(Y1或Y2)

1,当x均(小于)Y,等比例放大图片,这种情况下上下或左右可能出现背景色,与center_inside一致。

<ImageView
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:scaleType="fitCenter"
        android:src="@mipmap/ic_gundong"
        tools:ignore="ContentDescription" />

在这里插入图片描述

2,当图片的X>控件的Y时。则等比例缩小图片,直到x1或X2等于Y1或者Y2任意一值。这种情况下与1 一样,可能出现背景色。(某方向)

  <ImageView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:scaleType="fitCenter"
        android:src="@mipmap/ic_gundong"
        tools:ignore="ContentDescription" />

在这里插入图片描述

3,当图片的某一值 大于控件的某一值时,此时有一个原则:完整的显示图片。所以此时会对图片进行等比例缩放。直到图片的X均不大于控件的Y。

 <ImageView
        android:layout_width="200dp"
        android:layout_height="50dp"
        android:scaleType="fitCenter"
        android:src="@mipmap/ic_gundong"
        tools:ignore="ContentDescription" />

在这里插入图片描述

特点必须完整显示图片。
与center_inside的主要区别就是:当图片的X都小于控件的Y时,center_inside是完整显示就行,放中间,会出现背景色,但不一定会宽高与控件相等。
而fit_center的宽高至少有一值与控件的相等。(重点区别)

fit_end属性:

和fit_center属性类似,差别在于fit_end会将缩放后的图片放在控件的右下角。

  <ImageView
        android:layout_width="300dp"
        android:layout_height="100dp"
        android:scaleType="fitEnd"
        android:src="@mipmap/ic_gundong"
        tools:ignore="ContentDescription" />

在这里插入图片描述

fit_start (左上角)属性:

<ImageView
        android:layout_width="300dp"
        android:layout_height="100dp"
        android:scaleType="fitStart"
        android:src="@mipmap/ic_gundong"
        tools:ignore="ContentDescription" />

在这里插入图片描述

Fit_xy属性:

不按照比例缩放图片,从而使图片铺满整个控件,在此情况下虽然可以 完整的显示图片,但是图片会被拉伸 导致失真

 <ImageView
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:scaleType="fitXY"
        android:src="@mipmap/ic_gundong"
        tools:ignore="ContentDescription" />

在这里插入图片描述

matrix属性:

通过代码设置matrix具体的放缩和变换策略 。
CENTER: 保持坐标变换前矩形的长宽比,并最大限度的填充变换后的矩形。至少有一边和目标矩形重叠。
END:保持坐标变换前矩形的长宽比,并最大限度的填充变换后的矩形。至少有一边和目标矩形重叠。END提供右下对齐。
FILL: 可能会变换矩形的长宽比,保证变换和目标矩阵长宽一致。
START:保持坐标变换前矩形的长宽比,并最大限度的填充变换后的矩形。至少有一边和目标矩形重叠。START提供左上对齐。

  <ImageView
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:scaleType="matrix"
        android:src="@mipmap/ic_gundong"
        tools:ignore="ContentDescription" />

在这里插入图片描述

总结:
saleType的默认值为 fit_center。
ScaleType本质上是影响了ImageView中的mDrawMatrix对象,该对象用以在绘制时对Drawable对象进行矩阵转换。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值