前言

最近在自定义ImageView时用到scaleType属性,因此在这里整(摘)理(抄)一下,方便自己查阅。

好记性不如烂笔头

正文

scaleType该属性指定让ImageView如何显示图片,包括是否进行缩放、等比缩放、缩放后展示位置等。

Android 提供了八种scaleType的属性值分别如下:

    public static enum ScaleType {
        MATRIX,
        FIT_XY,
        FIT_START,
        FIT_CENTER,
        FIT_END,
        CENTER,
        CENTER_CROP,
        CENTER_INSIDE;
    }

PS: xml和java都可以配置ImageView的属性。

下面单独对每一种简单的介绍一下,如果要图解,推荐看文末的第一个参考链接,该作者特意附上了图片描述。感谢。

MATRIX

用矩阵来绘制,可以动态缩放、移动和旋转等操作图片。

这个需要配合setImageMatrix()来使用。

举个例子

imageView.setScaleType(ImageView.ScaleType.MATRIX);
Matrix matrix = new Matrix();
matrix.preRotate(90); //顺时针旋转90
imageView.setImageMatrix(matrix);

FIT_XY

图片缩放并全铺到View上,不是等比缩放。

FIT_START

把图片按比例扩大/缩小到View的高宽上,从左或者上部开始显示。

  1. 如果图片的宽大于View的宽,就显示在上部。(下部空白)
  2. 如果图片的高大于View的高,就显示在左部。(右部空白)

FIT_CENTER

这个是ImageView的默认模式。图片会被等比缩放到能够填充控件大小,并居中显示。(存在上下空白)

FIT_END

这个跟FIT_START刚好相反。

把图片按比例扩大/缩小到View的高宽上,从右或者底部开始显示。

  1. 如果图片的宽大于View的宽,就显示在底部。(上部空白)
  2. 如果图片的高大于View的高,就显示在右部。(左部空白)

CENTER

按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示。

PS:这个会截取中心图片显示。

CENTER_CROP

按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽)

CENTER_INSIDE

将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽,并居中显示。

参考文章

  1. Android ImageView 的scaleType 属性图解
  2. setScaleType的各种情况

相关文章

暂无评论

none
暂无评论...