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 相关文章推荐
用PHP制作静态网站的模板框架(三)
Oct 09 PHP
图片存储与浏览一例(Linux+Apache+PHP+MySQL)
Oct 09 PHP
初品cakephp 入门基础
Feb 16 PHP
php教程 插件机制在PHP中实现方案
Nov 02 PHP
基于xcache的配置与使用详解
Jun 18 PHP
php实现把url转换迅雷thunder资源下载地址的方法
Nov 07 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
Jan 22 PHP
PHP实现的数独求解问题示例
Apr 18 PHP
ThinkPHP实现生成和校验验证码功能
Apr 28 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
Nov 20 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
Mar 21 PHP
php use和include区别总结
Oct 13 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
用PHP编程语言开发动态WAP页面
2006/10/09 PHP
一道求$b相对于$a的相对路径的php代码
2010/08/08 PHP
php Hex RGB颜色值互换的使用
2013/05/10 PHP
PHP获取mysql数据表的字段名称和详细信息的方法
2014/09/27 PHP
根据鼠标的位置动态的控制层的位置
2009/11/24 Javascript
jquery 事件对象属性小结
2010/04/27 Javascript
js判断一个元素是否为另一个元素的子元素的代码
2012/03/21 Javascript
JavaScript里实用的原生API汇总
2015/05/14 Javascript
JQuery实现的图文自动轮播效果插件
2015/06/19 Javascript
实例讲解避免javascript冲突的方法
2016/01/03 Javascript
JS实现随页面滚动显示/隐藏窗口固定位置元素
2016/02/26 Javascript
使用getBoundingClientRect方法实现简洁的sticky组件的方法
2016/03/22 Javascript
JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)
2017/01/06 Javascript
JavaScript中的子窗口与父窗口的互相调用问题
2017/02/08 Javascript
用户管理的设计_jquery的ajax实现二级联动效果
2017/07/13 jQuery
webpack多入口多出口的实现方法
2018/08/17 Javascript
jQuery事件多次绑定与解绑问题实例分析
2019/02/19 jQuery
小程序实现悬浮搜索框
2019/07/12 Javascript
javascript面向对象三大特征之封装实例详解
2019/07/24 Javascript
浅谈vue 组件中的setInterval方法和window的不同
2020/07/30 Javascript
在vue中使用image-webpack-loader实例
2020/11/12 Javascript
[39:53]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.19
2020/11/19 DOTA
python在windows下创建隐藏窗口子进程的方法
2015/06/04 Python
python中子类调用父类函数的方法示例
2017/08/18 Python
python函数与方法的区别总结
2019/06/23 Python
flask/django 动态查询表结构相同表名不同数据的Model实现方法
2019/08/29 Python
python将下载到本地m3u8视频合成MP4的代码详解
2020/11/24 Python
澳大利亚家用电器在线商店:Billy Guyatts
2020/05/05 全球购物
Java面试题:请问一下代码输出是什么
2015/05/27 面试题
仓库管理制度
2014/01/21 职场文书
原材料检验岗位职责
2014/03/15 职场文书
人力资源主管的岗位职责
2014/03/15 职场文书
党风廉政承诺书
2014/03/27 职场文书
三年级评语大全
2014/04/23 职场文书
地方课程教学计划
2015/01/19 职场文书
倡议书的格式写法
2015/04/28 职场文书