(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