安卓 ImageView 的 scaleType 用法实用总结

2023-10-20 00:18

本文主要是介绍安卓 ImageView 的 scaleType 用法实用总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

安卓 ImageView 的 scaleType 用法实用总结

如果想快速决定用哪个值好,那直接跳到后面的总结吧。

ImageView 共有7种 scaleType。

  1. FIT_开头的4种,共同点是都会对图片进行缩放(只有fitXY不等比缩放);
  2. CENTER_开头的3种,共同点是居中显示,图片的中心点与ImageView的中心点重叠;
  3. MATRIX

下面一个个讲解。

FIT_

  • fitCenter(默认)
    等比缩放到某一边能够填充控件大小,且图片能完整显示,并居中。
    在这里插入图片描述

  • fitStart
    等比缩放到某一边能够填充控件大小,且图片能完整显示,并靠左或靠上显示
    在这里插入图片描述

  • fitEnd
    等比缩放到某一边能够填充控件大小,且图片能完整显示,并靠右或靠下显示
    在这里插入图片描述

  • fitXY
    图片(不等比)缩放到控件大小,完全填充控件大小显示
    在这里插入图片描述

CENTER_

  • center
    不使用缩放,显示图片的中心部分,即图片的中心点和ImageView的中心点重叠。
    若图片宽高小于控件宽高,则图片只会显示中间部分,即周围会被裁剪。也就是无论如何图片的大小都不会改变,控件大小决定可见范围。
    在这里插入图片描述 在这里插入图片描述
    如左图图片小于ImageView,则能够完全显示;右图图片大于ImageView,只能显示中间的一部分。而图片的显示尺寸并没有变化,只不过显示不全而已。

  • centerInside
    当图片小于控件时,效果与center相同,居中显示;否则,等比缩放到某一边能够填充控件大小,并居中显示。与fitCenter的区别就是centerInside的图片只会缩小,不会放大。
    在这里插入图片描述 在这里插入图片描述

  • centerCrop
    等比缩放到填充整个控件大小,并居中显示。与fitCenter的区别是centerCrop的图片会填充整个区域,所以可能会被裁剪。
    在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

(注意这里图片背景为灰色,图片白色部分不属于ImageView,即ImageView已被图片占满。

MATRIX

需要与ImageView.setImageMatrix(Matrix matrix) 配合使用,指定一个变换矩阵用于指定图片如何展示。

如:

imageView.setScaleType(ImageView.ScaleType.MATRIX);  //设置为矩阵模式Matrix matrix = new Matrix();           //创建一个单位矩阵
matrix.setTranslate(50, 50);          //平移x和y各50单位
matrix.preRotate(40);                   //顺时针旋转40度
imageView.setImageMatrix(matrix);       //设置并应用矩阵

总结

  • 希望图片能够按照原来的比例显示
    • 并且尽可能撑满ImageView(不一定是占满整个ImageView)
      • 希望图片能够完整显示
        那就用fitCenterfitStartfitCenter(选哪个取决于要怎么对齐了,一般是用fitCenter吧,没有设置的时候默认值就是fitCenter)
      • 希望图片占满整个ImageView,并且能够容忍两边被裁剪
        centerCrop
    • 不一定要撑满ImageView
      centerInside
    • 希望按照图片原来大小显示,并且能容忍周围被裁剪
      center
  • 不在乎图片比例,希望图片完整显示,且占满整个ImageView,就用fitXY
  • 有其他特殊需求的,用比较高级的matrix

最终总结

可见显示的需求主要是根据是否按比例,图片是否要充满控件这两个因素决定的。就个人使用来说,觉得最常用的就是fitCenter(默认值),因为能够按比例且完整显示,又能在某个方向撑满控件;当希望控件被图片占满时(图片可以被适当裁剪),比较常用的就是centerCrop,因为可以保证图片按比例显示。

这篇关于安卓 ImageView 的 scaleType 用法实用总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/243314

相关文章

MySQL中between and的基本用法、范围查询示例详解

《MySQL中betweenand的基本用法、范围查询示例详解》BETWEENAND操作符在MySQL中用于选择在两个值之间的数据,包括边界值,它支持数值和日期类型,示例展示了如何使用BETWEEN... 目录一、between and语法二、使用示例2.1、betwphpeen and数值查询2.2、be

C# List.Sort四种重载总结

《C#List.Sort四种重载总结》本文详细分析了C#中List.Sort()方法的四种重载形式及其实现原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录1. Sort方法的四种重载2. 具体使用- List.Sort();- IComparable

SpringBoot项目整合Netty启动失败的常见错误总结

《SpringBoot项目整合Netty启动失败的常见错误总结》本文总结了SpringBoot集成Netty时常见的8类问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、端口冲突问题1. Tomcat与Netty端口冲突二、主线程被阻塞问题1. Netty启动阻

SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)

《SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)》本文总结了SpringBoot项目整合Kafka启动失败的常见错误,包括Kafka服务器连接问题、序列化配置错误、依赖配置问题、... 目录一、Kafka服务器连接问题1. Kafka服务器无法连接2. 开发环境与生产环境网络不通二、序

Java序列化之serialVersionUID的用法解读

《Java序列化之serialVersionUID的用法解读》Java序列化之serialVersionUID:本文介绍了Java对象的序列化和反序列化过程,强调了serialVersionUID的作... 目录JavChina编程a序列化之serialVersionUID什么是序列化为什么要序列化serialV

python3中正则表达式处理函数用法总结

《python3中正则表达式处理函数用法总结》Python中的正则表达式是一个强大的文本处理工具,用于匹配、查找、替换等操作,在Python中正则表达式的操作主要通过内置的re模块来实现,这篇文章主要... 目录前言re.match函数re.search方法re.match 与 re.search的区别检索

MySQL 中的 JSON_CONTAIN用法示例详解

《MySQL中的JSON_CONTAIN用法示例详解》JSON_CONTAINS函数用于检查一个JSON文档中是否包含另一个JSON文档,这篇文章给大家介绍JSON_CONTAINS的用法、语法、... 目录深入了解 mysql 中的 jsON_CONTAINS1. JSON_CONTAINS 函数的概述2

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装