万书网 > 文学作品 > Android从入门到精通 > 第62页

第62页



(2)打开默认创建的主活动MainActivity,在onCreate()方法中,获取“选择头像”按钮,并为其添加单击事件监听器,在重写的onClick()方法中,创建一个要启动的Activity对应的Intent对象,并应用startActivityForResult()方法启动指定的Activity并等待返回结果,具体代码如下:

Button  button=(Button)findViewById(R.id.button1);  //获取“选择头像”按钮



button.setOnClickListener(new  OnClickListener()  {



@Override



public  void  onClick(View  v)  {



Intent  intent=new  Intent(MainActivity.this,HeadActivity.class);



startActivityForResult(intent,  0x11);  //启动指定的Activity



}



});

(3)在res\layout目录中,创建一个名为head.xml的布局文件,在该布局文件中采用垂直线性布局管理器,并且添加一个GridView组件,用于显示可选择的头像列表,关键代码如下:




android:layout_height="match_parent"



android:layout_width="match_parent"



android:layout_marginTop="10px"



android:horizontalSpacing="3px"



android:verticalSpacing="3px"



android:numColumns="4"



/>

(4)在com.mingrisoft包中,创建一个继承Activity类的HeadActivity,并且重写onCreate()方法。然后定义一个保存要显示头像id的一维数组,关键代码如下:

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



};  //定义并初始化保存头像id的数组

(5)在重写的onCreate()方法中,首先设置该Activity使用布局文件head.xml中定义的布局,然后获取GridView组件,并创建一个与之关联的BaseAdapter适配器,关键代码如下:

setContentView(R.layout.head);  //设置该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(HeadActivity.this);  //实例化ImageView的对象



/*************设置图像的宽度和高度******************/



imageview.setAdjustViewBounds(true);



imageview.setMaxWidth(158);



imageview.setMaxHeight(150);



/**************************************************/



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关联

(6)为GridView添加OnItemClickListener事件监听器,在重写的onItemClick()方法中,首先获取Intent对象,然后创建一个要传递的数据包,并将选中的头像id保存到该数据包中,再将要传递的数据包保存到intent中,并设置返回的结果码及返回的Activity,最后关闭当前Activity。关键代码如下:

gridview.setOnItemClickListener(new  OnItemClickListener()  {



@Override



public  void  onItemClick(AdapterView  parent,  View  view,  int  position,long  id)  {



Intent  intent=getIntent();  //获取Intent对象



Bundle  bundle=new  Bundle();  //实例化传递的数据包



bundle.putInt("imageId",imageId[position]  );  //显示选中的图片



intent.putExtras(bundle);  //将数据包保存到intent中



setResult(0x11,intent);  //设置返回的结果码,并返回调用该Activity的Activity