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;除常见的支付宝、微信外可能还会根据不同的…

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

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

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

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

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

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

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

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

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 账号…

第六期.Net开源社群联合分享--除了情结和价格,Azure最适合什么场景?等你来讲趟坑的实战经验!

嘿嘿&#xff0c;大家好啊&#xff01;好荣幸啊这一期&#xff0c;能够咱们.NET开源社区一块来做这次线上分享会。 我就是各位小伙伴可爱而且博学而且低调而且人见人爱花见花开而且谦虚但是经常口不择言的主持人老板娘Grace。 这次有新朋友&#xff0c;有老朋友&#xff0c;有…

支付系统的防重设计

转载自 支付系统的防重设计 导读 “目前在互联网应用的大部分支付场景中&#xff0c;对接支付宝、微信移动支付产品这样需要用户参与支付流程的支付方式已经变得非常普遍&#xff0c;类似的还有PC端银行网银支付&#xff1b;而通过绑定用户银行卡、对接银行卡快捷支付通道直接…

Windows Server Containers 支持 Windows 开发者使用 Docker

在过去几年里&#xff0c;Docker 和容器已成为全球开发界和企业最热门的话题之一。去年秋天发布的 Windows Server 2016 支持 Windows 开发者使用容器&#xff0c;使得这一热门话题再次升温。Windows 和 Docker 是如何走到一起的&#xff1f; 一切始于 2014 年隆重举办的普吉特…

漫画:什么是二叉堆?(修正版)

转载自 漫画&#xff1a;什么是二叉堆&#xff1f;&#xff08;修正版&#xff09; 什么是二叉堆&#xff1f; 二叉堆本质上是一种完全二叉树&#xff0c;它分为两个类型&#xff1a; 1.最大堆 2.最小堆 什么是最大堆呢&#xff1f;最大堆任何一个父节点的值&#xff0c;都…

漫画:什么是堆排序

转载自 漫画&#xff1a;什么是堆排序 在上一篇漫画中&#xff0c;小灰介绍了 二叉堆 这样一种强大的数据结构&#xff1a; 漫画&#xff1a;什么是二叉堆&#xff1f;&#xff08;修正版&#xff09; 那么&#xff0c;这个二叉堆怎样来使用呢&#xff1f;我们这一期将会详…

监控——《微服务设计》读书笔记

在单块应用的世界里&#xff0c;当我们遇到问题时&#xff0c;我们至少清楚从哪里开始调查。网站访问速度&#xff1f;网站访问异常&#xff1f;CPU占用过高&#xff1f;这些都是单块应用程序的问题&#xff0c;单一的故障点会极大地简化对问题的排查。 而现在我们面对了多个微…

什么是 TCC分布式事务

转载自 什么是 TCC分布式事务 近两年微服务变得越来越火热&#xff0c;各种框架与组件的出现&#xff0c;更是为微服务的开发提供了便利。 我们都知道&#xff0c;每个微服务都是一个对应的小服务&#xff0c;多个服务之间可以方便的进行功能的组合&#xff0c;来形成功能更…

.NET跨平台实践:再谈用C#开发Linux守护进程 — 完整篇

Linux守护进程是Linux的后台服务进程&#xff0c;相当于Windows服务&#xff0c;对于为Linux开发服务程序的朋友来说&#xff0c;Linux守护进程相关技术是必不可少的&#xff0c;因为这个技术不仅仅是为了开发守护进程&#xff0c;还可以拓展到多进程&#xff0c;父子进程文件描…

选择大公司还是小公司

转载自 选择大公司还是小公司 本文转载自公众号 stormzhang&#xff0c;文中的“我”是原文作者。 前一段时间&#xff0c;我一知识星球的球友问我这么一个问题&#xff0c;说他是某 985 应届生&#xff0c;拿到了 BAT 一家互联网大公司的 offer&#xff0c;但同时他还拿到了…