src属性和background属性的区别:
①background通常指的都是背景,而src指的是内容
②当使用src填入图片时,是按照图片大小直接填充,并不会进行拉伸,而使用background填入图片,则是会根据ImageView给定的宽度来进行拉伸
写代码验证了一下
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/collect" />
<ImageView
android:layout_width="200dp"
android:layout_height="wrap_content"
android:background="@drawable/collect" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/collect" />
<ImageView
android:layout_width="200dp"
android:layout_height="wrap_content"
android:src="@drawable/collect" />
解决拉伸导致变形的方法
刚才第二张图片因为拉伸导致变形了,可以通过drawable的Bitmap资源文件来完成,然后blackground属性设置为该文件
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@id/col"
android:gravity="top"
android:src="@drawable/collect"
android:tileMode="disabled" >
</bitmap>
android:tileMode="disabled" 禁止平铺
设置透明度
setAlpha这个属性,只有src时才是有效果的
adjustViewBounds设置缩放是否保存原图长宽比
ImageView提供了adjustViewBounds属性,用于设置缩放时是否保持原图长宽比, 单独设置不起作用,需要配合maxWidth和maxHeight属性一起使用.而后面这两个属性也是需要adjustViewBounds为true才会生效.
android:maxHeight:设置ImageView的最大高度
android:maxWidth:设置ImageView的最大宽度
<!-- 正常的图片 -->
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5px"
android:src="@drawable/collect" />
<!-- 限制了最大宽度与高度,并且设置了调整边界来保持所显示图像的长宽比-->
<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:adjustViewBounds="true"
android:maxHeight="50dp"
android:maxWidth="50dp"
android:src="@drawable/collect" />
scaleType设置缩放类型
fitXY:对图像的横向与纵向进行独立缩放,使得该图片完全适应ImageView,但是图片的横纵比可能会发生改变
fitStart:保持纵横比缩放图片,知道较长的边与Image的编程相等,缩放完成后将图片放在ImageView的左上角
fitCenter:同上,缩放后放于中间;
fitEnd:同上,缩放后放于右下角;
center:保持原图的大小,显示在ImageView的中心。当原图的size大于ImageView的size,超过部分裁剪处理。
centerCrop:保持横纵比缩放图片,知道完全覆盖ImageView,可能会出现图片的显示不完全
centerInside:保持横纵比缩放图片,直到ImageView能够完全地显示图片
matrix:默认值,不改变原图的大小,从ImageView的左上角开始绘制原图, 原图超过ImageView的部分作裁剪处理