zoukankan      html  css  js  c++  java
  • 【转】ImageView.ScaleType属性

    原文网址:https://blog.csdn.net/Buaaroid/article/details/49360779

    ImageView的Scaletype决定了图片在View上显示时的样子,如进行何种比例的缩放,及显示图片的整体还是部分,等等。

    设置的方式包括:

    1. 在layout xml中定义android:scaleType="CENTER"

    2. 或在代码中调用imageView.setScaleType(ImageView.ScaleType.CENTER);

    接下来,将对ScaleType的值和对应的显示效果用最直观的方式——真图演示的方法,来进行说明。

    下面附上效果图:

    原图为Pocoyo的头像,上图为原图的size大于ImageView的size,下图为原图的size小于ImageView的size

    android:adjustViewBounds

    ImageView的android:adjustViewBounds属性为是否保持原图的长宽比,单独设置不起作用,需要配合maxWidth或maxHeight一起使用。

    [java] view plain copy
     
    1. <ImageView    
    2.         android:id="@+id/imageView1"    
    3.         android:layout_width="fill_parent"    
    4.         android:layout_height="200dip"    
    5.         android:adjustViewBounds="false"    
    6.         android:scaleType="centerInside"//此处每次更改    
    7.         android:src="@drawable/ic_3" />//此处两幅图间更改,一副图的大小较小,另一幅的较大。    
    8.     
    9.     <ImageView    
    10.         android:id="@+id/imageView2"    
    11.         android:layout_width="fill_parent"    
    12.         android:layout_height="200dip"    
    13.         android:adjustViewBounds="true"    
    14.         android:scaleType="centerInside"//此处每次更改    
    15.         android:src="@drawable/ic_3" />//此处两幅图间更改,一副图的大小较小,另一幅的较大。   

     (代码为了证明,adjustViewBonds单独设置无影响。)

    - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - -

    依本人之见,scaletype的种类分为三类matrix(默认)、fit-X类、和center类。

    matrix就不多说。

    fit-X类中,
    fitStart、fitCenter和fitEnd之间的都是根据需要使原图改变对ImgView进行适应,按matrix进行绘制,但它们
    的区别在于基准不同。fitStart的基准为最上角的点(即matrix方式开始的点)fitCenter的基准点为中间的点
    (matrix方式中可以使图片居中的点),而fitEnd的基准点为右下角的点(即matrix方式最后绘制点)。

    fit-类与下文有出入,实际用到时验证。

    center类
    中,center、centerCrop、centerInside都是以原图的几何中心点和ImagView的几何中心点为基准,且只绘制
    ImagView大小的图像,不同的是是否保持原图大小和绘图的目标不同、采取的手段不同。

    - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - -

    android:scaleType="center"

    保持原图的大小,显示在ImageView的中心。当原图的size大于ImageView的size,超过部分裁剪处理。

    android:scaleType="centerCrop"

    以填满整个ImageView为目的,将原图的中心对准ImageView的中心,等比例放大原图,直到填满ImageView为止(指的是ImageView的宽和高都要填满),原图超过ImageView的部分作裁剪处理。

    android:scaleType="centerInside"

    以原图完全显示为目的,将图片的内容完整居中显示,通过按比例缩小原图的size宽(高)等于或小于ImageView的宽(高)。如果原图的size本身就小于ImageView的size,则原图的size不作任何处理,居中显示在ImageView。

    android:scaleType="matrix"

    不改变原图的大小,从ImageView的左上角开始绘制原图,原图超过ImageView的部分作裁剪处理。

    android:scaleType="fitCenter"

    把原图按比例扩大或缩小到ImageView的ImageView的高度,居中显示

    android:scaleType="fitEnd"

    把原图按比例扩大(缩小)到ImageView的高度,显示起始于ImageView的右下方

    android:scaleType="fitStart"

    把原图按比例扩大(缩小)到ImageView的高度,显示起始于ImageView的左上方

    android:scaleType="fitXY"

    把原图按照View指定的大小在View中显示,拉伸显示图片,不保持原比例,填满ImageView.

  • 相关阅读:
    【LeetCode】17. Letter Combinations of a Phone Number
    【LeetCode】16. 3Sum Closest
    【LeetCode】15. 3Sum 三个数和为0
    【LeetCode】14. Longest Common Prefix 最长前缀子串
    【LeetCode】13. Roman to Integer 罗马数字转整数
    【LeetCode】12. Integer to Roman 整型数转罗马数
    【LeetCode】11. Container With Most Water
    【LeetCode】10. Regular Expression Matching
    Models of good programmer
    RSA Algorithm
  • 原文地址:https://www.cnblogs.com/wi100sh/p/9229989.html
Copyright © 2011-2022 走看看