总结android:scaleType的使用

来源:互联网 发布:中国网文在国外知乎 编辑:程序博客网 时间:2024/06/02 01:58

准备两张图片:

小图片:(72*72)

大图片:(600*403)

使用的布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context=".MainActivity">    <ImageView        android:id="@+id/image"        android:layout_width="match_parent"        android:layout_height="match_parent"        /></RelativeLayout>

java文件:

package zy.just.com.scaletypedemo;import android.graphics.BitmapFactory;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.widget.ImageView;public class MainActivity extends AppCompatActivity {    private ImageView image;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        image = (ImageView) findViewById(R.id.image);//        image.setScaleType(ImageView.ScaleType.CENTER); //   image.setScaleType(ImageView.ScaleType.CENTER_INSIDE); //       image.setScaleType(ImageView.ScaleType.CENTER_CROP); //       image.setScaleType(ImageView.ScaleType.FIT_CENTER); image.setScaleType(ImageView.ScaleType.FIT_END); //      image.setScaleType(ImageView.ScaleType.FIT_START);  //     image.setScaleType(ImageView.ScaleType.FIT_XY);//        image.setScaleType(ImageView.ScaleType.MATRIX);        //使用小图片        //image.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.small_picture));        //使用大图片        image.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.big_picture));    }}

android:scaleType设置为MATRIX,其中MATRIX为默认值。

解释:

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

小图片效果图:

大图片效果图:


当android:scaleType设置为CENTER时。

解释:

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

使用小图片的效果:


使用大图片的效果:


当android:scaleType设置为CENTERCROP时。

解释:

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

使用小图片的效果:


使用大图片的效果:


当android:scaleType设置为CENTERINSIDE时。

解释:

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

小图片显示效果:

使用大图片效果:



当android:scaleType设置为FITCENTER时。

解释:

其实是将图片的宽比上imageview的宽。假设值为a1,图片的高比上imageview的高,假设值为a2。如果图片超出imageview,不管是宽度上,还是高度上。就要对图片进行缩小处理,并且居中显示,而且缩小的比例值k的取值为a1a2中较大的一个值,才能完整的将图片缩进到imageview中。如果图片小于imageview,即图片的宽高都要小于Imageview,那么取a1a2中较大的一个值来作为扩大的比例值k。根据这个k值来扩大图片。

小图片效果:

大图片显示效果:

当android:scaleType设置为FITXY时。

解释:

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

小图显示结果:

使用大图片的效果:

当android:scaleType设置为FITSTART时。

解释:

把原图按比例扩大(缩小)到ImageView的宽度(或高度),去最先达到的,显示在ImageView的上部分位置。

小图片显示结果:

使用大图片效果:


当android:scaleType设置为FITEND

把原图按比例扩大(缩小)到ImageView的宽度(或高度),取最先达到的,显示在ImageView的下部分位置。

小图片效果:

使用大图片效果:






0 0