Android ProgressBar进度条和ProgressDialog进度框的展示DEMO_php技巧

在做手机开发时,经常碰到一些比较耗时的操作,这个时候进度条就开始派上用场了。
这个demo展示了ProgressBar进度条和ProgressDialog进度框。
一、ProgressDialog进度框,效果如图所示:

代码如下:

复制代码 代码如下:

//进度对话框按钮监听
     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方法
效果图如下:

代码如下:

复制代码 代码如下:

//进度条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示例

时间: 2024-11-18 01:32:04

Android ProgressBar进度条和ProgressDialog进度框的展示DEMO_php技巧的相关文章

Android自定义水平进度条的圆角进度_Android

平时项目中经常用到自定义进度条样式,我们一般实现的也是下面的第一种,至于第二种的圆角进度,网上介绍的资料也不是很多,这里一起展示一下这两种的实现. 下面开始看代码,先从主界面布局开始看起: <ProgressBar style="@android:style/Widget.ProgressBar.Horizontal" android:layout_width="match_parent" android:layout_height="20dp&qu

Android自定义水平进度条的圆角进度

平时项目中经常用到自定义进度条样式,我们一般实现的也是下面的第一种,至于第二种的圆角进度,网上介绍的资料也不是很多,这里一起展示一下这两种的实现. 下面开始看代码,先从主界面布局开始看起: <ProgressBar style="@android:style/Widget.ProgressBar.Horizontal" android:layout_width="match_parent" android:layout_height="20dp&qu

CSS实现进度条和订单进度条

原文:CSS实现进度条和订单进度条 最近半个月为了期末考试,可要了学渣我半瓶血啊!今天本该好好复习的,可是状态不好,就随便找点乐子玩一玩,于是乎就想起之前面试时面试官给的一道题(见标题),那就弄点简单的小玩意给自己洗洗脑咯. 简单地效果图如下:   CSS实现进度条: html结构: <div id="progress"> <span>70%</span> </div> css样式: #progress{ width: 50%; heig

Asp.Net 无刷新文件上传并显示进度条的实现方法及思路_实用技巧

相信通过Asp.Net的服务器控件上传文件在简单不过了,通过AjaxToolkit控件实现上传进度也不是什么难事,为什么还要自己辛辛苦苦来 实现呢?我并不否认"拿来主义",只是我个人更喜欢凡是求个所以然.本篇将阐述通过Html,IHttpHandler和 IHttpAsyncHandler实现文件上传和上传进度的原理,希望对你有多帮助. 效果图: 本文涉及到的知识点:1.前台用到Html,Ajax,JQuery,JQuery UI 2.后台用到一般处理程序(IHttpHandler)和

java实现在复制文件时使用进度条(java实现进度条)_java

思路分析: 因为既要有操作面板又要有进度条,所以肯定要出现两个继承JFrame类的窗体.先看被调用的进度条窗体,它不需要手动操作,所以类的内部实现一个方法就可以了.因为设计文件操作,所以要捕获异常.首先根据要复制的文件创建File对象,以及根据复制后文件的保存地址创建File对象,然后创建FileOutputStream对象,再创建FileInputStream对象,之后是ProgressMonitorInputStream对象,然后读取文件,如果总耗时超过2秒,将会自动弹出一个进度监视窗口.接

进度条 线程中断-进度条执行一次后,线程没有中断,第二次点击鼠标事件时不更新

问题描述 进度条执行一次后,线程没有中断,第二次点击鼠标事件时不更新 我是设定boolean来中断线程,执行一次进度条后二次点击鼠标事件时不再更新且弹出的搜索条窗口不消失,导致界面不能进行任何操作,这是线程没中断引起的吗?我是在一个主main函数中执行的流程 JProgressBar comp = new JProgressBar(); //进度条 int value = 0; private boolean bg001=true; JDialog dialog = new JDialog((F

求通过进度条显示执行时间进度的方法?

问题描述 我通过C#写了一个程序,其中有通过查询数据库返回DATASET绑定DATAGRID的方法,但数据量很大,每次点击按钮执行都要等很久,能否通过进度条控件来显示程序执行的进度呢?具体应该如何实现? 解决方案 解决方案二:要显示进度就只能逐条读取.读到一个dataTable里,读的过程显示进度,读取完成后再显示数据到dataGrid.解决方案三:能不能计算整个读取数据库的方法从执行到结束需要多少时间从而设置进度呢?解决方案四:读取数据如果用dataset,基本上不能.要么用dataread,

网站进度条-怎么写进度条,求问大神

问题描述 怎么写进度条,求问大神 我需要一个有百分比的感觉的进度条,不要下载的那种急需大神们,新手上线,多多指教 解决方案 什么语言都不说怎么帮你.不过你可以google,你用的语言+进度条,特别是,你可以使用google图像搜索,这样看着哪个像,就点进去,结果就有了.省得浪费10分以及浪费时间了. 解决方案二: 通过JS改变内部DIV的宽度和内容展示动态进度: <div style="border:solid 1px #808080;width:300px;"> <

网页加载时页面显示进度条加载完成之后显示网页内容_javascript技巧

现在网上有很多网页加载进度条 ,但大多都是时间固定的. 下面的当查询大量数据时,网页加载较慢,在网页加载时,显示进度条,当网页加载完成时,进度条消失,显示网页已经加载完成的内容. 复制代码 代码如下: <html> <script language=VBScript> Dim Bar, SP Bar = 0 SP = 100 Function Window_onLoad() Bar = 95 SP = 10 End Function Function Count() if Bar