Android ProgressBar进度条和ProgressDialog进度框的展示DEMO

 更新时间:2013年06月19日 11:13:43   作者:  
本篇文章是对Android中ProgressBar进度条和ProgressDialog进度框的展示DEMO进行了详细的分析介绍,需要的朋友参考下
在做手机开发时,经常碰到一些比较耗时的操作,这个时候进度条就开始派上用场了。
这个demo展示了ProgressBar进度条和ProgressDialog进度框。
一、ProgressDialog进度框,效果如图所示:

代码如下:
复制代码 代码如下:

//进度对话框按钮监听
     class ProssButtonListener implements OnClickListener {
         @Override
         public void onClick(View v) {
             myDialog = ProgressDialog.show(ProgressbarDemo.this, "进度条标题",
                     "进度条内容", true);

             new Thread() {
                 public void run() {
                     try {
                         /* 在这里写上要背景运行的程序片段 */
                         /* 为了明显看见效果,以暂停3秒作为示范 */
                         sleep(3000);
                     } catch (Exception e) {
                         e.printStackTrace();
                     } finally {
                         // 卸载所创建的myDialog对象。
                         myDialog.dismiss();
                     }
                 }
             }.start(); /* 开始运行运行线程 */
         }
     }

二、进度条对话框,这里用两种情况来动态显示进度条刻度
1、handle方法
效果图如下:

代码如下:
复制代码 代码如下:

//进度条handle按钮监听
     class ProssBarHandleButtonListener implements OnClickListener {
         @Override
         public void onClick(View v) {
             progressBarHandle.setVisibility(View.VISIBLE);
             myProssBarhandleText.setVisibility(View.VISIBLE);
             progressBarHandle.setMax(1000);
             new Thread() {
                 public void run() {
                     for(int i=0;i<=1000;){
                     try {
                         /* 在这里写上运行的进度条 */
                         Message msg = new Message();
                         msg.what = 1;
                         msg.getData().putInt("size", i);
                         handler.sendMessage(msg);//handle发送消息
                         /* 为了明显看见效果,以暂停1秒作为示范 */
                         sleep(100);
                         i+=10;
                     } catch (Exception e) {
                         handler.obtainMessage(-1).sendToTarget();
                         e.printStackTrace();
                     } 
                 }
                 }
             }.start(); /* 开始运行运行线程 */
         }
     }

     //handle接收消息
      private Handler handler = new Handler(){

             @Override
             public void handleMessage(Message msg) {           
                 switch (msg.what) {
                 case 1:               
                     progressBarHandle.setProgress(msg.getData().getInt("size"));
                     float num = (float)progressBarHandle.getProgress()/(float)progressBarHandle.getMax();
                     int result = (int)(num*100);
                     System.out.println("progressBarHandle.getProgress()======="+progressBarHandle.getProgress());
                     myProssBarhandleText.setText(result+ "%");
                     if(progressBarHandle.getProgress()==progressBarHandle.getMax()){
                         Toast.makeText(ProgressbarDemo.this, "下载成功", 1).show();
                         progressBarHandle.setVisibility(View.GONE);
                         myProssBarhandleText.setVisibility(View.GONE);
                     }
                     break;

                 case -1:
                     Toast.makeText(ProgressbarDemo.this,"下载失败", 1).show();
                     break;
                 }
             }
         };

2、使用AsyncTask方法,效果图与handle效果一样
具体代码如下:
复制代码 代码如下:

//进度条synctask按钮监听
     class ProssBarSyncButtonListener implements OnClickListener {
         @Override
         public void onClick(View v) {
              new AsyncLoader().execute((Void)null); 
         }
     }

      
      //AsyncTask 任务执行
     class AsyncLoader extends AsyncTask<Void, Integer, Integer> {
         @Override
 //         在doInBackground方法执行前执行
         protected void onPreExecute(){
             progressBarHandle.setVisibility(View.VISIBLE);
             myProssBarhandleText.setVisibility(View.VISIBLE);
             progressBarHandle.setMax(100000);
         }

 //        做具体的耗时操作
         protected Integer doInBackground(Void... params) {
             //这里以1万的进度条刻度来显示
             int totalSize = 100000;
             for (int i = 0; i < 100000; ) {
                 publishProgress(i);  //通过推送消息传递数据给onProgressUpdate方法执行
                 i+=10;
             }
             return totalSize;
         }
 //        在doInBackground方法执行过程中执行
         protected void onProgressUpdate(Integer... progress) {
             progressBarHandle.setProgress(progress[0]); 
             float num = (float)progressBarHandle.getProgress()/(float)progressBarHandle.getMax();
             int result = (int)(num*100);
              myProssBarhandleText.setText(result+ "%");
         }

 //        在doInBackground方法结束后执行
         protected void onPostExecute(Integer result) {
             Toast.makeText(ProgressbarDemo.this, "下载成功,下载了"+result, 1).show();
             myProssBarhandleText.setVisibility(View.GONE);
             progressBarHandle.setVisibility(View.GONE);
         }
     }

点击下载DEMO示例

相关文章

  • PHP将进程作为守护进程的方法

    PHP将进程作为守护进程的方法

    这篇文章主要介绍了PHP将进程作为守护进程的方法,实例分析了php中守护进程的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • 在WordPress中获取数据库字段内容和添加主题设置菜单

    在WordPress中获取数据库字段内容和添加主题设置菜单

    这篇文章主要介绍了在WordPress中获取数据库字段内容和添加主题设置菜单的方法,分别讲解了get_option()函数和add_theme_page()函数的用法,需要的朋友可以参考下
    2016-01-01
  • php密码生成类实例

    php密码生成类实例

    这篇文章主要介绍了php密码生成类,可实现根据要求生成多种格式密码的功能,是一款非常实用的PHP类文件,需要的朋友可以参考下
    2014-09-09
  • php中ltrim()、rtrim()与trim()删除字符空格实例

    php中ltrim()、rtrim()与trim()删除字符空格实例

    这篇文章主要介绍了php中ltrim()、rtrim()与trim()删除字符空格的方法.以实例形式分别讲述了ltrim()、rtrim()与trim()的具体用法,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-11-11
  • PHP INT类型在内存中占字节详解

    PHP INT类型在内存中占字节详解

    在本文里我们给大家分享了关于PHP输出INT类型在内存中占多少个字节的相关知识点,需要的朋友们参考下。
    2019-07-07
  • php多进程并发编程防止出现僵尸进程的方法分析

    php多进程并发编程防止出现僵尸进程的方法分析

    这篇文章主要介绍了php多进程并发编程防止出现僵尸进程的方法,结合具体实例形式总结分析了php多进程并发编程防止出现僵尸进程相关操作技巧与注意事项,需要的朋友可以参考下
    2020-02-02
  • php批量添加数据与批量更新数据的实现方法

    php批量添加数据与批量更新数据的实现方法

    这篇文章主要介绍了php批量添加数据与批量更新数据的实现方法,涉及针对表单的处理与sql语句的灵活使用,非常具有实用价值,需要的朋友可以参考下
    2014-12-12
  • php UBB 解析实现代码

    php UBB 解析实现代码

    今天看thinkphp演示文档看到这个ubb的代码感觉还可以。
    2011-11-11
  • 分析PHP的垃圾回收机制

    分析PHP的垃圾回收机制

    垃圾回收,简称gc。在说这个之前先接触一下内存泄露,大概意思就是申请了一块地儿拉了会儿屎,拉完后不收拾,那么那块儿地就算是糟蹋了,地越用越少,最后一地全是屎。说到底一句,用了记得还。一定程度上说,垃圾回收机制就是用来擦屁股的。
    2021-06-06
  • PHP实现将科学计数法转换为原始数字字符串的方法

    PHP实现将科学计数法转换为原始数字字符串的方法

    这篇文章主要介绍了PHP实现将科学计数法转换为原始数字字符串的方法,通过一个简单的自定义函数使用正则替换实现该功能,是非常实用的技巧,需要的朋友可以参考下
    2014-12-12

最新评论