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. Android中的控件
  2. Android:控件Spinner实现下拉列表
  3. Android利用已有控件实现自定义控件
  4. [Android] AutoCompleteTextView:自动完成输入内容的控件
  5. 【Android】MapView和其它控件一起显示
  6. android 使用代码方式创建自定义progressBar——自定义控件学习(

随机推荐

  1. Android中ListView的性能问题
  2. Android Launcher 设置壁纸
  3. 成为Android高手必须掌握的28大项内容和1
  4. Android APK 签名比对,防止软件被破解使用
  5. Android开发笔记(四十)组件通讯工具Intent
  6. Android BitmapShader 实战 实现圆形、圆
  7. 默认墨迹天气 下雪效果
  8. Android Picasso Dropbox:如何将图像加载
  9. android MediaScanner 扫出来的ID3 MP3文
  10. osmdroid 6.0.1基础测试