• 详解android:scaleType属性


    详解android:scaleType属性

    转自:http://blog.csdn.net/encienqi/article/details/7913262    http://juliaailse.iteye.com/blog/1409317

    Android:scaleType是控制图片如何resized/moved来匹对ImageView的size。

    ImageView.ScaleType / android:scaleType值的意义区别:

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

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

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

    FIT_CENTER / fitCenter  把图片按比例扩大/缩小到View的宽度,居中显示

    FIT_END / fitEnd   把图片按比例扩大/缩小到View的宽度,显示在View的下部分位置

    FIT_START / fitStart  把图片按比例扩大/缩小到View的宽度,显示在View的上部分位置

    FIT_XY / fitXY  把图片不按比例扩大/缩小到View的大小显示

    MATRIX / matrix 用矩阵来绘制,动态缩小放大图片来显示。

    ** 要注意一点,Drawable文件夹里面的图片命名是不能大写的

    分别将adjustViewBonds设为true和false,与各种scaleType搭配,产生了不同效果。(上面的ImagView的adjstViewBonds值为false;下面的ImagView的adjstViewBonds值为true;两个ImagView大小相同)如下:

    代码:

    <ImageView
            android:id="@+id/imageView1"
            android:layout_width="fill_parent"
            android:layout_height="200dip"
            android:adjustViewBounds="false"
            android:scaleType="centerInside"//此处每次更改
            android:src="@drawable/ic_3" />//此处两幅图间更改,一副图的大小较小,另一幅的较大。
    
        <ImageView
            android:id="@+id/imageView2"
            android:layout_width="fill_parent"
            android:layout_height="200dip"
            android:adjustViewBounds="true"
            android:scaleType="centerInside"//此处每次更改
            android:src="@drawable/ic_3" />//此处两幅图间更改,一副图的大小较小,另一幅的较大。




      

    1、scaleType=“matrix”
    如图pic1、pic2.
    是保持原图大小、从左上角的点开始,以矩阵形式绘图。


    pic1
     

    pic2
     
    2、scaleType=“fitXY”
    如图pic3、pic4.
    是将原图进行横方向(即XY方向)的拉伸后绘制的。


    pic3
     

    pic4
     
    3、scaleType=“fitStart”
    如图pic5、pic6。
    是将原图沿左上角的点(即matrix方式绘图开始的点),按比例缩放原图绘制而成的。


    pic5
     

    pic6
     
    4、scaleType=“fitCenter”
    如图pic7、pic8。
    是将原图沿上方居中的点(即matrix方式绘图第一行的居中的点),按比例缩放原图绘制而成的。


    pic7
     

    pic8
     
    5、scaleType=“fitEnd”
    如图pic9、pic10。、
    是将原图沿下方居中的点(即matrix方式绘图最后一行的居中的点),按比例缩放原图绘制而成的。


    pic9
     

    pic10
     
    6、scaleType=“Center”
    如图pic11、pic12。
    是保持原图大小,以原图的几何中心点和ImagView的几何中心点为基准,只绘制ImagView大小的图像。


    pic11
     
     pic12
     
    7、scaleType=“centerCrop”
    如图pic13、pic14。
    不保持原图大小,以原图的几何中心点和ImagView的几何中心点为基准,只绘制ImagView大小的图像(以填满
    ImagView为目标,对原图进行裁剪)。


    pic13
     

    pic14
     
    8、scaleType=“centerInside”
    如图pic15、pic16.
    不保持原图大小,以原图的几何中心点和ImagView的几何中心点为基准,只绘制ImagView大小的图像(以显示
    完整图片为目标,对原图进行缩放)。


    pic15
     

    pic16

          (事实证明,adjustViewBonds单独设置无影响。)

          scaletype的种类分为三类matrix(默认)、fit-X类、和center类。matrix就不多说。fit-X类中,
    fitStart、fitCenter和fitEnd之间的都是根据需要使原图改变对ImgView进行适应,按matrix进行绘制,但它们
    的区别在于基准不同。fitStart的基准为最上角的点(即matrix方式开始的点)fitCenter的基准点为中间的点
    (matrix方式中可以使图片居中的点),而fitEnd的基准点为右下角的点(即matrix方式最后绘制点)。center类
    中,center、centerCrop、centerInside都是以原图的几何中心点和ImagView的几何中心点为基准,且只绘制
    ImagView大小的图像,不同的是是否保持原图大小和绘图的目标不同、采取的手段不同。


  • 相关阅读:
    06_Python的数据类型3元组,集合和字典_Python编程之路
    05_Python的数据类型2列表_Python编程之路
    03_Linux的目录结构_我的Linux之路
    03-第一个脚本程序以及输入输出_Python编程之路
    系统命令学习
    《构建之法》读书笔记
    Android开发入门
    Android 手机进入不了fastboot模式的解决方案
    error:“Unexpected namespace prefix "xmlns" found for tag LinearLayout”
    2014.2.13自我能力量化
  • 原文地址:https://www.cnblogs.com/nuliac/p/5800900.html
Copyright © 2020-2023  润新知