第45页
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;
}
};
(6)将步骤(5)中创建的适配器与Gallery关联,并且让中间的图片选中,为了在用户单击某张图片时显示对应的位置,还需要为Gallery添加单击事件监听器,具体代码如下:
gallery.setAdapter(adapter); //将适配器与Gallery关联
gallery.setSelection(imageId.length / 2); //选中中间的图片
gallery.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view,int position, long id) {
Toast.makeText(MainActivity.this,"您选择了第" + String.valueOf(position) + "张图片",
Toast.LENGTH_SHORT).show();
}
});
运行本实例,将显示如图4.10所示的运行结果。
图4.10 应用画廊视图显示图片列表
4.1.8 范例1:显示在标题上的进度条
例4.9 在Eclipse中创建Android项目,名称为4.9,实现在页面载入时,先在标题上显示载入进度条,载入完毕后,显示载入后的4张图片。(实例位置:光盘\TM\sl\4\4.9)
(1)修改新建项目的res\layout目录下的布局文件main.xml,为默认添加的垂直线性布局管理器设置一个android:id属性,关键代码如下:
android:id="@+id/linearlayout1"
(2)在主活动MainActivity中,定义一个用于保存要显示图片id的数组(需要将要显示的图片复制到res\drawable文件夹中)和一个垂直线性布局管理器的对象,关键代码如下:
private int imageId[] = new int[] { R.drawable.img01, R.drawable.img02,
R.drawable.img03, R.drawable.img04 }; //定义并初始化一个保存要显示图片id的数组
private LinearLayout l; //定义一个垂直线性布局管理器的对象
(3)在主活动的onCreate()方法中,首先设置显示水平进度条,然后设置要显示的视图,这里为主布局文件main.xml,接下来再获取布局文件中添加的垂直线性布局管理器,关键代码如下:
requestWindowFeature(Window.FEATURE_PROGRESS); //显示水平进度条
setContentView(R.layout.main);
l = (LinearLayout) findViewById(R.id.linearlayout1); //获取布局文件中添加的垂直线性布局管理器
(4)创建继承自AsyncTask的异步类,并重写onPreExecute()、doInBackground()、onProgressUpdate()和onPostExecute()方法,实现在向页面添加图片时,在标题上显示一个水平进度条,当图片载入完毕后,隐藏进度条并显示图片,具体代码如下:
/**
* 功能:创建异步任务,添加4张图片
*
*/
class MyTack extends AsyncTask {
@Override
protected void onPreExecute () {
setProgressBarVisibility(true); //执行任务前让进度条可见
super.onPreExecute();
}
/*
* 功能:要执行的耗时任务
*/
@Override
protected LinearLayout doInBackground (Void... params) {
LinearLayout ll = new LinearLayout(MainActivity.this); //创建一个水平线性布局管理器
for (int i = 1; i < 5; i++) {
ImageView iv = new ImageView(MainActivity.this); //创建一个ImageView对象
iv.setLayoutParams(new LayoutParams(245, 108));
iv.setImageResource(imageId[i - 1]); //设置要显示的图片
ll.addView(iv); //将ImageView添加到线性布局管理器中
try {
Thread.sleep(10); //为了更好地查看效果,这里让线程休眠10毫秒
} catch (InterruptedException e) {
e.printStackTrace();
}
publishProgress(i); //触发onProgressUpdate(Progress...)方法更新进度
}
return ll;
}
/*
* 功能:更新进度
*/
@Override
protected void onProgressUpdate (Integer... values) {
setProgress(values[0] * 2500); //动态更新最新进度
super.onProgressUpdate(values);
}
/*
* 功能:任务执行后
*/
@Override
protected void onPostExecute (LinearLayout result) {
setProgressBarVisibility(false); //任务执行后隐藏进度条
l.addView(result); //将水平线性布局管理器添加到布局文件中添加的垂直线性布局管理器中