进度条的使用

ProgressDialog属性

setProgressStyle:   设置进度条风格,风格为圆形,旋转的; 
setTitlt:        设置ProgressDialog 标题;
setMessage:        设置ProgressDialog提示信息;
setIcon:       设置ProgressDialog标题图标;
setIndeterminate:    设置ProgressDialog 的进度条是否不明确;
setCancelable:         设置ProgressDialog 是否可以按返回键取消;
setButton:              设置ProgressDialog 的一个Button(需要监听Button事件); 
show:                     显示ProgressDialog。


strings.xml文件

<?xml version="1.0" encoding="utf-8"?>
<resources>

<string name="hello">Hello World, ProgressBarActivity!</string>
<string name="app_name">ProgressBar</string>
<string name="ok">确定</string>
<string name="title">音乐播放</string>
</resources>

main.xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<Button
android:id="@+id/Button01 "
android:text="@string/ok"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>

</LinearLayout>

ProgressBarActivity.java

View Code
package com.bn;

import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class ProgressBarActivity extends Activity {
/** Called when the activity is first created. */
private final int PROGRESSBAR_DIALOG = 0;
private final int INCR = 0;
private ProgressDialog pd;
private Handler hd;
private Button bu;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bu = (Button)findViewById(R.id.Button01);
bu.setOnClickListener(new OnClickListener(){

public void onClick(View arg0) {
// TODO Auto-generated method stub
showDialog(PROGRESSBAR_DIALOG);
}});

hd = new Handler(){
public void handleMessage(Message msg){
super.handleMessage(msg);
switch (msg.what){
case INCR:
pd.incrementProgressBy(1); //收到INCR消息则进度条加1
if (pd.getProgress() >= 100){ //判断进度条是否>=100
pd.dismiss();
}
break;
}
}
};
}

public ProgressDialog onCreateDialog(int id){
switch (id){
case PROGRESSBAR_DIALOG:
pd = new ProgressDialog(this);
pd.setMax(100);
pd.setTitle(R.string.title);
// 设置进度条风格,风格为长度形的
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd.setCancelable(true);
break;
}
return pd;
}
public void onPrepareDialog(int id, Dialog dialog){
switch (id){
case PROGRESSBAR_DIALOG :
pd.incrementProgressBy(-pd.getProgress());

new Thread(){ //建立新进程让进度条循环加1
public void run(){
while (true){
hd.sendEmptyMessage(INCR); //发送消息INCR让进度加1
if (pd.getProgress() >= 100){ //进度条满则跳出循环
break;
}
try{
Thread.sleep(40);
}
catch(Exception e){
e.printStackTrace( );
}
}
}
}.start();
break;
}
}
}






posted @ 2012-03-20 15:38  天已界  阅读(362)  评论(0编辑  收藏  举报