千家信息网

Android如何实现ProgressBar进度条和ProgressDialog进度框

发表于:2024-10-20 作者:千家信息网编辑
千家信息网最后更新 2024年10月20日,这篇文章给大家分享的是有关Android如何实现ProgressBar进度条和ProgressDialog进度框的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在做手机开发时
千家信息网最后更新 2024年10月20日Android如何实现ProgressBar进度条和ProgressDialog进度框

这篇文章给大家分享的是有关Android如何实现ProgressBar进度条和ProgressDialog进度框的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

在做手机开发时,经常碰到一些比较耗时的操作,这个时候进度条就开始派上用场了。
这个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 {
@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);
}
}

感谢各位的阅读!关于"Android如何实现ProgressBar进度条和ProgressDialog进度框"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

进度 方法 运行 效果 代码 内容 按钮 消息 监听 明显 成功 刻度 对话框 更多 篇文章 线程 对话 示范 不错 实用 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 谢谢网络安全的第三个时代是 软件开发自己可以在家里搞吗 数据库null和空哪个好 服务器提高安全性 曙光网络安全事业部 hp服务器武汉 国家网络安全学院是公办吗 用cmd怎么链接数据库 中小学生网络安全的ppt ios软件开发工程师证书 计算机服务器操作系统分类 数据库一般放在哪里 软件开发中的二次开发 2017网络安全隐患 网络安全管理与信息化建设 服务器bios怎么优化 网络安全等级保护条例牵扯的利益 银行行业网络安全 数据库管理核心考点 网络安全宣传周青少年日文案 服务器蓝屏能启动任务管理器 网络安全内容审查的上市公司 智能互联网络技术就业岗位 在关系数据库中解决数据 网络安全 陈麟 浦口区电商app软件开发 中国台湾小型软件开发销售价格 萝卜乐互联网科技有限公司 保障数据库安全对经济的意义 嵌入式软件开发汽车空调前景
0