【例6-6】用GridView展示相册示例
准备一组图片,复制到资源drawable目录,GridView可以把一个界面划分成二维的网格,然后加载一批图片,图片被统一进行大小限制和加边框处理。

教学视频
布局文件grid_view.xml的源代码
<?xml version="1.0" encoding="utf-8"?>
<!--【例6-6】用GridView展示相册示例-->
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/grid_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:numColumns="auto_fit"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:columnWidth="120dp"
/>
控制文件GridViewActivity.java的源代码如下:(红色代码与教材略有不同)
package com.example.chap06;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
//【例6-6】用GridView展示相册示例
public class GridViewActivity extends AppCompatActivity
implements AdapterView.OnItemClickListener {
//定义一个数组来引用图片资源
private Integer[] mThumbIds = {R.drawable.grid_view_01,
R.drawable.grid_view_02, R.drawable.grid_view_03,
R.drawable.grid_view_04, R.drawable.grid_view_05,
R.drawable.grid_view_06, R.drawable.grid_view_07,
R.drawable.grid_view_08, R.drawable.grid_view_09,
R.drawable.grid_view_10, R.drawable.grid_view_11,
R.drawable.grid_view_12, R.drawable.grid_view_13,
R.drawable.grid_view_14, R.drawable.grid_view_15,};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.grid_view);
setTitle("GridViewActivity");
GridView gridview = (GridView) findViewById(R.id.grid_view);
gridview.setAdapter(new ImageAdapter(this));
gridview.setOnItemClickListener(this);
}
//如果AdapterView被单击则返回Item的单击事件,实战演练的代码应补充在这里
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Toast.makeText(getApplicationContext(),
"Item Clicked: " + position, Toast.LENGTH_SHORT).show();
}
//新建一个类继承BaseAdapter
class ImageAdapter extends BaseAdapter {
private Context mContext;
public ImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
return mThumbIds.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
//初始化下面的属性
imageView = new ImageView(mContext);
//设置View的高度和宽度,每个图片都会被统一限制大小
imageView.setLayoutParams(new GridView.LayoutParams(300, 300));
//声明图片的中心点,应该和ImageView的中心点一致,并按比例扩大或缩小图片,确保填满ImageView的边框
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
//声明内部图片与控件ImageView的边距
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
//会根据设备分辨率进行图片大小缩放
imageView.setImageResource(mThumbIds[position]);
return imageView;
}
}
}
打开项目配置文件AndroidManifest.xml,配置要启动的Activity类名为 GridViewActivity。

