Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
发布时间:2016-12-29 来源:查字典编辑
摘要:在做手机开发时,经常碰到一些比较耗时的操作,这个时候进度条就开始派上用场了。这个demo展示了ProgressBar进度条和Progress...

在做手机开发时,经常碰到一些比较耗时的操作,这个时候进度条就开始派上用场了。

这个demo展示了ProgressBar进度条和ProgressDialog进度框。

一、ProgressDialog进度框,效果如图所示:

Android ProgressBar进度条和ProgressDialog进度框的展示DEMO1

代码如下:

复制代码 代码如下:

//进度对话框按钮监听

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进度框的展示DEMO2

代码如下:

复制代码 代码如下:

//进度条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教程学习
编程开发子分类