GradView组件可以将手机屏幕划分成很多个格子,每个格子都可以显示一张略缩图。最常见的创建GradeView需要自行建立一个GradView的图片适配器ImageAdapter,让后将这个图片适配器与GradeView进行绑定。至于ImageAdapter就是负责做出每一张图像缩图供GradView使用。这个过程是由Android系统自行调用的,而不是我们用程序代码调用的。
下面是具体的程序解释:
step1:首先在xml文件中新建一个布局文件,我这里是layoutnew.xml
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android=" http://schemas.android.com/apk/res/android">
<GridView android:id="@+id/mygradview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:numColumns="auto_fit"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:columnWidth="80dp"
android:gravity="center"
></GridView>
</FrameLayout>
step2:创建ImageAdapter类(自己定义的类,名字自己取)集成BaseAdapter类,并实现getView(), getCount(), getItem(), getItemID()等方法
package com.example.myalertdialog;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.GridView;
public class ImageAdapter extends BaseAdapter {
private Context context; //定义适配器的上下文
private Integer[] imageArray;
public ImageAdapter(Context context){ //定义构造函数
this.context = context;
}
public void setImageArray(Integer[] imageArray){ //设置资源图片id数组,注意这里不能用int[],必须要用Integer[]
this.imageArray = imageArray;
}
@Override
public int getCount() {
return imageArray.length;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View view, ViewGroup group) {
//负责将指定的图像缩略图放到ImageView中去,然后提供给GirdView使用
ImageView v = null;
if(view == null){
v = new ImageView(context);
v.setLayoutParams(new GridView.LayoutParams(90,90));
v.setPadding(5, 5, 5, 5);
v.setScaleType(ImageView.ScaleType.CENTER);
}
else
v = (ImageView)view;
v.setImageResource(imageArray[position]);
return v;
}
}
step3:主程序代码,创建gridView对象和ImageAdapter对象,并给gridview和imageadapter绑定
package com.example.myalertdialog;
import android.app.Activity;
import android.os.Bundle;
import android.widget.GridView;
public class GradViewActivity extends Activity {
private GridView myGridView = null;
private Integer[] imageArr = {R.drawable.ic_launcher,R.drawable.image1,R.drawable.image2,R.drawable.image3};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.newlayout);
myGridView = (GridView)this.findViewById(R.id.mygradview);
ImageAdapter myImageAdapter = new ImageAdapter(this); //创建自己的图片适配器
myImageAdapter.setImageArray(imageArr);//设置适配器的图片资源
myGridView.setAdapter(myImageAdapter); //设置gridView的适配器
}
}