ProgressBar的常用属性:style,进度条的样式,默认为圆形,用style="?android:attr/progressBarStyleHorizontal"可以将进度条设为条状;android:progress,进度条当前所处进度;android:max,进度条总进度。

用线程实现进度条的注意事项:不能在主线程中执行耗时的操作,只能在子线程中操作;另外,在子线程中不能操作主线程中的控件(ProgressBar除外):

修改后MainActivity.java里的代码如下:

public class MainActivity extends AppCompatActivity {

    private int p=0;//当前进度
private ProgressBar pb_main_download;//进度条
private TextView tv_main_desc;//显示文本的控件
private MyHandler myHandler=new MyHandler();//新写的Handler类 public class MyHandler extends Handler{
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
int code=msg.what;//接受处理码
switch (code){
case 1:
p++;
pb_main_download.setProgress(p);//给进度条的当前进度赋值
tv_main_desc.setText(p+"%");//显示当前进度为多少
break;
}
}
} @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //根据ID找到进度条
pb_main_download=findViewById(R.id.pb_main_download);
//根据ID找到显示文本的控件
tv_main_desc=findViewById(R.id.tv_main_desc);
} //点击Download按钮所调用的方法
public void download(View view) {
if(0==p){//如果当前进度为0
new myThread().start();//开启线程
}
} public class myThread extends Thread{
@Override
public void run() {
super.run();
while(true){
try {
Thread.sleep(100);//使线程休眠0.1秒
} catch (InterruptedException e) {
e.printStackTrace();
} if(p==100){//当前进度等于总进度时退出循环
p=0;
break;
} Message msg=new Message();
msg.what=1;
myHandler.sendMessage(msg);//发送处理码
}
}
}
}

---------------------
作者:前路漫漫,两手空空
来源:CSDN
原文:https://blog.csdn.net/weixin_42687829/article/details/82728791
版权声明:本文为博主原创文章,转载请附上博文链接!

最新文章

  1. 百度地图多点路径加载以及调整页面js
  2. JavaScript语言精粹(读书笔记)
  3. 深入理解 NodeList
  4. iOS常用库之Masonry
  5. 常用的Linux操作
  6. WPF的进度条progressbar,运行时间elapse time和等待spinner的实现
  7. Mysql免安装版脚本
  8. Linux 技巧之 Grub 超实用技巧
  9. 深入理解yield(转)
  10. Loadrunner分布式测试
  11. 在Ubuntu中部署并测试Fabric 1.0 Beta
  12. 转:C++与JAVA语言区别
  13. MVC中一般为什么用IQueryable而不是用IList?
  14. 面试准备——(三)Selenium(1)基础问题及自动化测试
  15. mysql数据库数据的 备份以及还原
  16. MySQL InnoDB Update和Crash Recovery流程
  17. Linux 下统计Apache每分钟的并发数
  18. MyBatis中的if写法
  19. [Android] android.util.Log
  20. BAT for 循环

热门文章

  1. 牛客练习赛32B Xor Path (树形dp)
  2. C# VS2010 windows服务的安装
  3. 《Java知识应用》Java读写DBF文件
  4. Docker 以及 docker-compose 的部署
  5. [译]C# 7系列,Part 2: Async Main 异步Main方法
  6. Mbp,一个用于学习.net core的开发框架
  7. c++-zoo动物园
  8. SAP QA32试图做UD,系统报错-工厂 BTYC中的 QM 基选设置需要维护
  9. android只设置部分控件随着软键盘的出现而腾出空间
  10. Pikachu-XSS