Skip to content

Android ImageView ScaleType Src Background的区别

Mr.wu edited this page Feb 6, 2017 · 4 revisions

首先ImageView有两个显示图片的属性,分别是src和background。从名字上看可以知道第一个是资源(画),第二个是背景(画框)。

//background
mImageView.setBackground();
mImageView.setBackgroundResource();
mImageView.setBackgroundColor();
mImageView.setBackgroundDrawable();

//src
mImageView.setImageResource();
mImageView.setImageDrawable();
mImageView.setImageURI();

区别:

1.src存放的是原图大小, background会根据组件的大小进行拉伸。
2.src是图片的内容(画),background是图片的背景(画框),可以同时存在。
3.background可以设置透明度,src不可以。
4.scaleType只对src起作用。这篇文字解释的很清楚->ScaleType详解
5.自定义ImageView中画图的时候使用setBackgroundDrawable。如果使用setImageDrawable,需要设置setIntrinsicHeight和setIntrinsicWidth,不然不会显示的,具体原因去看看源码吧。

ImageView的Scaletype决定了图片在View上显示时的样子,如进行何种比例的缩放,及显示图片的整体还是部分,等等。 设置的方式包括:

  1. 在layout xml中定义Android:scaleType="CENTER"

  2. 或在代码中调用imageView.setScaleType(ImageView.ScaleType.CENTER)

  3. SetScaleType(ImageView.ScaleType.CENTER); 按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示

  4. SetScaleType(ImageView.ScaleType.CENTER_CROP); 按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽)

  5. setScaleType(ImageView.ScaleType.CENTER_INSIDE); 将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽

FIT_CENTER 用Matrix.ScaleToFit.CENTER来拉伸图片。 Matrix.ScaleToFit.CENTER:等比缩放,确保原图会整个放在View内,宽高至少有一个适配容器宽高,居中显示。

FIT_END 用Matrix.ScaleToFit.END来拉伸图片。 Matrix.ScaleToFit.END:同上,底部显示。

FIT_START 用Matrix.ScaleToFit.START来拉伸图片。 Matrix.ScaleToFit.START:同上,头部显示。

FIT_XY 用Matrix.ScaleToFit.FILL来拉伸图片。 Matrix.ScaleToFit.FILL:原图完全填充容器,可能会改变宽高比。

MATRIX 用Matrix旋转图片

ImageView.ScaleType并不是万金油。如果你注意到赋值了CENTER_INSIDE, FIT_CENTER, FIT_END 和FIT_START的ImageView的实际边界往往都比缩放后的图片要大。如果要设置ImageView的宽高于缩放后的图片一致,在xml中添加

android:adjustViewBounds="true”

参考:http://www.jianshu.com/p/7401aa75f6f3

Home

Android 开发录

-深入理解LayoutInflater.inflate()的参数

计算机网络原理

数据库

Java 垃圾回收机制

Java 开发录

面试

搭建翻墙shadowsocks 教程

其他

Clone this wiki locally