在做项目时经常会用到进度条,下面写了个进度条例子
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">
<ProgressBar
android:id="@+id/pro"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="@android:style/Widget.ProgressBar.Horizontal"
>
</ProgressBar>
<TextView
android:id = "@+id/tv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="progress"
>
</TextView>
</LinearLayout>
java代码
package com.test.ui;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.TextView;
public class ProgressBarAc extends Activity {
static int progress;
ProgressBar pro;
TextView tv ;
int prostatus = 0;
Handler hand = new Handler();
/* (non-Javadoc)
* @see android.app.Activity#onCreate(android.os.Bundle)
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.pro);
pro = (ProgressBar)findViewById(R.id.pro);
tv = (TextView)findViewById(R.id.tv);
pro.setMax(100);
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while(prostatus<100){
prostatus = dowork();
hand.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
pro.setProgress(prostatus);
tv.setText(prostatus+"");
}
});
}
hand.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
pro.setVisibility(View.GONE);
}
});
}
//do some work
private int dowork(){
try {
// tv.setText(prostatus);
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return ++progress;
}
}).start();
}
}
在一个线程当中,run方法中主要处理进度条的显示,与文本显示,进度值改变在线程当中又创建了一个新方法,主要处理进度值变化。
上面例子显示为
另外我们可以改变进度条的样式,样式表如下
android 进度条的样式
例1:(默认样式(中等圆形))
Xml代码
<ProgressBar
android:id="@+id/progressBar1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
例2:(超大圆形)
Xml代码
<ProgressBar
android:id="@+id/progressBar2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleLarge"
/>
例3:(小号圆形)
Xml代码
<ProgressBar
android:id="@+id/progressBar3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleSmall"
/>
例4:(标题小号圆形)
Xml代码
<ProgressBar
android:id="@+id/progressBar4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleSmallTitle"
/>
例4-在标题中使用小号圆形的使用代码:
Java代码
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置标题不确定性进度条风格
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.progress_bars);
//显示标题不确定性进度条
setProgressBarIndeterminateVisibility(true);
//关闭标题不确定性进度条
//setProgressBarIndeterminateVisibility(false);
}
例5:(长方形进度条)
Xml代码
<ProgressBar
android:id="@+id/progressBar5"
android:layout_width="200dp"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleHorizontal"
android:max="100"
android:progress="50"
android:secondaryProgress="70"
/>
android:max="100" 最大进度值100
android:progress="50" 当前初始化进度值50
android:secondaryProgress="70" 当前初始化第2进度值70
例5-在标题中使用长方形进度条的代码:
Java代码
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置标题进度条风格
requestWindowFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.progress_bars);
//显示标题进度
setProgressBarVisibility(true);
//设置标题当前进度值为5000(标题进度最大值默认为10000)
setProgress(5000);
//关闭标题进度
//setProgressBarVisibility(false);
}
例6:(进度对话框-圆形进度条)
Java代码
ProgressDialog dialog = new ProgressDialog(this);
//设置进度条风格,风格为圆形,旋转的
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
//设置ProgressDialog 标题
dialog.setTitle("进度对话框");
//设置ProgressDialog 提示信息
dialog.setMessage("圆形进度条");
//设置ProgressDialog 标题图标
dialog.setIcon(android.R.drawable.ic_dialog_map);
//设置ProgressDialog 的一个Button
dialog.setButton("确定", new ProgressDialog.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
//设置ProgressDialog 的进度条是否不明确
dialog.setIndeterminate(false);
//设置ProgressDialog 是否可以按退回按键取消
dialog.setCancelable(true);
//显示
dialog.show();
例7:(进度对话框-长方形进度条)
Java代码
ProgressDialog dialog = new ProgressDialog(this);
//设置进度条风格,风格为圆形,旋转的
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//设置ProgressDialog 标题
dialog.setTitle("进度对话框");
//设置ProgressDialog 提示信息
dialog.setMessage("长方形进度条");
//设置ProgressDialog 标题图标
dialog.setIcon(android.R.drawable.ic_dialog_alert);
//设置ProgressDialog的最大进度
dialog.setMax(100);
//设置ProgressDialog 的一个Button
dialog.setButton("确定", new ProgressDialog.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
//设置ProgressDialog 是否可以按退回按键取消
dialog.setCancelable(true);
//显示
dialog.show();
//设置ProgressDialog的当前进度
dialog.setProgress(50);