Android中ImageView的scaleType 属性说明。

ImageView是Android中最常用的控件之一,在使用ImageView的时候,必不可少的会使用到scaleType属性,该属性指定了你的ImageView如何显示图片。包括是否进行缩放,等比缩放,缩放后显示的位置,
Android中提供了八种scaleType的属性,每种都对应了一种展示方式,
这个是测试放到ImageView中的图从左到右依次有各个角色,便于区分,这张图是1920*1080,无论长宽都比测试所用的ImageView大。
在这里插入图片描述
这个是用于测试的ImageView布局:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/colorAccent"><ImageViewandroid:id="@+id/image_view"android:layout_width="300dip"android:layout_height="300dip"android:layout_gravity="center"android:background="@android:color/holo_purple"/></FrameLayout>

可以看到ImageView是正方形的,其背景色为紫色,父布局设置其背景色为红色,这样可以很容易看到各个控件的大小。在手机上这个布局看起来是这个样子的,紫色空间就是ImageView
在这里插入图片描述
scaleType属性既可以在 XML 中设置,也可以在代码中设置:android:scaleType=“centerInside” //XML中
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); //代码中

八个scaleType,其中可以分为三个类型。
1、以FIT_开头的4种,他们的共同特点是都会对图片进行缩放。
2、以Center_开头的,他们的共同特点是居中显示,图片的中心点会与ImageView的中心点重叠。
3、ScaleType.MATRIX,这种就直接翻到最后看内容吧;
ScaleType.FIT_CENTER 默认
该模式是ImageView的默认模式,如果没有设置ScaleType时,将采用这种模式展示图片,在该模式下,图片会被等比缩放到能够填充控件大小,并居中显示
在这里插入图片描述
这里例子里因为图片宽大于高,于是被缩放到控件大小并居中展示,上下会留白。如果图片的高大于宽,那么居中显示就会在左右留白。
ScaleType.FIT_START
图片等比例缩放到控件大小,并放置在控件的上边或左边展示,此模式下会在ImageView的下部分留白,如果图片高度大于宽度,那么会在ImageView的右部分留白。在这里插入图片描述
ScaleType.FIT_END
图片等比缩放到控件大小,并放置在控件的下边或右边展示。如图所示,此模式下会在ImageView的上半部分留白,如果图片高度大于宽,那么就会在ImageView的左半部分留白。在这里插入图片描述
ScaleType.FIT_XY
图片缩放到控件大小,完全填充控件大小展示。注意,此模式不是等比缩放。这个模式理解也是最简单的,如图:
在这里插入图片描述
ScaleType.CENTER
不使用缩放,ImageView会展示图片的中心部分,即图片的中心点和ImageView的中心点重叠,如图。如果图片的大小小于控件的宽高,那么图片会被居中显示。
在这里插入图片描述
ScaleType.CENTER_CROP
在该模式下,图片会被等比缩放直到完全填充整个ImageView,并居中显示。该模式也是最常用的模式了。如图可以看到,图片的高度是能完全展示出来的:
在这里插入图片描述
ScaleType.CENTER_INSIDE
使用此模式以完全展示图片的内容为目的。图片将被等比缩放到能够完整展示在ImageView中并居中,如果图片大小小于控件大小,那么就直接居中展示该图片:在这里插入图片描述
这里大家看到这个模式的效果与ScaleType.FIT_CENTER的效果相同,这是因为所用图片是是大于ImageView的大小的,如果图片是小于控件大小,那么就能够看出来这两个模式下的差别了。

ScaleType.MATRIX
一般情况下重点都放在最后,在这八种ScaleType中,这个模式就是重点了。该模式需要与ImageView.setImageMatrix(Matrix matrix) 配合使用,因为该模式需要用于指定一个变换矩阵用于指定图片如何展示。其实前面的7种模式都是通过ImageView在内部生成了相应的变换矩阵,等于是提供了该模式的一种特定值,使用这个模式只要传入相应矩阵,也就能实现上述七种显示效果。
关于如何使用矩阵的内容,不是很快能说完,所以这里就不说了。
另外注意,在使用时,需要先调用
imageView.setScaleType(ImageView.ScaleType.MATRIX);

再调用
imageView.setImageMatrix(matrix);

注意顺序不要搞错,否则会出现问题的。下面看一下代码:
imageView.setScaleType(ImageView.ScaleType.MATRIX); //设置为矩阵模式

Matrix matrix = new Matrix(); //创建一个单位矩阵
matrix.setTranslate(100, 100); //平移x和y各100单位
matrix.preRotate(30); //顺时针旋转30度
imageView.setImageMatrix(matrix); //设置并应用矩阵

每行代码都有注释,其展示的效果如下图显示。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/325826.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

支付渠道参数如何设计成路由化配置

转载自 支付渠道参数如何设计成路由化配置 今天我们来探讨在搭建支付系统时一个比较关键的问题&#xff1a;渠道参数路由化配置如何设计&#xff1f; 在开发支付系统的时候&#xff0c;我们经常会涉及到对接多个支付渠道&#xff0c;除常见的支付宝、微信外可能还会根据不同的…

实现Windows程序的数据更新

一、枚举&#xff1a; 1.语法&#xff1a;public enum 名字{ 值1,值2} 2.eg:public enum Genders{Male,FeMale} 3.使用枚举&#xff1a;枚举名.值 4.枚举的好处&#xff1a; (1)使代码更易于维护 (2)更易于用户输入值&#xff0c;直接用.的方式就可以获取值 (3)使代码更清晰&a…

分布式数据访问服务之1—华山论剑篇

业界主流的互联网架构中&#xff0c;分布式服务框架、分布式数据访问服务、消息队列服务、服务网关(API)、分布式事务等都是核心的组件和框架。 当我们的系统规模越来越大&#xff0c;从几台服务器扩展到几十台、几百台、上千台&#xff0c;传统的烟囱式的、大集中式系统架构&…

Android中异步任务AsyncTask的使用

1、当程序启动的时候&#xff0c;Android同时会启动一个对应的线程&#xff0c;【主线程、UI线程】主要负责处理与UI相关的线程 2、UI线程不允许访问网络进行耗时操作 3、子线程不允许更新UI。 由于Android中主线程不能访问网络、子线程不能更新UI&#xff0c;需要线程间通讯 完…

漫画:什么是快速排序?(完整版)

转载自 漫画&#xff1a;什么是快速排序&#xff1f;&#xff08;完整版&#xff09; 同冒泡排序一样&#xff0c;快速排序也属于交换排序&#xff0c;通过元素之间的比较和交换位置来达到排序的目的。 不同的是&#xff0c;冒泡排序在每一轮只把一个元素冒泡到数列的一端&a…

测试——《微服务设计》读书笔记

一.测试象限&#xff08;Brain Marick&#xff09; 二.测试金字塔&#xff08;Mike Cohn&#xff09; 1.单元测试 通常只测试一个函数或方法调用&#xff0c;通过TDD或者基于属性而写的测试就属于这一类&#xff0c;在UnitTest中&#xff0c;我们不会启动服务&#xff0c;对且对…

React功能界面的组件化编码流程

功能界面的组件化编码流程&#xff08;通用&#xff09; 1.拆分组件: 拆分界面,抽取组件 2.实现静态组件: 使用组件实现静态页面效果 3.实现动态组件 3.1 动态显示初始化数据 3.1.1 数据类型 3.1.2 数据名称 3.1.2 保存在哪个组件? 3.2 交互(从绑定事件监听开始)

Java 多文件上传

转载自 Java 多文件上传 前台代码很简单&#xff1a; <input type"file" accept".zip" class"file-load" multiple"multiple" name"files"/> 后台代码&#xff1a; public boolean uploadFlow(RequestParam Mult…

MyKtv点歌系统前台主要功能实现,内附数据库脚本,可以直接运行

C#开发工具&#xff1a;Visual Studio 2012 数据库&#xff1a;Sql Server Windows版本&#xff1a;Win10 分辨率&#xff1a;1366*768 文章的最后有KTV点歌系统的前后台源码下载链接。 在正式写代码之前先看一下运行效果图&#xff0c;如果觉得这个是你需要的&#xff0c;那么…

Hibernate使用最新的MySQL8.+版本出现的问题!

目前所出现的问题 1、驱动包更新为 mysql-connector-java-8.0.12.jar 2、hibernate的配置文件hibernate.cfg.xml中使用 <property name"connection.driver_class">com.mysql.cj.jdbc.Driver</property>取代之前的 <property name"connection.d…

支持断线重连、永久watcher、递归操作 ZooKeeper 客户端

项目介绍 ZooKeeper本质上是一个分布式的小文件存储系统。原本是Apache Hadoop的一个组件&#xff0c;现在被拆分为一个Hadoop的独立子项目。 Zookeeper 作为一个分布式的服务框架&#xff0c;主要用来解决分布式集群中应用系统的一致性问题&#xff0c;它能提供基于类似于文…

mongdb总结

#清屏 cls --windows #操作数据库 show dbs --查看所有数据库 use dbName --使用已有的dbName数据库&#xff0c;或者创建新的数据库dbName&#xff0c;如果一个数据库没有表就不存在 db --显示数据库名称 #操作集合 show collections …

JavaScript操作BOM简单案例

需要两个页面index.html和Test.html&#xff0c;可以直接运行&#xff0c;每个功能都已经注释完整&#xff0c;index.html页面的代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head…

Java中“/”,“.”所代表的文件路径

转载自 Java中“/”&#xff0c;“.”所代表的文件路径 我们在开发的过程中&#xff0c;经常会去读、写文件。在读写文件的时候&#xff0c;就不得不写文件的路径&#xff0c;使用相对路径的方式有两种&#xff1a;”/”和 “.” 。在写文件的路径的时候&#xff0c;需要了解一…

Hibernate框架(1)

1.Hibernate框架简述 Hibernate的核心组件 在基于MVC设计模式的JAVA WEB应用中&#xff0c;Hibernate可以作为模型层/数据访问层。它通过配置文件(hibernate.properties或hibernate.cfg.xml)和映射文件(***.hbm.xml)把JAVA对象或PO(Persistent Object,持久化对象)映射到数据库中…

通过 Transifex 中文化开源软件

如果您对于汉化软件充满热情, 我软已经发布了以下的开源产品在 Transifex 平台&#xff0c;让社区的小伙伴们参与翻译以及审核: 如何参与? – Transifex 的新手 登录 Transifex 如果您第一次使用 Transifex, 您可以新建立一个账号或是通过您的 GitHub, Google 或 LinkedIn 账号…

JavaScript操作DOM元素

一、DOM&#xff1a; Document Object Model&#xff08;文档对象模型&#xff09; 二、DOM的分类&#xff1a; 1.DOM Core&#xff08;核心&#xff09; 2.HTML-DOM 3.CSS-DOM 三、节点属性&#xff1a; 1.lastElementChild:最后一个节点 2.firstElementChild:第一个节点 3.ne…