一,学习内容:
1,两个重要属性:
android:src="@drawable/图片名" //加载放在drawable里面的图片资源
android:scaleType="图片填充方式" //可取值有8个:fitCenter(默认),fitEnd,fitstart,fitXY,center,centerCrop,centerInside,matrix
可分为三类:(1)以center_开头的3种,它们的共同点是居中显示,图片的中心点会与ImageView的中心点重叠;
(2)以fit_开头的4种,它们的共同点是都会对图片进行缩放使之完全显示;
(3)matrix,可自定义样式
下面通过实列对这八种取值进行详细介绍:
2,利用Glide在线加载网络图片:
Glide.with(this).load("图片地址").into(控件名);
二,详细演示:
放置图片前,测试布局如下:
ImageView背景色为灰色,大小为380×380,父布局设置其背景色为橙色。
另外选取一张大于380×380的图片,方便对比各种取值的结果
具体演示:
1,fitCenter(默认):保持纵横比缩放图片,直到该图片能完全显示在ImageView中(图片较长的边长与ImageView相应的边长相等),缩放完成后将该图片放在ImageView的中央。
2,fitEnd:保持纵横比缩放图片,直到该图片能完全显示在ImageView中(图片较长的边长与ImageView相应的边长相等),缩放完成后将该图片放在ImageView的右下角。
3,fitStart:保持纵横比缩放图片,直到该图片能完全显示在ImageView中(图片较长的边长与ImageView相应的边长相等),缩放完成后将该图片放在ImageView的左上角。
4,fitXY:对原图宽高进行独立放缩(该放缩不一定保持原比例),使图片完全适用应于ImageView(填充且完全显示)。
5,center:把图片放在ImageView中间,但不进行任何缩放,超过ImageView部分不再显示。
6,centerCrop:保持纵横比缩放图片,使图片完全覆盖ImageView,图片不一定完全显示。
7,centerInside:若原图宽高小于ImageView宽高,则原图不做处理,直接放在ImageView中间居中显示;否则保持纵横比缩放原图使之宽(高)等于ImageView的宽(高)。
8,matrix:该模式需要与ImageView.setImageMatrix(Matrix matrix) 配合使用,因为该模式需要用于指定一个变换矩阵用于指定图片如何展示。其实前面的7种模式都是通过ImageView在内部生成了相应的变换矩阵,等于是提供了该模式的一种特定值,使用这个模式只要传入相应矩阵,也就能实现上述七种显示效果。
在使用时,先调用:
imageView.setScaleType(ImageView.ScaleType.MATRIX);
再调用:
imageView.setImageMatrix(matrix);
注意顺序不要搞错,否则会出现问题的。下面看一下代码:
mIv1=findViewById(R.id.iv_1);
mIv1.setScaleType(ImageView.ScaleType.MATRIX); //设置为矩阵模式
Matrix matrix = new Matrix(); //创建一个单位矩阵
matrix.setTranslate(100, 100); //平移x和y各100单位
matrix.preRotate(30); //顺时针旋转30度
mIv1.setImageMatrix(matrix); //设置并应用矩阵
效果: