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 数字左侧自动补0
Mar 31 PHP
php过滤危险html代码
Aug 18 PHP
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
Oct 31 PHP
Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
Jul 23 PHP
PHP获取用户的浏览器与操作系统信息的代码
Sep 04 PHP
PHP中通过trigger_error触发PHP错误示例
Jun 23 PHP
PHP中Session和Cookie是如何操作的
Oct 10 PHP
PHP实现补齐关闭的HTML标签
Mar 22 PHP
php利用header函数下载各种文件
Aug 24 PHP
php实现跨域提交form表单的方法【2种方法】
Oct 17 PHP
详解PHP处理字符串类似indexof的方法函数
Jun 11 PHP
PHP实现的简单对称加密与解密方法实例小结
Aug 28 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中$_FILES的使用方法及注意事项说明
2014/02/14 PHP
WordPress中限制非管理员用户在文章后只能评论一次
2015/12/31 PHP
Laravel服务容器绑定的几种方法总结
2020/06/14 PHP
编辑浪子版表单验证类
2007/05/12 Javascript
js页面跳转常用的几种方式
2010/11/25 Javascript
自己动手开发jQuery插件教程
2011/08/25 Javascript
再说AutoComplete自动补全之实现原理
2011/11/05 Javascript
JS实现静止元素自动移动示例
2014/04/14 Javascript
JavaScript实现的字符串replaceAll函数代码分享
2015/04/02 Javascript
JS实现仿雅虎首页快捷登录入口及导航模块效果
2015/09/19 Javascript
jQuery实现的仿百度分页足迹效果代码
2015/10/30 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
2016/05/21 Javascript
使用JS中的exec()方法构造正则表达式验证
2016/08/01 Javascript
AngularJS封装指令方法详解
2016/12/12 Javascript
nodejs个人博客开发第五步 分配数据
2017/04/12 NodeJs
js实现股票实时刷新数据案例
2017/05/14 Javascript
React-Native 组件之 Modal的使用详解
2017/08/08 Javascript
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
2017/10/19 jQuery
基于jQuery的$.getScript方法去加载javaScript文档解析
2017/11/08 jQuery
vue-cli与webpack处理静态资源的方法及webpack打包的坑
2018/05/15 Javascript
Python命令行参数解析工具 docopt 安装和应用过程详解
2019/09/26 Python
Python使用requests模块爬取百度翻译
2020/08/25 Python
python Cartopy的基础使用详解
2020/11/01 Python
python爬虫基础之urllib的使用
2020/12/31 Python
西班牙太阳镜品牌:Hawkers
2018/03/11 全球购物
French Connection官网:女装、男装及家居用品
2019/03/18 全球购物
Under Armour安德玛荷兰官网:美国高端运动科技品牌
2019/07/10 全球购物
若干个Java基础面试题
2015/05/19 面试题
材料物理专业大学毕业生求职信
2013/10/15 职场文书
应届行政管理专业个人自我评价
2013/12/28 职场文书
汽车销售顾问求职自荐信
2014/01/01 职场文书
讲座开场白台词和结束语
2015/05/29 职场文书
酒店温馨提示语
2015/07/14 职场文书
家属联谊会致辞
2015/07/31 职场文书
PHP使用QR Code生成二维码实例
2021/07/07 PHP
Li list-style-image 图片垂直居中实现方法
2023/05/21 HTML / CSS