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


Posted in PHP onJune 19, 2013

在做手机开发时,经常碰到一些比较耗时的操作,这个时候进度条就开始派上用场了。
这个demo展示了ProgressBar进度条和ProgressDialog进度框。
一、ProgressDialog进度框,效果如图所示:
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
代码如下:

//进度对话框按钮监听
     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方法
效果图如下:
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
代码如下:
//进度条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 相关文章推荐
非常不错的MySQL优化的8条经验
Mar 24 PHP
php下连接ftp实现文件的上传、下载、删除文件实例代码
Jun 03 PHP
PHP函数spl_autoload_register()用法和__autoload()介绍
Feb 04 PHP
PHP运行环境配置与开发环境的配置(图文教程)
Jun 04 PHP
解析PHP高效率写法(详解原因)
Jun 20 PHP
关于php支持分块与断点续传文件下载功能代码
May 09 PHP
PHP图片处理之图片旋转和图片翻转实例
Nov 19 PHP
php使用Jpgraph绘制柱形图的方法
Jun 10 PHP
php微信浏览器分享设置以及回调详解
Aug 01 PHP
thinkPHP中钩子的两种配置调用方法详解
Nov 11 PHP
php redis实现文章发布系统(用户投票系统)
Mar 04 PHP
php-msf源码详解
Dec 25 PHP
具有时效性的php加密解密函数代码
Jun 19 #PHP
一个简单的php加密解密函数(动态加密)
Jun 19 #PHP
慎用preg_replace危险的/e修饰符(一句话后门常用)
Jun 19 #PHP
解析二进制流接口应用实例 pack、unpack、ord 函数使用方法
Jun 18 #PHP
深入PHP数据加密详解
Jun 18 #PHP
使用array mutisort 实现按某字段对数据排序
Jun 18 #PHP
php多个字符串替换成同一个的解决方法
Jun 18 #PHP
You might like
一个从别的网站抓取信息的例子(域名查询)
2006/10/09 PHP
用PHP实现的随机广告显示代码
2007/06/14 PHP
php如何解决无法上传大于8M的文件问题
2014/03/10 PHP
PHP单例模式详细介绍
2015/07/01 PHP
php利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
php nginx 实时输出的简单实现方法
2018/01/21 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
[全兼容哦]--实用、简洁、炫酷的页面转入效果loing
2007/05/07 Javascript
javascript Math.random()随机数函数
2009/11/04 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
2013/11/08 Javascript
javascript自定义的addClass()方法
2014/05/28 Javascript
jQuery中eq()方法用法实例
2015/01/05 Javascript
js实时获取窗口大小变化的实例代码
2016/11/18 Javascript
微信小程序  wx.request合法域名配置详解
2016/11/23 Javascript
JS实现获取来自百度,Google,soso,sogou关键词的方法
2016/12/21 Javascript
React-Native 组件之 Modal的使用详解
2017/08/08 Javascript
浅谈Vue.js中ref ($refs)用法举例总结
2017/12/19 Javascript
Node.js 利用cheerio制作简单的网页爬虫示例
2018/03/01 Javascript
layui radio性别单选框赋值方法
2018/08/15 Javascript
javascript触发模拟鼠标点击事件
2019/06/26 Javascript
Vue 自定义标签的src属性不能使用相对路径的解决
2019/09/17 Javascript
Python使用py2exe打包程序介绍
2014/11/20 Python
解决python nohup linux 后台运行输出的问题
2018/05/11 Python
python 返回列表中某个值的索引方法
2018/11/07 Python
python实现几种归一化方法(Normalization Method)
2019/07/31 Python
基于Python实现视频的人脸融合功能
2020/06/12 Python
大专学生推荐信范文
2013/11/19 职场文书
学院书画协会部门岗位职责
2013/12/01 职场文书
安全生产网格化管理实施方案
2014/03/01 职场文书
爱情寄语大全
2014/04/09 职场文书
委托书的格式
2014/08/01 职场文书
个人授权委托书范本
2014/09/14 职场文书
干部作风建设年活动剖析材料
2014/10/23 职场文书
2015年少先队活动总结
2015/03/25 职场文书
《夹竹桃》教学反思
2016/02/23 职场文书
Python中的 Set 与 dict
2022/03/13 Python