package com.example.progressbartest;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.ActionBarActivity;
import android.widget.ProgressBar;
public class MainActivity extends ActionBarActivity {
private int[] data = new int[100];
int hasData = 0;
int status = 0;
ProgressBar bar, bar2;
Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == 0x111) {
bar.setProgress(status);
bar2.setProgress(status);
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bar=(ProgressBar) findViewById(R.id.bar);
bar2=(ProgressBar) findViewById(R.id.bar2);
new Thread()
{
public void run() {
while(status<100){
status=doWork();
mHandler.sendEmptyMessage(0x111);
}
}
}.start();
}
public int doWork(){
data[hasData++]=(int)(Math.random()*100);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return hasData;
}
}
Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == 0x111) {//消息类型,与sendEmptyMessage(0x111)中传输的消息类型0x111是一致的
bar.setProgress(status);//根据随机的数目更新进度条
bar2.setProgress(status);
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bar=(ProgressBar) findViewById(R.id.bar);
bar2=(ProgressBar) findViewById(R.id.bar2);
new Thread()
{
public void run() {
while(status<100){
status=doWork();//产生一百个随机数个数
mHandler.sendEmptyMessage(0x111);//因为在thread中是无法直接更新UI的,必须在UI现场中才能更新,所以通过handler发送消息,该消息由handler的handleMessage接收
}
}
}.start();
}
public int doWork(){
data[hasData++]=(int)(Math.random()*100);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return hasData;
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。