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 25 PHP
IIS6的PHP最佳配置方法
Mar 19 PHP
php Undefined index和Undefined variable的解决方法
Mar 27 PHP
Cannot modify header information错误解决方法
Oct 08 PHP
PHP上传图片进行等比缩放可增加水印功能
Jan 13 PHP
Php中使用Select 查询语句的实例
Feb 19 PHP
PHP获取数组最大值下标的方法
May 12 PHP
Symfony2函数用法实例分析
Mar 18 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
Apr 07 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
Jul 02 PHP
PHP实现的策略模式示例
Mar 20 PHP
PHPStorm2020.1永久激活及下载更新至2020(推荐)
Sep 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
PHP下利用shell后台运行PHP脚本,并获取该脚本的Process ID的代码
2011/09/19 PHP
smarty内部日期函数html_select_date()用法实例分析
2015/07/08 PHP
Smarty3配置及入门语法
2017/02/22 PHP
基于 Swoole 的微信扫码登录功能实现代码
2018/01/15 PHP
PHP使用PDO操作sqlite数据库应用案例
2019/03/07 PHP
jQuery中get和post方法传值测试及注意事项
2014/08/08 Javascript
JavaScript实现带箭头标识的多级下拉菜单效果
2015/08/27 Javascript
jQuery语法小结(超实用)
2015/12/31 Javascript
JS实现页面跳转参数不丢失的方法
2016/11/28 Javascript
vue.js中mint-ui框架的使用方法
2017/05/12 Javascript
ES6/JavaScript使用技巧分享
2017/12/14 Javascript
Vue 路由 过渡动效 数据获取方法
2018/07/31 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
2019/05/18 Javascript
微信小程序实现折线图的示例代码
2019/06/07 Javascript
微信小程序实现watch监听
2020/06/04 Javascript
python利用elaphe制作二维条形码实现代码
2012/05/25 Python
Python中让MySQL查询结果返回字典类型的方法
2014/08/22 Python
Python中的FTP通信模块ftplib的用法整理
2016/07/08 Python
python3使用pyqt5制作一个超简单浏览器的实例
2017/10/19 Python
python读取视频流提取视频帧的两种方法
2020/10/22 Python
解决python3 网络请求路径包含中文的问题
2018/05/10 Python
Django添加feeds功能的示例
2018/08/07 Python
python自动识别文本编码格式代码
2019/12/26 Python
Python如何重新加载模块
2020/07/29 Python
Python通用唯一标识符uuid模块使用案例
2020/09/10 Python
基于python判断字符串括号是否闭合{}[]()
2020/09/21 Python
如何快速一次性卸载所有python包(第三方库)呢
2020/10/20 Python
基于Django快速集成Echarts代码示例
2020/12/01 Python
Python中正则表达式对单个字符,多个字符和匹配边界等使用
2021/01/27 Python
餐饮收银员岗位职责
2014/02/07 职场文书
高中校园广播稿3篇
2014/09/29 职场文书
婚前协议书范本
2014/10/27 职场文书
2014年干部培训工作总结
2014/12/17 职场文书
开天辟地观后感
2015/06/09 职场文书
退休教师追悼词
2015/06/23 职场文书
小学美术教学反思
2016/02/17 职场文书