乐读文学

Android从入门到精通

乐读文学 > 科普学习 > Android从入门到精通

第68页

书籍名:《Android从入门到精通》    作者:明日科技




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();  //获取传递过来的数据包