您的位置:首页 > 移动开发 > Android开发

Android中显示在标题上的进度条

2014-04-18 11:02 423 查看
今天我们来学习一下Android中显示在Activity标题上的进度条。在这个例子当中我们还能够学习到很多关于AsyncTask的知识。

(1)准备用于显示到界面上的四张图片img01,img02,img03,img04

(2)在Activity的布局文件activity_main.xml中只定义一个线性布局LinearLayout,并为其设置一个id,代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/main_layout">

</LinearLayout>


(3)Java代码部分,通过requestWindowFeature(Window.FEATURE_PROGRESS);语句设置Activity标题栏为有进度条风格,然后实例化并启动一个MyTask对象,代码如下:

public class MainActivity extends Activity {

//图片id数组
private int[] imageIds = { R.drawable.img01, R.drawable.img02,
R.drawable.img03, R.drawable.img04 };

private LinearLayout mainLayout;

/**
* Activity的入口方法
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置标题栏有进度条
requestWindowFeature(Window.FEATURE_PROGRESS);

setContentView(R.layout.activity_main);
mainLayout = (LinearLayout)findViewById(R.id.main_layout);

//实例化MyTask并开始执行
new MyTask().execute();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
/**
* 自定义继承AsyncTask的异步类MyTask
*/
class MyTask extends AsyncTask<Void, Integer, LinearLayout>{

/**
* 在doInBackground()方法之前执行的方法
*/
@Override
protected void onPreExecute() {
super.onPreExecute();
//设置标题栏的进度条可见
setProgressBarVisibility(true);
}

/**
* 后台执行的耗时操作
*/
@Override
protected LinearLayout doInBackground(Void... params) {
LinearLayout ll = new LinearLayout(MainActivity.this);
ll.setOrientation(LinearLayout.VERTICAL);
ll.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

for(int i=1; i<5; i++){
ImageView iv = new ImageView(MainActivity.this);
iv.setLayoutParams(new LayoutParams(200, 100));
iv.setImageResource(imageIds[i-1]);

ll.addView(iv);

new Thread(){
public void run() {
try {
//休眠20毫秒
Thread.sleep(20);
} catch (Exception e) {
e.printStackTrace();
}

};
}.start();

//要求更新进度条,会引起调用onProgressUpdate()方法
publishProgress(i);
}

return ll;
}

/**
* 更新进度条
*/
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
//参数值为0-10000,所以要乘以2500,values[0]取值分别是1,2,3,4
setProgress(values[0] * 2500);
}

/**
* 后台操作执行完毕后所要执行的方法
*/
@Override
protected void onPostExecute(LinearLayout result) {
super.onPostExecute(result);

mainLayout.addView(result);
}

}
}
右键运行android project,效果如下:



进度条执行完毕后,界面会显示四张图片。

最后附上源码下载地址:

Android中显示在标题栏上的进度条实现
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: