Android ImageView 的scaleType属性简介

Android  2021年8月19日 pm7:41发布3年前 (2021)更新 城堡大人
119 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、 本站名称: 笔友城堡
2、 本站网址: https://www.biumall.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权,请留言

暂无评论

暂无评论...

随机推荐

Android.mk 用法解析整理

Android.mk 还是整理一下,有时候还是忘记了,这里只是讲解一部分,其他的自己百度或谷歌吧。 编译一个APK的Android.mk文件LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)#指定依赖的共享Java类库...

adb获取Android系统属性

在android系统中,它的根文件系统下有几个用于启动系统时需要的配置文件:/init.rc/default.prop/system/build.prop通常我们可以通过命令getprop获取,setprop设置;在使用这两个命令前,先看看build.prop里面到底有些什么东西:...

Seekbar旋转90后的VerticalSeekBar简单记录

前言之前有介绍《自定义垂直Seekbar简介》,文章内也说过[由于Android没有原生的垂直SeekBar,要么自定义,要么直接把SeekBar进行90°的翻转也可以。网上也很多相关资料和开源的垂直SeekBar,这里不介绍了[或许后面会整理一下]。]对的,今天有空就整理一下之前整合别人的旋...

冯友兰:我的读书经验

我今年八十七岁了,从七岁上学起就读书,一直读了八十年,其间基本上没有间断,不能说对于读书没有一点经验。我所读的书,大概都是文、史、哲方面的,特别是哲。我的经验总结起来有四点:(1)精其选,(2)解其言,(3)知其意,(4)明其理。先说第一点。古今中外,积累起来的书真是多极了,真是浩如烟海。但是,书...

三毛:故乡人

我们是替朋友的太太去上坟的。朋友坐轮椅,到了墓园的大门口,汽车便不能开进去,我得先将朋友的轮椅从车厢内拖出来,打开,再用力将他移上椅子,然后慢慢的推着他。他的膝上放着一大束血红的玫瑰花,一边讲着闲话,一边往露斯的墓穴走去。那时荷西在奈及利亚工作,我一个人住在岛上。我的朋友尼哥拉斯死了妻子,每隔...

[代码片]属性动画之无限旋转

前言简单记录一下而已,正文private ObjectAnimator mRotation = null;mRotation = ObjectAnimator.ofFloat(view, "rotation", 0, 360);mRotation.setDuration(2000);//...