Android ImageView 的scaleType属性简介

Android  2021年8月19日 pm7:41发布3年前 (2021)更新 91es.com站长
79 0 0

前言

最近在自定义ImageView时用到scaleType属性,因此在这里整(摘)理(抄)一下,方便自己查阅。

好记性不如烂笔头

正文

scaleType该属性指定让ImageView如何显示图片,包括是否进行缩放、等比缩放、缩放后展示位置等。

Android 提供了八种scaleType的属性值分别如下:

    public static enum ScaleType {
        MATRIX,
        FIT_XY,
        FIT_START,
        FIT_CENTER,
        FIT_END,
        CENTER,
        CENTER_CROP,
        CENTER_INSIDE;
    }

PS: xml和java都可以配置ImageView的属性。

下面单独对每一种简单的介绍一下,如果要图解,推荐看文末的第一个参考链接,该作者特意附上了图片描述。感谢。

MATRIX

用矩阵来绘制,可以动态缩放、移动和旋转等操作图片。

这个需要配合setImageMatrix()来使用。

举个例子

imageView.setScaleType(ImageView.ScaleType.MATRIX);
Matrix matrix = new Matrix();
matrix.preRotate(90); //顺时针旋转90
imageView.setImageMatrix(matrix);

FIT_XY

图片缩放并全铺到View上,不是等比缩放。

FIT_START

把图片按比例扩大/缩小到View的高宽上,从左或者上部开始显示。

  1. 如果图片的宽大于View的宽,就显示在上部。(下部空白)
  2. 如果图片的高大于View的高,就显示在左部。(右部空白)

FIT_CENTER

这个是ImageView的默认模式。图片会被等比缩放到能够填充控件大小,并居中显示。(存在上下空白)

FIT_END

这个跟FIT_START刚好相反。

把图片按比例扩大/缩小到View的高宽上,从右或者底部开始显示。

  1. 如果图片的宽大于View的宽,就显示在底部。(上部空白)
  2. 如果图片的高大于View的高,就显示在右部。(左部空白)

CENTER

按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示。

PS:这个会截取中心图片显示。

CENTER_CROP

按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽)

CENTER_INSIDE

将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽,并居中显示。

参考文章

  1. Android ImageView 的scaleType 属性图解
  2. setScaleType的各种情况

 历史上的今天

  1. 2023: LocalServices和SystemService等简介(0条评论)
  2. 2020: Android动画之RotateAnimation(0条评论)
  3. 2019: 周国平:爱的距离(0条评论)
版权声明 1、 本站名称: 91易搜
2、 本站网址: 91es.com3xcn.com
3、 本站内容: 部分来源于网络,仅供学习和参考,若侵权请留言
3、 本站申明: 个人流水账日记,内容并不保证有效

暂无评论

暂无评论...

随机推荐

Android截图和保存图片到指定目录

前言记录一下,Android截图方法和保存。我这是系统应用测试,非系统应用需要权限的申请等Android P验证OK正文获取截图public static Bitmap getScreenShot() { try { //反射 SurfaceContro...

[摘]替代Beyond Compare软件

前言Beyond Compare是比强大的文件对比软件,但是收费且比较贵。偶尔使用,且不想买,因此找了其他类似功能的软件进行替代。记录一下,方便自己查阅。本文摘抄的,来源《替代BeyondCompare,四款免费文件代码对比工具分享》小结为了省流,下面四款软件,我只试过前面2款。下面说说...

Android.mk介绍之二预编译

Android.mk可以编译生成的文件类型:APK : Android程序,编译生成的apk文件Java库 : Java类库,编译打包生成的jar文件C/C++可执行的应用程序 : 可执行的C/C++应用程序C/C++静态库 : 编译生成的C/C++静态库,打包生成的.a文件C...

Vim复制和粘贴命令

前言简单记录一下Vim拷贝和粘贴命令正文dddeletedd是删除光标所在位置的整行内容,并复制到缓存区dd : 删除光标所在的整行内容[N]dd : 删除从光标所在的行开始,联系N行的内容yyYankyy是复制光标所在的整行内容,并复制到缓存区yy : 复制光标所在的整行内...

ADB更改系统设置中的参数

 Android4.2以后的源码android-17\com\android\commands目录下较之前的版本多了一个settings命令,查看其中的SettingsCmd.java文件,末尾有命令的帮助信息:private static void printUsage() { ...

MediaPlayer源码介绍2

前言之前介绍MediaPlayer ,接上文《MediaPlayer JNI层介绍》(看做《MediaPlayer源码介绍1》)介绍到mediaplayer.cpp,这也是一个代理,真正处理的并不是这个。今天以setDataSource()为例继续分析。涉及代码frameworks\av\...