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实现MySQL更新记录的代码
Jun 07 PHP
php的list()的一步操作给一组变量进行赋值的使用
May 18 PHP
将word转化为swf 如同百度文库般阅读实现思路及代码
Aug 09 PHP
php中\r \r\n \t的区别示例介绍
Feb 08 PHP
php实现的支持imagemagick及gd库两种处理的缩略图生成类
Sep 23 PHP
php视频拍照上传头像功能实现代码分享
Oct 08 PHP
PHP基于单例模式实现的mysql类
Jan 09 PHP
PHP与服务器文件系统的简单交互
Oct 21 PHP
PHP读取并输出XML文件数据的简单实现方法
Dec 22 PHP
php实现mysql连接池效果实现代码
Jan 25 PHP
laravel实现简单用户权限的示例代码
May 28 PHP
Laravel 5+ .env环境配置文件详解
Apr 06 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
重量级动漫纷纷停播!唯独OVERLORD第四季正在英魂之刃继续更新
2020/05/06 日漫
十天学会php之第五天
2006/10/09 PHP
php和mysql中uft-8中文编码乱码的几种解决办法
2012/04/19 PHP
javascript 面向对象编程 聊聊对象的事
2009/09/17 Javascript
Jquey拖拽控件Draggable使用方法(asp.net环境)
2010/09/28 Javascript
JavaScript基础知识之数据类型
2012/08/06 Javascript
javascript 操作符(~、&amp;、|、^、)使用案例
2014/12/31 Javascript
JS实现鼠标滑过折叠与展开菜单效果代码
2015/09/06 Javascript
js鼠标点击图片切换效果实现代码
2015/11/19 Javascript
JS中的eval 为什么加括号
2016/04/13 Javascript
Javascript中的数组常用方法解析
2016/06/17 Javascript
JavaScript实现刷新不重记的倒计时
2016/08/10 Javascript
JavaScript String(字符串)对象的简单实例(推荐)
2016/08/31 Javascript
vue中v-model的应用及使用详解
2018/06/27 Javascript
vue给组件传递不同的值方法
2018/09/29 Javascript
vue中实现图片压缩 file文件的方法
2020/05/28 Javascript
夯基础之手撕javascript继承详解
2020/11/09 Javascript
微信小程序实现电影App导航和轮播
2020/11/30 Javascript
介绍Python的Django框架中的静态资源管理器django-pipeline
2015/04/25 Python
python实现的希尔排序算法实例
2015/07/01 Python
Python实现中文数字转换为阿拉伯数字的方法示例
2017/05/26 Python
tensorflow使用神经网络实现mnist分类
2018/09/08 Python
用Python实现最速下降法求极值的方法
2019/07/10 Python
django如何通过类视图使用装饰器
2019/07/24 Python
keras导入weights方式
2020/06/12 Python
使用Keras预训练好的模型进行目标类别预测详解
2020/06/27 Python
解决python3.x安装numpy成功但import出错的问题
2020/11/17 Python
幼儿园儿童节主持词
2014/03/21 职场文书
节水倡议书范文
2014/04/15 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
五心教育心得体会
2014/09/04 职场文书
图书馆义工感想
2015/08/07 职场文书
全家福照片寄语怎么写?
2019/04/02 职场文书
MySQL 8.0 之不可见列的基本操作
2021/05/20 MySQL
MySQL开启事务的方式
2021/06/26 MySQL
一定要知道的 25 个 Vue 技巧
2021/11/02 Vue.js