Android技术知识Android知识Android开发

【Android 基础】之 ImageView 的 scaleT

2017-04-29  本文已影响436人  秀花123

ImageView src 属性

ImageView 有一个 Drawable 类型的成员变量 mDrawable 就是 ImageView 显示的 Drawable,设置 mDrawable 有两种方式:

public void setImageDrawable(@Nullable Drawable drawable)
public void setImageBitmap(Bitmap bm) 

第一个方法参数是一个 Drawable 对象,第二个方法参数是一个 Bitmap 对象,在方法内部也是创建了 BitmapDrawable 对象赋值给成员变量 mDrawable;

public Drawable getDrawable()

ImageView scaleType 属性

当 Drawable 作为 View 背景时自动拉伸至控件大小,当作为 ImageView 的内容显示时,通过 android:scaleType 属性控制 Drawable 的显示,当然也对外提供了设置 scaleType 的方法,

public void setScaleType(ScaleType scaleType)

ScaleType 的取值为

ScaleType 类型大致可分为三类:

  1. 以 FIT_开头,它们的共同点是会对图片进行缩放
  1. 以 CENTER_ 开头,它们的共同点是图片居中显示,图片的中心点和 ImageView 的中心点重合
  1. ScaleType.MATRIX
    该模式需要与 ImageView.setImageMatrix(Matrix matrix) 配合使用,因为该模式需要用于指定一个变换矩阵用于指定图片如何展示。
    在不作矩阵变换的情况下,从控件的左上角开始,不缩放图片,与CENTER相似,不同点在于把图片的左上角对上控件的左上角显示,超出控件的部分不显示。
    在使用时,需要先调用 setScaleType 方法,再调用 setImageMatrix 方法
    下面给出一个使用示例:
imageView.setScaleType(ImageView.ScaleType.MATRIX);  //设置为矩阵模式
Matrix matrix = new Matrix();           //创建一个单位矩阵
matrix.setTranslate(100, 100);          //平移x和y各100单位
matrix.preRotate(30);                   //顺时针旋转30度
imageView.setImageMatrix(matrix);       //设置并应用矩阵

因为比较混乱,再稍微总结一下:
从缩放角度来说:

从图片内容显示角度来说:

从控件填充角度来说:

上一篇 下一篇

猜你喜欢

热点阅读