ImageView的scaleType属性很多,之前一直傻傻分不清楚,这里做下总结,希望对小伙伴们也有所帮助,若有错误处,欢迎指正。
原图:
大图 小图
1.matrix:
matrix:正常绘制图片不做伸缩和位置控制
2.center
center属性对图片不做伸缩处理,只让图片居中显示
3.centerCrop:
centerCrop对图片做等比例伸缩处理,把最小边放大至填充view或者将最大边缩小至填充view,并居中显示
4.fitCenter:
fitCenter:将图片的宽等比例放大或缩小到view的宽,垂直方向上居中显示
5.fitStart:
fitx即fitstart,将图片的宽等比例放大或缩小至view的宽,并显示在view的上方
6.fitEnd:
fity即fitEnd,将图片的宽等比例放大或缩小到view的宽,显示在view的下方
7.fitXY:
fitxy将图片完全显示,不按比例对图片缩放
8.centerInside:
centerinside将图片完全显示在view中,如果图片完全(宽和高)小于view,则居中显示,如果宽或高大于view的款或者高,则按缩小比例最大的值对图片进行缩小,并居中显示图片
布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:visibility="gone"
>
<Button
android:id="@+id/bt_popup"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:onClick="popup"
android:text="popup"/>
</LinearLayout>
<ImageView
android:id="@+id/img_big"
android:layout_width="100dp"
android:layout_height="200dp"
android:layout_gravity="center"
android:background="#000000"
android:scaleType="matrix"
android:src="@mipmap/lin"/>
<ImageView
android:id="@+id/img_small"
android:layout_width="100dp"
android:layout_height="200dp"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:background="#000000"
android:scaleType="matrix"
android:src="@mipmap/linxiao"/>
<Spinner
android:id="@+id/spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/stype_img">
</Spinner>
</LinearLayout>
Spinner布局:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="stype_img">
<item>matrix</item>
<item>center</item>
<item>centerCorp</item>
<item>centerinside</item>
<item>fitCenter</item>
<item>fitX</item>
<item>fitY</item>
<item>fitXY</item>
</string-array>
</resources>
activity:
mSpinner = (Spinner) findViewById(R.id.spinner);
mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> view, View view1, int i, long l) {
switch (i) {
case 0:
img_big.setScaleType(ImageView.ScaleType.MATRIX);
img_small.setScaleType(ImageView.ScaleType.MATRIX);
break;
case 1:
img_big.setScaleType(ImageView.ScaleType.CENTER);
img_small.setScaleType(ImageView.ScaleType.CENTER);
break;
case 2:
img_big.setScaleType(ImageView.ScaleType.CENTER_CROP);
img_small.setScaleType(ImageView.ScaleType.CENTER_CROP);
break;
case 3:
img_big.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
img_small.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
break;
case 4:
img_big.setScaleType(ImageView.ScaleType.FIT_CENTER);
img_small.setScaleType(ImageView.ScaleType.FIT_CENTER);
break;
case 5:
img_big.setScaleType(ImageView.ScaleType.FIT_START);
img_small.setScaleType(ImageView.ScaleType.FIT_START);
break;
case 6:
img_big.setScaleType(ImageView.ScaleType.FIT_END);
img_small.setScaleType(ImageView.ScaleType.FIT_END);
break;
case 7:
img_big.setScaleType(ImageView.ScaleType.FIT_XY);
img_small.setScaleType(ImageView.ScaleType.FIT_XY);
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> view) {
}
});