ImageView的scaleType属性
来源:互联网 发布:淘宝客在如何转换链接 编辑:程序博客网 时间:2024/05/22 18:38
ImageView的scaleType
,当设置为fitXY
时,虽然ImageView显示那么点尺寸,但是,但是Glide加载图片时,却是以全分辨率加载的,于是加载几张,就OOM了。
改成fitCenter
或者centerCrop
(试了一下fitStart
、fitEnd
也行,总之看需求了),就好了,会自动缓存小图,滚动起来也非常流畅。
下面是粘自http://blog.csdn.net/u012702547/article/details/50586946
scaleType,它的取值一共有八种,分别是:matrix,fitXY,fitStart,fitCenter,fitEnd,center,centerCrop,centerInside。那我们下面一起来看看这八种取值分别代表什么意思。
我用两张图片来做demo,这两张图片的分辨率一大一小,图片分别叫做big和small。原图如下:
big:
small:
OK,准备工作已经完成。
matrix
matrix表示原图从ImageView的左上角开始绘制,如果原图大于ImageView,那么多余的部分则剪裁掉,如果原图小于ImageView,那么对原图不做任何处理。比如我的两张大小不同的图片,分别显示在96dp×96dp的ImageView上,会有不同的效果,代码如下:
- <ImageView
- android:layout_width="96dp"
- android:layout_height="96dp"
- android:adjustViewBounds="false"
- android:background="#ffaa77"
- android:scaleType="matrix"
- android:src="@drawable/big" />
- <ImageView
- android:layout_width="96dp"
- android:layout_height="96dp"
- android:adjustViewBounds="false"
- android:background="#aa99cc"
- android:scaleType="matrix"
- android:src="@drawable/small" />
显示效果如下:
我们看到,big图片由于比较大,因此只有左上角显示出来了,其他部分则被剪裁掉了,而small图片由于分辨率比较小,因此完整的显示在ImageView的左上角。
fitXY
fitXY的目标是填充整个ImageView,为了完成这个目标,它需要对图片进行一些缩放操作,在缩放的过程中,它不会按照原图的比例来缩放。比如下面一个栗子:
- <ImageView
- android:layout_width="96dp"
- android:layout_height="96dp"
- android:background="#ffaa77"
- android:scaleType="fitXY"
- android:src="@drawable/big" />
- <ImageView
- android:layout_width="96dp"
- android:layout_height="128dp"
- android:background="#aa99cc"
- android:scaleType="fitXY"
- android:src="@drawable/small" />
显示效果如下:
两张图片都被显示出来了,但是都有一定程度的变形,因为在这里系统只考虑将ImageView填充满,而不会按照原图比例去缩放。
fitStart
将图片按比例缩放至View的宽度或者高度(取宽和高的最小值),然后居上或者居左显示(与前面缩放至宽还是高有关),我们来看下面一个例子:
- <ImageView
- android:layout_width="48dp"
- android:layout_height="256dp"
- android:background="#ffaa77"
- android:scaleType="fitStart"
- android:src="@drawable/big" />
- <ImageView
- android:layout_width="256dp"
- android:layout_height="36dp"
- android:background="#aa99cc"
- android:scaleType="fitStart"
- android:src="@drawable/small" />
big图片是缩放至ImageView的宽度,然后居上显示,small图片是缩放至ImageView的高度,然后居左显示。
fitCenter
fitCenter和fitStart基本一样,唯一不同的是fitCenter将图片按比例缩放之后是居中显示,看下面一个例子:
- <ImageView
- android:layout_width="48dp"
- android:layout_height="256dp"
- android:background="#ffaa77"
- android:scaleType="fitCenter"
- android:src="@drawable/big" />
- <ImageView
- android:layout_width="256dp"
- android:layout_height="48dp"
- android:background="#aa99cc"
- android:scaleType="fitCenter"
- android:src="@drawable/small" />
显示效果如下:
fitEnd
fitEnd和fitStart也基本一样,唯一不同的是fitEnd将图片按比例缩放之后是居右或者居下显示,比如下面一个Demo:
- <ImageView
- android:layout_width="48dp"
- android:layout_height="256dp"
- android:background="#ffaa77"
- android:scaleType="fitEnd"
- android:src="@drawable/big" />
- <ImageView
- android:layout_width="256dp"
- android:layout_height="48dp"
- android:background="#aa99cc"
- android:scaleType="fitEnd"
- android:src="@drawable/small" />
center
center表示将原图按照原来的大小居中显示,如果原图的大小超过了ImageView的大小,那么剪裁掉多余部分,只显示中间一部分图像,比如下面一个Demo:
- <ImageView
- android:layout_width="48dp"
- android:layout_height="256dp"
- android:background="#ffaa77"
- android:scaleType="center"
- android:src="@drawable/big" />
- <ImageView
- android:layout_width="256dp"
- android:layout_height="24dp"
- android:background="#aa99cc"
- android:scaleType="center"
- android:src="@drawable/small" />
centerCrop
centerCrop的目标是将ImageView填充满,故按比例缩放原图,使得可以将ImageView填充满,同时将多余的宽或者高剪裁掉,比如下面一个Demo :
- <ImageView
- android:layout_width="48dp"
- android:layout_height="256dp"
- android:background="#ffaa77"
- android:scaleType="centerCrop"
- android:src="@drawable/big" />
- <ImageView
- android:layout_width="256dp"
- android:layout_height="48dp"
- android:background="#aa99cc"
- android:scaleType="centerCrop"
- android:src="@drawable/small" />
centerInsid
centerInside的目标是将原图完整的显示出来,故按比例缩放原图,使得ImageView可以将原图完整显示,比如下面一个Demo:
- <ImageView
- android:layout_width="48dp"
- android:layout_height="256dp"
- android:background="#ffaa77"
- android:scaleType="centerInside"
- android:src="@drawable/big" />
- <ImageView
- android:layout_width="256dp"
- android:layout_height="48dp"
- android:background="#aa99cc"
- android:scaleType="centerInside"
- android:src="@drawable/small" />
显示效果如下:
OK,关于scaleType属性我们就说这么多,一般情况下,当我们给ImageView的宽高都为固定值的时候我们才有可能用到这些属性。
- ImageView的scaletype属性
- ImageView的scaletype属性
- ImageView的scaletype属性
- ImageView的scaletype属性
- ImageView的scaletype属性
- ImageView 的 ScaleType属性
- ImageView的ScaleType属性
- ImageView 的 scaleType 属性
- ImageView的scaleType属性
- ImageView的ScaleType属性
- ImageView的ScaleType属性
- ImageView的scaleType属性
- ImageView的scaleType属性
- ImageView的属性scaletype
- ImageView的scaletype属性
- ImageView的scaletype属性
- ImageView 的scaleType属性。
- ImageView的ScaleType属性
- Spring事务隔离级别
- 将字典转换为DataFrame并进行频次统计
- 扩展kmp
- 网页中使用pdf.js展示pdf文件,全屏问题以及绝对路径如何读取
- 如何提高服务器并发处理能力
- ImageView的scaleType属性
- 易东联合:做长尾关键词推广多少钱?北京关键词推广
- React-Native开发环境搭建以及遇到的相关问题1
- 算法13 Plus One
- C语言:数组的学习
- HBase数据读取流程解析
- QT之qss教程-QToolBar
- mybaties 一对多 list<String> 返回数据
- Qt之进程间通信(QProcess)