第68页
android:verticalSpacing="3px"
android:numColumns="4"
/>
(2)在主活动MainActivity中,定义一个用于保存要显示图片id的数组(需要将要显示的图片复制到res\drawable文件夹中),关键代码如下:
public int[] imageId = new int[] { R.drawable.img01, R.drawable.img02,
R.drawable.img03, R.drawable.img04, R.drawable.img05,
R.drawable.img06, R.drawable.img07, R.drawable.img08,
R.drawable.img09, R.drawable.img10, R.drawable.img11,
R.drawable.img12}; //定义并初始化保存图片id的数组
(3)在主活动MainActivity的onCreate()方法中,首先获取布局文件中添加的GridView组件,然后创建BaseAdapter类的对象,并重写其中的getView()、getItemId()、getItem()和getCount()方法,其中最主要的是重写getView()方法来设置显示图片的格式,最后将该适配器与GridView关联,并且为了在用户单击某张图片时启动新的Activity显示图片的原图,还需要为GridView添加单击事件监听器,在重写的onItemClick()方法中,将选择图片的id保存到Bundle中,并启动一个新的Activity显示对应的图片原图。关键代码如下:
GridView gridview = (GridView) findViewById(R.id.gridView1); //获取GridView组件
BaseAdapter adapter = new BaseAdapter() {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageview; //声明ImageView的对象
if (convertView == null) {
imageview = new ImageView(MainActivity.this); //实例化ImageView的对象
/************* 设置图像的宽度和高度 ******************/
imageview.setAdjustViewBounds(true);
imageview.setMaxWidth(180);
imageview.setMaxHeight(135);
/**************************************************/
imageview.setPadding(5, 5, 5, 5); //设置ImageView的内边距
} else {
imageview = (ImageView) convertView;
}
imageview.setImageResource(imageId[position]); //为ImageView设置要显示的图片
return imageview; //返回ImageView
}
/*
* 功能:获得当前选项的id
*/
@Override
public long getItemId(int position) {
return position;
}
/*
* 功能:获得当前选项
*/
@Override
public Object getItem(int position) {
return position;
}
/*
* 获得数量
*/
@Override
public int getCount() {
return imageId.length;
}
};
gridview.setAdapter(adapter); //将适配器与GridView关联
gridview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
Intent intent = new Intent(MainActivity.this, BigActivity.class);
Bundle bundle = new Bundle(); //创建并实例化一个Bundle对象
bundle.putInt("imgId", imageId[position]); //保存图片id
intent.putExtras(bundle); //将Bundle对象添加到intent对象中
startActivity(intent); //启动新的Activity
}
});
说明: 在上面的代码中,加粗的代码用于创建Intent对象,并将选择的图片id通过Bundle对象添加到该Intent对象中。
(4)在res\layout目录中,创建一个名为big.xml的布局文件,在该布局文件中采用垂直线性布局,并且添加一个用于显示图片原图的ImageView和返回按钮Button。具体代码请参见光盘。
(5)在com.mingrisoft包中,创建一个继承Activity类的BigActivity,并且重写onCreate()方法。在重写的onCreate()方法中,首先设置该Activity使用布局文件big.xml中定义的布局,然后获取Intent对象以及传递的数据包,再获取布局文件中添加的ImageView组件,并将传递过来的图片id作为该组件的图片源显示,最后获取“返回”按钮,并为其添加单击事件监听器,在重写的onClick()方法中,应用finish()方法关闭当前Activity。关键代码如下:
public class BigActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.big); //设置使用的布局文件
Intent intent=getIntent(); //获取Intent对象
Bundle bundle=intent.getExtras(); //获取传递过来的数据包