UI系列 15:ImageView用法总结

Published: 29 Jul 2017 Category: UI
setBackgroundResource
  • 会根据ImageView控件给定的长宽进行拉伸,图片会失真。这个方法是用来设置背景的,可以设置透明度
setImageResource
  • 显示的是原图的大小,默认不会进行拉伸,如果图片不够大的话,就会在周边出现空白。设置的是前景,可以设置ScaleType来控制图片的缩放方式

参考链接:https://www.jianshu.com/p/1894994a65de

ImageView使用时,经常涉及到一个属性:ScaleType,从字面意思了解为缩放类型。

以下关于几种缩放类型进行介绍:

1. matrix

  • 将图片展示在固定宽高的ImageView上面,不做任何缩放(图形的左上角对齐矩形的左上角)。意味着:如果矩形比图片大,则图片显示在左上角,如果矩形比图片小,则只会显示图片矩形部分的大小。

  • PS:在验证这个属性时,发现在Android Studio里面直接查看位图的大小跟代码里获取的宽高不一致,至于原因后续我会跟踪搞清楚

2. fitXY
  • 这个属性就不用多说了,直接从字面理解为:充满整个ImageView,无论View大小,拉伸或压缩图片的宽高填充满整个View(确保图片会完整显示)
3. fitStart,fitEnd,fitCenter(ImageView默认)
  • 这3种缩放都是将图片宽高跟View宽高进行相比,得到宽高比值大的进行缩放,也就是我们所说的”填充完短边”(这里得特别解释一下:图片最终会展示在一个View上,填充完短边,就是按将View短边填充的原则取比例值)。保证图片完整显示在View当中;上述3种方式区别在于缩放后的图片展示在View中的相对位置,fitStart是展示在View的左上方;fitEnd是展示在View的右下方;fitCenter是展示在View的中间位置
4. center
  • 不做任何缩放操作,将图片按照原来的大小居中显示,超出ImageView大小部分被截断,注意是从两边等分截断。如果图片大小小于ImageView大小,则居中显示。(图片可能部分显示)
5. centerCrop
  • 将图片按照等比例缩放,并截取缩放后的中间部分显示在ImageView中;这句描述我是在百度上搜的,感觉还是不能完全理解????自己简单测试后,应该是:图片根据宽高进行等比缩放(按宽高比的小值进行缩放),然后居中展示
6. centerInside
  • 将图片大小大于ImageView的图片进行等比例缩小,直到整幅图能够居中显示在ImageView中,小于ImageView的图片不变,直接居中显示。(图片完整显示)

    上述分别介绍了那么多,值得注意的是:centerInside和fitCenter最主要的区别是,当ImageView大小大于图片大小时候,centerInside直接显示图片原大小,而fitCenter,则会放大图片,使得图片能够充满矩形的短边。