前言
最近在自定义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的高宽上,从左或者上部开始显示。
- 如果图片的宽大于View的宽,就显示在上部。(下部空白)
- 如果图片的高大于View的高,就显示在左部。(右部空白)
FIT_CENTER
这个是ImageView的默认模式。图片会被等比缩放到能够填充控件大小,并居中显示。(存在上下空白)
FIT_END
这个跟FIT_START刚好相反。
把图片按比例扩大/缩小到View的高宽上,从右或者底部开始显示。
- 如果图片的宽大于View的宽,就显示在底部。(上部空白)
- 如果图片的高大于View的高,就显示在右部。(左部空白)
CENTER
按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示。
PS:这个会截取中心图片显示。
CENTER_CROP
按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽)
CENTER_INSIDE
将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽,并居中显示。
参考文章
历史上的今天
暂无评论...
随机推荐
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);//...