Android笔记系列--ImageView 的scaletype属性

ImageView 的scaletype属性该属性可以设置为8 个属性值:matrix、fitXY、fitStart、fitCenter、fitEnd、center、centerCrop、 centerInside

<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:src="@drawable/test"
    android:scaleType="matrix"/>   

1) matrix
从左上角开始平铺,比view大则裁剪掉,不缩放

2) fitXY
图片(不论大小)适应View X和Y轴长度,填充

3) fitStart
以左上角为原点,按比例缩放图片,使图片的最长边填充View的宽或高。

4) fitCenter
View中心与图片中心重叠,按比例缩放图片,使图片的最长边填充View的宽或高

5) fitEnd
View右下角与图片右下角重叠为固定点,按比例缩放图片,使图片的最长边填充View的宽或高。

6) center
View与图片中心重叠,不缩放,将四周多余出来的部分裁剪掉。

7) centerCrop
View与图片中心重叠,放缩图片最短边填满View,多余的剪掉

8) centerInside
小图不放大,居中显示(横向和纵向都居中),与android:scaleType=”center”效果相同;
大图缩小到长边与view相同,并居中显示(横向或纵向都居中)。

9) 未设置scaleType
在未设置scaleType时,系统默认保证图片完整、居中显示,并等比缩放,其效果跟android:scaleType=”fitCenter”的效果一致。

在使用过程中,要注意以下细节:

(1)图片设置为match_parent(fill_parent)或wrap_content时,对大图和小图缩放效果有影响。
我们在网络上看到的博客或者文章,一上来就直接介绍这些属性的缩放和位置规律(或者直接上图片),其实他们都默认ImageView的android:layout_width=”match_parent”、 android:layout_height=”match_parent”,当 android:layout_width=”wrap_content”、android:layout_height=”wrap_content” 时,这些缩放和位置规律是不完全适用的。通过一一测试,我发现,在wrap_content的情况下,scaleType对小图不起作用(即图片不缩放,并显示在左上角),而大图的表现与match_parent的情况相同。

(2)图片的高和宽的值不同(match_parent或wrap_content),缩放效果也不同。
通过上面的第1点,我们得知,对于小图,scaleType的属性值在match_parent的情况下起作用,而wrap_content不起作用。那么有些前端人员就利用这一点,来达到一些特殊的效果。比如同时这是android:layout_width=”match_parent“、android:layout_height=”wrap_content“、 android:src=”@drawable/test”、android:scaleType=”fitXY“,那么图片的宽度将填满view,而高度保持不变。

(3)细心的读者会发现,本文中实例图片的缩放和位置情况与网络上可能不太一致。
以fitStart为例,本文的示意图是显示在左方的,而网上的例子可能是显示在上方的,这是因为所使用的图片的高宽比与view的高宽比不一致的原因(本文使用的小图高宽比相对于view的高宽比大,即“窄图”,网络上有些文章使用的可能是“宽图”)。
但无论所使用的图片素材的高宽及其比例如何变化,原则是一样的,再以fitStart为例,缩放的通用原则是必须保证图片最长的一条边把view填满。

(4)除了在xml中设置scaleType,也可以通过.java程序直接设置相对应的属性。
设置方 法:imageView.setScaleType(ImageView.ScaleType.MATRIX );除了MATRIX ,另外的7个属性值 分别是:FIT_XY、FIT_START、FIT_CENTER、FIT_END、CENTER 、CENTER_CROP、 CENTER_INSIDE。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

繁星点点-

请我喝杯咖啡呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值