ImageVIew

    <!--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(包含)及以上才能使用;
  • 优点:体积小,适配性好;
  1. 先到阿里图标资源去找好相应的图标;
  2. 在下载的时候选择下载SVG;

获取VectorDrawable文件:

  1. 1:去SVG到VectorDrawable网站点击空白处,上传SVG文件;
  2. 2:右键点击 res 文件夹,然后依次选择 New > Vector Asset,上传SVG文件,选择下一步即可;

使用:

  1. 把得到的代码,复制到.xml文件里;
  2. 跟平常引用drawable的方式相同:

        <ImageView
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:src="@drawable/myimage" />
  • New > Vector Asset得到的使用方式:
  1. 跟平常引用drawable的方式相同:

        <ImageView
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:src="@drawable/myimage" />

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值