安卓 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

相关文章

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

解读GC日志中的各项指标用法

《解读GC日志中的各项指标用法》:本文主要介绍GC日志中的各项指标用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、基础 GC 日志格式(以 G1 为例)1. Minor GC 日志2. Full GC 日志二、关键指标解析1. GC 类型与触发原因2. 堆

MySQL数据库中ENUM的用法是什么详解

《MySQL数据库中ENUM的用法是什么详解》ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用,下面:本文主要介绍MySQL数据库中ENUM的用法是什么的相关资料,文中通过代码... 目录mysql 中 ENUM 的用法一、ENUM 的定义与语法二、ENUM 的特点三、ENUM 的用法1

JavaSE正则表达式用法总结大全

《JavaSE正则表达式用法总结大全》正则表达式就是由一些特定的字符组成,代表的是一个规则,:本文主要介绍JavaSE正则表达式用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录常用的正则表达式匹配符正则表China编程达式常用的类Pattern类Matcher类PatternSynta

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

深度解析Python装饰器常见用法与进阶技巧

《深度解析Python装饰器常见用法与进阶技巧》Python装饰器(Decorator)是提升代码可读性与复用性的强大工具,本文将深入解析Python装饰器的原理,常见用法,进阶技巧与最佳实践,希望可... 目录装饰器的基本原理函数装饰器的常见用法带参数的装饰器类装饰器与方法装饰器装饰器的嵌套与组合进阶技巧