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+Html+缓存
Dec 20 PHP
30 个很棒的PHP开源CMS内容管理系统小结
Oct 14 PHP
php中addslashes函数与sql防注入
Nov 17 PHP
php提示Warning:mysql_fetch_array() expects的解决方法
Dec 16 PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
Dec 16 PHP
Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
Mar 21 PHP
PHP常见错误提示含义解释(实用!值得收藏)
Apr 25 PHP
PHP链表操作简单示例
Oct 15 PHP
PHP解析url并得到url参数方法总结
Oct 11 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
Oct 15 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
Dec 18 PHP
php如何实现数据库的备份和恢复
Nov 30 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 set_time_limit(0) 设置程序执行时间的函数
2010/05/26 PHP
PHP COOKIE及时生效的方法介绍
2014/02/14 PHP
Mozilla中显示textarea中选择的文字
2006/09/07 Javascript
htm调用JS代码
2007/03/15 Javascript
javascript中的self和this用法小结
2014/02/08 Javascript
php读取sqlite数据库入门实例代码
2014/06/25 Javascript
简单的jquery左侧导航栏和页面选中效果
2014/08/21 Javascript
JavaScript实现把数字转换成中文
2015/06/29 Javascript
基于jQuery通过jQuery.form.js插件实现异步上传
2015/12/13 Javascript
快速解决js动态改变dom元素属性后页面及时渲染的问题
2016/07/06 Javascript
Vue.js中数据绑定的语法教程
2017/06/02 Javascript
在vue项目中引入highcharts图表的方法(详解)
2018/03/05 Javascript
使用Vue开发动态刷新Echarts组件的教程详解
2018/03/22 Javascript
Element输入框带历史查询记录的实现示例
2019/01/15 Javascript
微信小程序人脸识别功能代码实例
2019/05/07 Javascript
微信小程序使用 vant Dialog组件的正确方式
2020/02/21 Javascript
[02:03]风行者至宝清风环佩外观展示
2020/09/05 DOTA
零基础写python爬虫之抓取糗事百科代码分享
2014/11/06 Python
Python中使用Inotify监控文件实例
2015/02/14 Python
Python3通过Luhn算法快速验证信用卡卡号的方法
2015/05/14 Python
Python实现连接两个无规则列表后删除重复元素并升序排序的方法
2018/02/05 Python
Python 输出时去掉列表元组外面的方括号与圆括号的方法
2018/12/24 Python
Python pandas.DataFrame调整列顺序及修改index名的方法
2019/06/21 Python
Django实现简单网页弹出警告代码
2019/11/15 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
2020/05/04 Python
纯CSS实现右侧底部悬浮效果(悬浮QQ、微信、微博、邮箱等联系方式)
2015/04/24 HTML / CSS
世界上最大的冷却器制造商:Igloo Coolers
2019/07/23 全球购物
李维斯牛仔裤英国官方网站:Levi’s英国
2019/10/10 全球购物
住房公积金接收函
2014/01/09 职场文书
主管会计岗位职责
2014/03/13 职场文书
《锄禾》教学反思
2014/04/08 职场文书
教师职业道德事迹材料
2014/08/18 职场文书
小学老师对学生的评语
2014/12/29 职场文书
浅谈JS和Nodejs中的事件驱动
2021/05/05 NodeJs
Javascript之datagrid查询详解
2021/09/15 Javascript
面试被问select......for update会锁表还是锁行
2021/11/11 MySQL