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 相关文章推荐
第十一节--重载
Nov 16 PHP
配置支持SSI
Nov 25 PHP
How do I change MySQL timezone?
Mar 26 PHP
让PHP开发者事半功倍的十大技巧小结
Apr 20 PHP
PHP生成迅雷、快车、旋风等软件的下载链接代码实例
May 12 PHP
腾讯微博提示missing parameter errorcode 102 错误的解决方法
Dec 22 PHP
php获取数据库中数据的实现方法
Jun 01 PHP
php实现的redis缓存类定义与使用方法示例
Aug 09 PHP
PHP中in_array的隐式转换的解决方法
Mar 06 PHP
PHP 二维array转换json的实例讲解
Aug 21 PHP
详解php协程知识点
Sep 21 PHP
PHP Swoole异步Redis客户端实现方法示例
Oct 24 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 DES加密算法实例分析
2019/09/18 PHP
关于Laravel参数验证的一些疑与惑
2019/11/19 PHP
使用JS操作页面表格,元素的一些技巧
2007/02/02 Javascript
Javascript Global对象
2009/08/13 Javascript
jquery学习总结(超级详细)
2014/09/04 Javascript
浅谈jQuery中对象遍历.eq().first().last().slice()方法
2014/11/26 Javascript
DOM基础教程之使用DOM
2015/01/19 Javascript
javascript将数字转换整数金额大写的方法
2015/01/27 Javascript
JavaScript动态提示输入框输入字数的方法
2015/07/27 Javascript
IE9+已经不对document.createElement向下兼容的解决方法
2015/09/14 Javascript
javascript匀速运动实现方法分析
2016/01/08 Javascript
AngularJS控制器controller正确的通信的方法
2016/01/25 Javascript
JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome
2017/01/05 Javascript
vue的一个分页组件的示例代码
2017/12/25 Javascript
微信小程序scroll-view实现字幕滚动
2018/07/14 Javascript
JavaScript数组基于交换的排序示例【冒泡排序】
2018/07/21 Javascript
layui实现三级联动效果
2019/07/26 Javascript
js实现简单进度条效果
2020/03/25 Javascript
jQuery实现动态加载瀑布流
2020/09/01 jQuery
echarts柱状图背景重叠组合而非并列的实现代码
2020/12/10 Javascript
[07:43]《辉夜杯》公开赛晋级外卡赛战队—TRG训练生活探秘
2015/12/11 DOTA
[01:36:19]Secret vs NB 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python版飞机大战代码分享
2018/11/20 Python
PyCharm鼠标右键不显示Run unittest的解决方法
2018/11/30 Python
解决Python中定时任务线程无法自动退出的问题
2019/02/18 Python
python基础 range的用法解析
2019/08/23 Python
Python使用Selenium实现淘宝抢单的流程分析
2020/06/23 Python
CSS3的新特性介绍
2008/10/31 HTML / CSS
生物技术毕业生自荐信
2013/10/23 职场文书
教师作风建设剖析材料
2014/10/11 职场文书
上课说话检讨书
2015/01/27 职场文书
清明节网上祭英烈寄语2015
2015/03/04 职场文书
2016党员学习作风建设心得体会
2016/01/21 职场文书
Nginx开启Brotli压缩算法实现过程详解
2021/03/31 Servers
Python如何识别银行卡卡号?
2021/06/10 Python
python中pycryto实现数据加密
2022/04/29 Python