一篇文章讲清楚android ImageView.ScaleType

2016-01-10

刚开始android编程的时候, 关于ImageView.ScaleType网络上好多, 说实话没看懂. 本文就是为了讲清楚这个, 有用的话转走, 请注明原地址和作者.

典型的代码调用如下

    <ImageView
android:layout_width="300dp"
android:layout_height="400dp"
android:scaleType="center"
android:src="@drawable/numbers" >
</ImageView>

为了看起来方便, 下面所有的例子中ImageView(我把它叫做容器)的大小固定在300x400dp, 只调整图片的大小.

图片使用0-8数字格, 添加了10px的蓝色边框. 这样如果图片经过了变形裁剪等, 都很容易看出来.

一篇文章讲清楚android ImageView.ScaleType

ScaleType主要有如下几种取值:

1. CENTER 把图片放在容器的中间, 但是不会调节图片尺寸, 原图多大就显示多大.

一篇文章讲清楚android ImageView.ScaleType一篇文章讲清楚android ImageView.ScaleType一篇文章讲清楚android ImageView.ScaleType

图片100x100               图片300x300                  图片400x400

2. CENTER_CROP  等比例放大或者缩小图片, 目的是调整后图片的一条边正好等于容器的边, 另一条边要大于等于容器的边. 看起来就是一定要把图片拉伸出去.

一篇文章讲清楚android ImageView.ScaleType 不管图片是100x100, 还是900x900, 都是左边的效果, 都会把一条边(这里是水平边)调整成和容器一样大, 垂直边调整成超出容器.

3. CENTER_INSIDE 等比例放大或者缩小图片, 目的是调整后图片的两条边都要小于等于容器的边. 看起来就是一定要把图片压缩进去.

一篇文章讲清楚android ImageView.ScaleType一篇文章讲清楚android ImageView.ScaleType

图片小                  图片大

4. FIT_CENTER 等比例放大或者压缩图片, 目的是调整后图片的一条边正好等于容器的边, 另一条边要小于等于容器的边. 而且图片要放在容器中心.

一篇文章讲清楚android ImageView.ScaleType  不管100x100, 还是900x900, 图片都会把严丝合缝的放进去.

5. FIT_END 同FIT_CENTER, 只是图片放在容器的右下方

一篇文章讲清楚android ImageView.ScaleType

6. FIT_START 同FIT_CENTER, 只是图片放在容器的左上方

一篇文章讲清楚android ImageView.ScaleType

7. FIT_XY 不管大图小图, 简单粗暴的把X和Y拉成和容器一样大小.

一篇文章讲清楚android ImageView.ScaleType

总结一下,

1. 最常用的就是FIT_CENTER, FIT_START, FIT_END, 因为1.它保证了图片的长宽比, 显示出来的和原图协调; 2. 它至少使一条边贴近容器, 充分考虑了容器的大小.

2. 其次常用的是FIT_XY, 优点是确保容器被填满, 缺点是图片失真.

3. CENTER_CROP会导致图片被裁剪;CENTER_INSIDE不适用于小图, 会导致图片看起来很小, 容器很大, 不成比例, 完全可以用FIT_CENTER代替.

4. 最不常用的是CENTER, 完全不调整图片尺寸, 对容器大小的限制太死, 在android多分辨率的设备上无法使用.

上一篇:在浏览器中输入url地址 -> 显示主页的过程


下一篇:Codeforces Round #407 (Div. 1) B. Weird journey —— dfs + 图