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不用内置函数对数组排序的两个算法代码
Feb 08 PHP
php HandlerSocket的使用
May 02 PHP
php在服务器执行exec命令失败的解决方法
Mar 03 PHP
分享8个最佳的代码片段在线测试网站
Jun 29 PHP
测试PHP连接MYSQL成功与否的代码
Aug 16 PHP
smarty内置函数section的用法
Jan 22 PHP
PHP列出MySQL中所有数据库的方法
Mar 12 PHP
php中删除、清空session的方式总结
Oct 09 PHP
PHP安装threads多线程扩展基础教程
Nov 17 PHP
thinkphp5.0整合phpsocketio完整攻略(绕坑)
Oct 12 PHP
thinkphp3.2框架中where条件查询用法总结
Aug 13 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
Nov 14 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 curl常见错误:SSL错误、bool(false)
2011/12/28 PHP
php中出现空白页的原因及解决方法汇总
2014/07/08 PHP
9段PHP实用功能的代码推荐
2014/10/14 PHP
php数组去除空值函数分享
2015/02/02 PHP
简单谈谈php中的unicode和utf8编码
2015/06/10 PHP
如何解决PHP无法实现多线程的问题
2015/09/25 PHP
验证token、回复图文\文本、推送消息的实用微信类php代码
2016/06/28 PHP
php实现的二叉树遍历算法示例
2017/06/15 PHP
修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
2017/08/01 PHP
PHP实现防止表单重复提交功能【基于token验证】
2018/05/24 PHP
js预载入和JavaScript Image()对象使用介绍
2011/08/28 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
2013/12/04 Javascript
基于javascript的JSON格式页面展示美化方法
2014/07/02 Javascript
微信小程序之MaterialDesign--input组件详解
2017/02/15 Javascript
node文件批量重命名的方法示例
2017/10/23 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
js实现mp3录音通过websocket实时传送+简易波形图效果
2020/06/12 Javascript
在Python中使用PIL模块对图片进行高斯模糊处理的教程
2015/05/05 Python
Python利用matplotlib生成图片背景及图例透明的效果
2017/04/27 Python
Python简单实现socket信息发送与监听功能示例
2018/01/03 Python
Python 错误和异常代码详解
2018/01/29 Python
Python实现在某个数组中查找一个值的算法示例
2018/06/27 Python
Python基于多线程操作数据库相关问题分析
2018/07/11 Python
Python面向对象之继承和组合用法实例分析
2018/08/27 Python
python 实现dict转json并保存文件
2019/12/05 Python
pycharm如何实现跨目录调用文件
2020/02/28 Python
css3实现3d旋转动画特效
2015/03/10 HTML / CSS
HTML5 progress和meter控件_动力节点Java学院整理
2017/07/06 HTML / CSS
美国领先的汽车轮胎和轮毂供应商:TireBuyer
2016/07/21 全球购物
BLACKMORES澳洲官网:澳大利亚排名第一的保健品牌
2018/09/27 全球购物
生产部岗位职责范文
2014/02/07 职场文书
工厂车间标语
2014/06/19 职场文书
工作失职检讨书(精华篇)
2014/10/15 职场文书
学校法制宣传日活动总结
2014/11/01 职场文书
《童年》读后感(三篇)
2019/08/27 职场文书
写给消防战士们的一封慰问信
2019/10/07 职场文书