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实现与ASP Banner组件相似的类
Oct 09 PHP
Linux Apache PHP Oracle 安装配置(具体操作步骤)
Jun 17 PHP
php之CodeIgniter学习笔记
Jun 17 PHP
ThinkPHP中的常用查询语言汇总
Aug 22 PHP
php将HTML表格每行每列转为数组实现采集表格数据的方法
Apr 03 PHP
PHP中的常见魔术方法功能作用及用法实例
Jul 01 PHP
discuz图片顺序混乱解决方案
Jul 29 PHP
纯php生成随机密码
Oct 30 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
Nov 25 PHP
学习thinkphp5.0验证类使用方法
Nov 16 PHP
Yii2.0框架behaviors方法使用实例分析
Sep 30 PHP
PHP单元测试配置与使用方法详解
Dec 27 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
Extended CHM PHP 语法手册之 DIY
2006/10/09 PHP
深入解析php中的foreach函数
2013/08/31 PHP
轻松掌握php设计模式之访问者模式
2016/09/23 PHP
php根据用户名和手机号查询是否存在手机号码
2017/02/16 PHP
详解Laravel设置多态关系模型别名的方式
2019/10/17 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
2020/06/03 PHP
JavaScript window.location对象
2014/11/14 Javascript
微信小程序 用户数据解密详细介绍
2017/01/09 Javascript
实现一个简单的vue无限加载指令方法
2017/01/10 Javascript
js时间查询插件使用详解
2017/04/07 Javascript
Js实现中国公民身份证号码有效性验证实例代码
2017/05/03 Javascript
深入理解JavaScript 参数按值传递
2017/05/24 Javascript
详细讲解vue2+vuex+axios
2017/05/27 Javascript
Angular项目从新建、打包到nginx部署全过程记录
2017/12/09 Javascript
node实现分片下载的示例代码
2018/10/17 Javascript
微信小程序数据统计和错误统计的实现方法
2019/06/26 Javascript
微信小程序实现分享商品海报功能
2019/09/30 Javascript
Vue的data、computed、watch源码浅谈
2020/04/04 Javascript
微信小程序实现购物车功能
2020/11/18 Javascript
python查看微信好友是否删除自己
2016/12/19 Python
Python中类型检查的详细介绍
2017/02/13 Python
Python常用算法学习基础教程
2017/04/13 Python
PyQt5打开文件对话框QFileDialog实例代码
2018/02/07 Python
python写入并获取剪切板内容的实例
2018/05/31 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
Python中函数的基本定义与调用及内置函数详解
2019/05/13 Python
python不使用for计算两组、多个矩形两两间的iou方式
2020/01/18 Python
浅谈Python中threading join和setDaemon用法及区别说明
2020/05/02 Python
python爬虫使用scrapy注意事项
2020/11/23 Python
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
银行营业厅大堂经理岗位职责
2014/01/06 职场文书
应用英语专业自荐信
2014/01/26 职场文书
先进集体申报材料
2014/12/25 职场文书
2015年党员创先争优承诺书
2015/01/22 职场文书
使用HttpSessionListener监听器实战
2022/03/17 Java/Android
Nginx配置根据url参数重定向
2022/04/11 Servers