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

相关文章

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

macOS无效Launchpad图标轻松删除的4 种实用方法

《macOS无效Launchpad图标轻松删除的4种实用方法》mac中不在appstore上下载的应用经常在删除后它的图标还残留在launchpad中,并且长按图标也不会出现删除符号,下面解决这个问... 在 MACOS 上,Launchpad(也就是「启动台」)是一个便捷的 App 启动工具。但有时候,应

java之Objects.nonNull用法代码解读

《java之Objects.nonNull用法代码解读》:本文主要介绍java之Objects.nonNull用法代码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录Java之Objects.nonwww.chinasem.cnNull用法代码Objects.nonN

JavaScript Array.from及其相关用法详解(示例演示)

《JavaScriptArray.from及其相关用法详解(示例演示)》Array.from方法是ES6引入的一个静态方法,用于从类数组对象或可迭代对象创建一个新的数组实例,本文将详细介绍Array... 目录一、Array.from 方法概述1. 方法介绍2. 示例演示二、结合实际场景的使用1. 初始化二

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi

一文带你了解SpringBoot中启动参数的各种用法

《一文带你了解SpringBoot中启动参数的各种用法》在使用SpringBoot开发应用时,我们通常需要根据不同的环境或特定需求调整启动参数,那么,SpringBoot提供了哪些方式来配置这些启动参... 目录一、启动参数的常见传递方式二、通过命令行参数传递启动参数三、使用 application.pro

关于@RequestParam的主要用法详解

《关于@RequestParam的主要用法详解》:本文主要介绍关于@RequestParam的主要用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 基本用法2. 默认值3. 可选参数4. 绑定到对象5. 绑定到集合或数组6. 绑定到 Map7. 处理复杂类

SQL中的CASE WHEN用法小结

《SQL中的CASEWHEN用法小结》文章详细介绍了SQL中的CASEWHEN函数及其用法,包括简单CASEWHEN和CASEWHEN条件表达式两种形式,并通过多个实际场景展示了如何使用CASEWH... 目录一、简单CASE WHEN函数:二、CASE WHEN条件表达式函数三、常用场景场景1:不同状态展

Linux find 命令完全指南及核心用法

《Linuxfind命令完全指南及核心用法》find是Linux系统最强大的文件搜索工具,支持嵌套遍历、条件筛选、执行动作,下面给大家介绍Linuxfind命令完全指南,感兴趣的朋友一起看看吧... 目录一、基础搜索模式1. 按文件名搜索(精确/模糊匹配)2. 排除指定目录/文件二、根据文件类型筛选三、时间