Android中的常用控件之进度条(ProgressBar)

Posted derekhan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
版权声明:本文为博主原创文章,转载请附上博文链接!

以上是关于Android中的常用控件之进度条(ProgressBar)的主要内容,如果未能解决你的问题,请参考以下文章

控件ProgressBar(进度条)

Android控件第4类——ProgressBar

Android学习—— Android高级控件

Xamarin。 WebView Progres

Android 圆形进度条控件

iOS 简易环形进度条