Android Studio之ImageView

news/2024/9/22 21:01:28/

ImageView是图像显示控件,与图形显示有关的属性说明如下:

  • scaleType:指定图形的拉伸类型,默认是fitCenter。
  • src:指定图形来源,src图形按照scaleType拉伸。

注意背景图不按scaleType指定的方式拉伸,背景默认以fitXY方式拉伸

fitXYFIT_XY拉伸图片使其正好填满视图(图片可能被拉伸变形)
fitStartFIT_START保持宽高比例,拉伸图片使其位于视图上方或左侧
fitCenter   FIT_CENTER 保持宽高比例,拉伸图片使其位于视图中间
fitEndFIT_END保持宽高比例,拉伸图片使其位于视图下方或右侧
centerCENTER保持图片原尺寸,并使其位于视图中间
centerCropCENTER_CROP拉伸图片使其充满视图,并位于视图中间
centerInsideCENTER_INSIDE

保持宽高比例,缩小图片使之位于视图中间(只缩小不放大)。

  • 当图片尺寸大于视图时,centerInside 等同于fitCenter;
  • 当图片尺寸小于视图时,centerlnside等同于 center

接下来进行一个实验,把一张图片放入ImageView控件,尝试使用不同的拉伸类型,看看有什么区别:

1、activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginTop="20dp"tools:context=".MainActivity"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="40dp"android:layout_marginTop="20dp"tools:ignore="MissingConstraints"><Buttonandroid:id="@+id/btnCenter"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="4dp"android:layout_marginRight="4dp"android:layout_weight="1"android:text="btnCenter"android:textAllCaps="false" /><Buttonandroid:id="@+id/btnFitCenter"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="4dp"android:layout_marginRight="4dp"android:layout_weight="1"android:text="btnFitCenter"android:textAllCaps="false" /><Buttonandroid:id="@+id/btnCenterCrop"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="4dp"android:layout_marginRight="4dp"android:layout_weight="1"android:text="btnCenterCrop"android:textAllCaps="false" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="40dp"android:orientation="horizontal"tools:ignore="MissingConstraints"><Buttonandroid:id="@+id/btnCenterInside"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="4dp"android:layout_marginRight="4dp"android:layout_weight="1"android:text="btnCenterInside"android:textAllCaps="false" /><Buttonandroid:id="@+id/btnFitXY"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="4dp"android:layout_marginRight="4dp"android:layout_weight="1"android:text="btnFitXY"android:textAllCaps="false" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="40dp"android:orientation="horizontal"tools:ignore="MissingConstraints"><Buttonandroid:id="@+id/btnFitEnd"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="4dp"android:layout_marginRight="4dp"android:layout_weight="1"android:text="btnFitEnd"android:textAllCaps="false" /><Buttonandroid:id="@+id/btnFitStart"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="4dp"android:layout_marginRight="4dp"android:layout_weight="1"android:text="btnFitStart"android:textAllCaps="false" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="314dp"android:gravity="center_horizontal"android:orientation="vertical"><ImageViewandroid:id="@+id/iv_scale"android:layout_width="match_parent"android:layout_height="275dp"android:layout_marginTop="20dp"app:srcCompat="@drawable/d" /></LinearLayout></LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

2、MainActivity.java

package com.example.myadroid1;import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import androidx.appcompat.app.AppCompatActivity;public class MainActivity extends AppCompatActivity implements View.OnClickListener {private ImageView iv_scale;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);iv_scale = findViewById(R.id.iv_scale);Button btnCenter = findViewById(R.id.btnCenter);btnCenter.setOnClickListener(this);Button btnFitCenter = findViewById(R.id.btnFitCenter);btnFitCenter.setOnClickListener(this);Button btnCenterCrop = findViewById(R.id.btnCenterCrop);btnCenterCrop.setOnClickListener(this);Button btnCenterInside = findViewById(R.id.btnCenterInside);btnCenterInside.setOnClickListener(this);Button btnFitXY = findViewById(R.id.btnFitXY);btnFitXY.setOnClickListener(this);Button btnFitStart = findViewById(R.id.btnFitStart);btnFitStart.setOnClickListener(this);Button btnFitEnd = findViewById(R.id.btnFitEnd);btnFitEnd.setOnClickListener(this);}@Overridepublic void onClick(View v) {if (v.getId() == R.id.btnCenter){iv_scale.setScaleType(ImageView.ScaleType.CENTER);}else if (v.getId() == R.id.btnFitCenter){iv_scale.setScaleType(ImageView.ScaleType.FIT_CENTER);}else if (v.getId() == R.id.btnCenterCrop){iv_scale.setScaleType(ImageView.ScaleType.CENTER_CROP);}else if (v.getId() == R.id.btnCenterInside){iv_scale.setScaleType(ImageView.ScaleType.CENTER_INSIDE);}else if (v.getId() == R.id.btnFitXY){iv_scale.setScaleType(ImageView.ScaleType.FIT_XY);}else if (v.getId() == R.id.btnFitStart){iv_scale.setScaleType(ImageView.ScaleType.FIT_START);}else if (v.getId() == R.id.btnFitEnd){iv_scale.setScaleType(ImageView.ScaleType.FIT_END);}}
}


http://www.ppmy.cn/news/1457393.html

相关文章

等保测评考试重点题库分享上

一、单选题 1、下列不属于网络安全测试范畴的是&#xff08;C&#xff09; A&#xff0e;结构安全 B.便捷完整性检查 C.剩余信息保护 D.网络设备防护 2、下列关于安全审计的内容说法中错误的是&#xff08;D&#xff09; A&#xff0e;应对网络系统中的网络设备运行情况、网…

AI-数学-高中53-离散型随机变量的均值与方差

原作者视频&#xff1a;【随机变量】【一数辞典】3离散型随机变量的均值与方差_哔哩哔哩_bilibili 标准差 方差开根

0060__设计模式

1. 简单工厂模式( Simple Factory Pattern ) — Graphic Design Patterns 工厂模式 | 菜鸟教程 【设计模式——学习笔记】23种设计模式——建造者模式Builder&#xff08;原理讲解应用场景介绍案例介绍Java代码实现&#xff09;-CSDN博客

典型相关分析注意事项

在进行典型相关分析时&#xff0c;有几个注意事项需要考虑&#xff1a; 数据假设检验&#xff1a;在进行典型相关分析之前&#xff0c;需要检验数据是否符合典型相关分析的假设&#xff0c;例如变量之间的线性关系、正态分布等。如果数据不符合这些假设&#xff0c;分析结果可能…

人脸识别开源算法库和开源数据库

目录 1. 人脸识别开源算法库 1.1 OpenCV人脸识别模块 1.2 Dlib人脸识别模块 1.3 SeetaFace6 1.4 DeepFace 1.5 InsightFace 2. 人脸识别开源数据库 2.1 CelebA 2.2 LFW 2.3 MegaFace 2.4 Glint360K 2.5 WebFace260M 人脸识别 (Face Recognition) 是一种基于人的面部…

Kafka应用Demo:按主题订阅消费消息

安装环境 Kafka安装可参考官方网站的指导(https://kafka.apache.org/quickstart), 按步骤解压压缩包&#xff0c;修改配置。然后再启动zookeeper和kafka-server即可。 需要注意的一点&#xff1a;如果是在VMware虚拟机上启动的kafka, 需要修改一下server.properties配置文件&am…

Python基础之运算符操作

在Python中&#xff0c;运算符的作用就是用于执行各种的运算操作&#xff0c;常见的运算符有算数运算符、比较运算符、逻辑运算符、赋值运算符、成员运算符、身份运算符等。下面我们就来看看在Python中这些运算的详细操作。 算术运算符 算术运算符是用来执行一些基本的数学运…

数据结构---动态数组

一、数据结构基本理论 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。强调数据元素之间的关系 算法五个特性&#xff1a; 输入、输出、有穷、确定、可行 数据结构分类&#xff1a; 逻辑结构&#xff1a;集合、线性结构、树形结构、图形结构 物理…