ProgressBar01.java:
package com.ProgressBar01;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.ProgressBar;
public class ProgressBar01 extends Activity {
private ProgressBar mProgressBar1;
private ProgressBar mProgressBar2;
private Button mButton01;
protected static final int GUI_STOP_NOTIFIER=0x108;
protected static final int GUI_THREADING_NOTIFIER=0x109;
public int intCounter=0;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置窗口模式,需要显示进度条在标题栏
requestWindowFeature(Window.FEATURE_PROGRESS);
setProgressBarVisibility(true);
setContentView(R.layout.main);
mProgressBar1=(ProgressBar)findViewById(R.id.ProgressBar1);
mProgressBar2=(ProgressBar)findViewById(R.id.ProgressBar2);
mButton01=(Button)findViewById(R.id.Button01);
mProgressBar1.setIndeterminate(false);
mProgressBar2.setIndeterminate(false);
mButton01.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v)
{
//设置ProgressBar为可见状态
mProgressBar1.setVisibility(View.VISIBLE);
mProgressBar2.setVisibility(View.VISIBLE);
//设置ProgressBar的最大值
mProgressBar1.setMax(100);
//设置ProgressBar当前值
mProgressBar1.setProgress(0);
mProgressBar2.setProgress(0);
//通过线程来改变ProgressBar的值
new Thread(new Runnable(){
public void run()
{
for(int i=0;i<10;i++)
{
try
{
intCounter=(i+1)*20;
Thread.sleep(1000);
if(i==4)
{
Message m=new Message();
m.what=ProgressBar01.GUI_STOP_NOTIFIER;
ProgressBar01.this.myMessageHandler.sendMessage(m);
break;
}
else
{
Message m=new Message();
m.what=ProgressBar01.GUI_THREADING_NOTIFIER;
ProgressBar01.this.myMessageHandler.sendMessage(m);
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
}).start();
}
});
}
Handler myMessageHandler=new Handler()
{
public void handleMessage(Message msg)
{
switch(msg.what)
{
//ProgressBar已经是最大值
case ProgressBar01.GUI_STOP_NOTIFIER:
mProgressBar1.setVisibility(View.GONE);
mProgressBar2.setVisibility(View.GONE);
Thread.currentThread().isInterrupted();
break;
case ProgressBar01.GUI_THREADING_NOTIFIER:
if(!Thread.currentThread().isInterrupted())
{
//改变ProgressBar的当前值
mProgressBar1.setProgress(intCounter);
mProgressBar2.setProgress(intCounter);
//设置标题栏中前景的一个进度条进度值
setProgress(intCounter*100);
//设置标题栏中后面的一个进度条进度值
setSecondaryProgress(intCounter*100);
}
break;
}
super.handleMessage(msg);
}
};
}
main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<ProgressBar
android:id="@+id/ProgressBar1"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:visibility="gone"
/>
<ProgressBar
android:id="@+id/ProgressBar2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleLarge"
android:max="100"
android:progress="50"
android:secondaryProgress="70"
android:visibility="gone"
/>
<Button
android:id="@+id/Button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="begin"
/>
</LinearLayout>