xml
java
package com.example.processbar;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ProgressBar;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private Handler handler;//定义一个Handler对象
private ProgressBar progressBar;//定义一个进度条对象
private int mprogress;//记录当前进度
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全局显示
progressBar=findViewById(R.id.processBar);//创建进度条对象引用
handler = new Handler(){//创建handler匿名内部类
@Override
public void handleMessage(@NonNull Message msg) {
if(msg.what==0x111){//接受判断消息码
progressBar.setProgress(mprogress);
}else {
Toast.makeText(MainActivity.this, "goes ok", Toast.LENGTH_SHORT).show();//弹出框
progressBar.setVisibility(View.GONE);//设置不可见
}
//super.handleMessage(msg);
}
};
new Thread(new Runnable() {//线程匿名内部类
@Override
public void run() {//创建run方法
while(true){//死循环
mprogress=doWork();//获取当前进度值
Message m = new Message();//实例化message对象
if(mprogress<100){//当进度条没有满的时候
m.what=0x111;//消息码
handler.sendMessage(m);//发送消息码
}else{
m.what=0x110;//消息码
handler.sendMessage(m);//发送消息码
break;//结束循环,跳出run方法
}
}
}
private int doWork(){//doWork方法,每隔200ms增加一次进度,返回进度值
mprogress+=Math.random()*10;
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
return mprogress;
}
}).start();
}
}