Android API之ImageView.ScaleType代码演示
为了全面演示ImageView.ScaleType的八种类型即CENTER,CENTER_CROP,CENTER_INSIDE,FIT_CENTER,FIT_START,FIT_END,FIT_XY,MATRIX,我在这里通过一个GridView进行显示,可通过点击每一种类型的ImageButton进行详细查看、比较。
背景图片为一个像素宽度(443px)×高度(500px),大于默认的Android模拟器320×480,这样可以清晰的看出ImageView是否做了比例缩放,及所处位置的差异。
(1)AndroidManifest.xml 添加各种ScaleType的Activity
<activity android:name=".ImageViewScaleTypeDemo1" />
<activity android:name=".ImageViewScaleTypeDemo2" />
<activity android:name=".ImageViewScaleTypeDemo3" />
<activity android:name=".ImageViewScaleTypeDemo4" />
<activity android:name=".ImageViewScaleTypeDemo5" />
<activity android:name=".ImageViewScaleTypeDemo6" />
<activity android:name=".ImageViewScaleTypeDemo7" />
<activity android:name=".ImageViewScaleTypeDemo8" />
(2) res/layout/main.xml GridView主视图布局
<GridView
android:id="@+id/gridView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:numColumns="auto_fit"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:columnwidth="90dp"
android:stretchMode="columnWidth"
android:gravity="center"
/>
(3) res/layout/image.xml ScaleType视图布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
(4) ImageAdapter.java 继承BaseAdapter,并载入GridView的图片资源
public class ImageAdapter extends BaseAdapter
{
// 定义Context
private Context mContext;
// 定义整型数组 即图片资源
private Integer[] mImageIds =
{
R.drawable.center,
R.drawable.centercrop,
R.drawable.centerinside,
R.drawable.fitcenter,
R.drawable.fitstart,
R.drawable.fitend,
R.drawable.fitxy,
R.drawable.matrix,
};
public ImageAdapter(Context c)
{
mContext = c;
}
// 获取图片的个数
public int getCount()
{
return mImageIds.length;
}
// 获取图片在库中的位置
public Object getItem(int position)
{
return position;
}
// 获取图片ID
public long getItemId(int position)
{
return position;
}
public View getView(int position, View convertView, ViewGroup parent)
{
ImageView imageView;
if(convertView == null)
{
// 给ImageView设置资源
imageView = new ImageView(mContext);
// 设置布局 图片显示
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
// 设置显示比例类型
imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
}
else
{
imageView = (ImageView) convertView;
}
imageView.setImageResource(mImageIds[position]);
return imageView;
}
}