Android UI系列-----ImageView的scaleType属性

Android UI系列-----ImageView的scaleType属性

这篇随笔将会简单的记录下ImageView这个控件的一些使用方法,以及其最重要的一个属性: scaleTypehtml

ImageView这个控件是用来显示图片用的,例如咱们能够经过下面这段xml配置来声明显示一张图片:java

<ImageView        android:id="@+id/imageView"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:src="@drawable/ic_launcher"/>

其中src就是引用咱们须要使用的图片,其能够是存放在 assets 目录下的图片,也能够是res/drawable目录下的图片,还能够是网络上的图片。咱们这里是将图片放在了 res/drawable这个目录下,而后经过其自动生成的ID来引用这个图片,咱们一样能够在Java代码中经过ImageView这个对象来设置咱们要引用的图片android

     ImageView imageView = (ImageView)findViewById(R.id.iamgeView1);        //    经过setImageResource()来设置引用的图片
        imageView.setImageResource(R.id.iamgeView1);

接下来咱们来看看ImageView中最重要的一个属性:scaleType,这个属性是用来控制咱们的图片怎样缩扩或者移动来匹配咱们和ImageView自己设置的大小。网络

其拥有许多的值,咱们接下来根据代码来看看每一个值所表明的含义:ide

①fitCenter:这个值指的是,当我这张图片比ImageView大的时候,就会按照比例对图片进行缩放,并将图片居中显示。若是这张图片比ImageView小,那么就会根据比例对图片进行扩大,而后将其居中显示,注意:若是图片分辨率不是两个相等的值,例如480*320,那么由于缩放比例不一样,fitCenter设置后,其会根据小的分辨率进行缩小,例如会根据320来进行缩放或者扩大spa

复制代码

  <ImageView 
        android:id="@+id/iamgeView1"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:src="@drawable/dog"
        android:background="#ABCDEF"
        android:scaleType="fitCenter"/>
    
    <ImageView        android:id="@+id/imageView2"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="#FEDCBA"
        android:src="@drawable/ic_launcher"
        android:scaleType="fitCenter"/>

复制代码

咱们看到,这里引用了两张图片,第一张dog图片是比ImageView大的,第二张ic_launcher是比ImageView小的,咱们设置其scaleType后,其显示效果以下:code

咱们看到,由于第一张图片分辨率不是两个相等的数,那么就会留出一些边出来xml

②fitStart、fitEnd属性:这个属性跟fitCenter相似,当图片大小与ImageView不相等时,其会按照比例对图片进行缩小或者放大,其参考的方向是根据分辨率大的那一方,例如480*320,则会参考480那方做为上下,若是是fitStart,则会将图片上边跟ImageView对其,fitEnd则会将图片下边与ImageView对其htm

复制代码

    <ImageView 
        android:id="@+id/iamgeView1"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:src="@drawable/dog"
        android:background="#ABCDEF"
        android:scaleType="fitStart"/>
    
    <ImageView        android:id="@+id/imageView2"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="#FEDCBA"
        android:src="@drawable/ic_launcher"
        android:scaleType="fitStart"/>

复制代码

咱们看到,其会根据480那个分辨率向上对其,若是设置成fitStart,反之,设置成fitEnd,则会向下对其对象

③center:若是设置成center的话,那么图片就会截取中间的那部分显示在ImageView里面,不会对图片进行缩小或者放大

复制代码

    <ImageView 
        android:id="@+id/iamgeView1"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:src="@drawable/dog"
        android:background="#ABCDEF"
        android:scaleType="center"/>
    
    <ImageView        android:id="@+id/imageView2"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="#FEDCBA"
        android:src="@drawable/ic_launcher"
        android:scaleType="center"/>

复制代码

④centerInside:设置这个属性值后,若是图片的大小比ImageView大,那么就根据比例对图片进行缩小并将其居中显示,若是图片比ImageView小,那么则不会对图片进行扩大处理,而是直接对其进行居中显示:

复制代码

    <ImageView 
        android:id="@+id/iamgeView1"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:src="@drawable/dog"
        android:background="#ABCDEF"
        android:scaleType="centerInside"/>
    
    <ImageView        android:id="@+id/imageView2"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="#FEDCBA"
        android:src="@drawable/ic_launcher"
        android:scaleType="centerInside"/>

复制代码

⑤centerCrop:若是图片比ImageView大,那么则会对其进行缩小,可是并不会像fitCenter或者centerInside那样是根据比例缩放,centerCrop设置后,其缩放的时候会将整个ImageView的边都占据满,不会留出空隙,而后再将图片居中显示,若是图片小的话,就会对其进行扩大,并占满ImageView的边框,再居中显示:

复制代码

  <ImageView 
        android:id="@+id/iamgeView1"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:src="@drawable/dog"
        android:background="#ABCDEF"
        android:scaleType="centerCrop"/>
    
    <ImageView        android:id="@+id/imageView2"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="#FEDCBA"
        android:src="@drawable/ic_launcher"
        android:scaleType="centerCrop"/>

复制代码

咱们一样能够在java代码中来设置scaleType这个属性:

ImageView imageView = (ImageView)findViewById(R.id.iamgeView1);imageView.setScaleType(ScaleType.CENTER_CROP);

 

这几个就是咱们经常使用的几个scaleType属性,咱们能够根据须要来设置不一样的属性值来达到图片和ImageView大小匹配的效果

相关文章
相关标签/搜索