<!--ImageView是Android中的基础图片显示控件-->
<ImageView
android:id="@+id/img_res" //id
android:layout_width="wrap_content" //宽
android:layout_height="wrap_content" //高
android:layout_centerInParent="true" //居中显示,将这个控件显示在设计模式的中间位置
android:layout_gravity="center" //居中显示,将这个控件显示在设计模式的中间位置
android:scaleType="fitCenter" //设置显示方式
android:src="@mipmap/ic_launcher" /> //设置要显示的图片资源
该控件有个重要的属性是ScaleType,该属性用以表示显示图片的方式,共有8种取值
ImageView的scaleType的属性值有MATRIX,FIT_XY,FIT_START,FIT_END,FIT_CENTER,CENTER,CENTER_CROP,CENTER_INSIDE.
1.android:scaleType=“center”
保持原图的大小,显示在ImageView的中心。当原图的size大于ImageView的size时,多出来的部分被截掉。
2.android:scaleType=“center_inside”
以原图正常显示为目的,如果原图大小大于ImageView的size,就按照比例缩小原图的宽高,居中显示在ImageView中。如果原图size小于ImageView的size,则不做处理居中显示图片。
3.android:scaleType=“center_crop”
以原图填满ImageView为目的,如果原图size大于ImageView的size,则与center_inside一样,按比例缩小,居中显示在ImageView上。如果原图size小于ImageView的size,则按比例拉升原图的宽和高,填充ImageView居中显示。
4.android:scaleType=“matrix”
不改变原图的大小,从ImageView的左上角开始绘制,超出部分做剪切处理。
5.androd:scaleType=“fit_xy”
把图片按照指定的大小在ImageView中显示,拉伸显示图片,不保持原比例,填满ImageView.
6.android:scaleType=“fit_start”
把原图按照比例放大缩小到ImageView的高度,显示在ImageView的start(前部/上部)。
7.android:sacleType=“fit_center”
把原图按照比例放大缩小到ImageView的高度,显示在ImageView的center(中部/居中显示)。
8.android:scaleType=“fit_end”
把原图按照比例放大缩小到ImageView的高度,显示在ImageVIew的end(后部/尾部/底部)
代码设置ScaleType:
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
该控件显示图片,有两种方式,第一种方式是写死的,直接在布局文件里用android:src设置图片,属性值是资源文件的路径
第二种方式是通过代码来实现相对性的赋值:
在代码里声明ImageView对象并绑定:
// 显示图片的控件
private ImageView mImageView;
//绑定ImageView控件
mImageView = (ImageView) findViewById(R.id.img_res);
//设置图片缩放对象
BitmapFactory.Options options = new BitmapFactory.Options();
// 图片缩放为原来的二分之一
options.inSampleSize = 2;
// 将图片转换成 bitmap对象
Bitmap bitmap = BitmapFactory.decodeFile(filePath,options); //filePath为文件路径,如果不缩放可以不赋值options
mImageView.setImageBitmap(bitmap); //设置显示的缩略图
然后调用ImageView.setImageBitmap来将图片显示为缩略图,属性值为Bitmap对象
设置图片显示:.setBackgroundResource
Java中ImageView里的属性:
.onTouchEvent(MotionEvent event)
参数event:参数event为手机屏幕触摸事件封装类的对象,其中封装了该事件的所有信息,例如触摸的位置、
触摸的类型以及触摸的时间等。该对象会在用户触摸手机屏幕时被创建。
.setImageBitmap(Bitmap bitmap)
参数Bitmap是Android系统中的图像处理的最重要类之一。用它可以获取图像文件信息,进行图像剪切、旋转、缩放等操作
并可以指定格式保存图像文件。
..setScaleType(常量值)
参数常量值可以再上面看ImageView的重要属性ScaleType的介绍
设置图片:
imageView.setImageBitmap(bm); //要求传递一个bitmap对象
imageView.setImageDrawable(drawable); //要求传递一个drawable对象
imageView.setImageResource(id); //要求传递一个资源ID
判断ImageView当前是否使用某一张图片:
//判断图片是否使用某一个图片
public boolean isEqualsDrawable(int imageViewId, int drawableId) {
return ((ImageView)bindId(imageViewId)).getDrawable().getConstantState().equals(getResources().getDrawable(drawableId).getConstantState());
}
ImageView的src和background的区别:
区别如下:
1、 background会根据ImageView组件给定的长宽进行拉伸,而src就存放的是原图的大小,不会进行拉伸,如果想要对src进行拉伸的话,使用android:scaleType
2、 src是图片内容(前景),bg是背景,可以同时使用。
3、 此外:scaleType只对src起作用;bg可设置透明度
4、 Src对应的Java代码是:imgView.setImageResource(R.drawable.*)
Background对应的Java代码是:imgView.setBackgroundResource(R.drawable.*);
5、 scaleType说明
CENTER /center 在视图中心显示图片,并且不缩放图片
CENTER_CROP / centerCrop 按比例缩放图片,使得图片长 (宽)的大于等于视图的相应维度
CENTER_INSIDE / centerInside 按比例缩放图片,使得图片长 (宽)的小于等于视图的相应维度
FIT_CENTER / fitCenter 按比例缩放图片到视图的最小边,居中显示
FIT_END / fitEnd 按比例缩放图片到视图的最小边,显示在视图的下部分位置
FIT_START / fitStart 把图片按比例扩大/缩小到视图的最小边,显示在视图的上部分位置
FIT_XY / fitXY 把图片不按比例缩放到视图的大小显示
MATRIX / matrix 用矩阵来绘制
显示长图:
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@+id/tv_certification"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/iv_guide_operation"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:src="@drawable/certification_process" />
</androidx.core.widget.NestedScrollView>
android:adjustViewBounds属性:
用于保持宽高比,图片宽度填满,高度自适配
如果滑动的时候过于卡顿的话,解决方案:
在AndroidManifest.xml中为该布局所在的Activity加上下面这句代码。
android:hardwareAccelerated="false"
android:hardwareAccelerated属性:
android:hardwareAccelerated="true"
会使对于图片类比较多的界面加载速度变快。但是该选项设置带来的内存增加,该选项是以牺牲内存来提高响应速度的。
使用矢量图:
- 缺点:矢量图必须要在Android5.0(包含)及以上才能使用;
- 优点:体积小,适配性好;
- 先到阿里图标资源去找好相应的图标;
- 在下载的时候选择下载SVG;
获取VectorDrawable文件:
- 1:去SVG到VectorDrawable网站点击空白处,上传SVG文件;
- 2:右键点击 res 文件夹,然后依次选择 New > Vector Asset,上传SVG文件,选择下一步即可;
使用:
- 从SVG到VectorDrawable网站得到的使用方式:
- 把得到的代码,复制到.xml文件里;
-
跟平常引用drawable的方式相同:
<ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/myimage" />
- 从New > Vector Asset得到的使用方式:
-
跟平常引用drawable的方式相同:
<ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/myimage" />