Android中的常用控件之進度條(ProgressBar)


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
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM