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;

    }

 

}

相关推荐