Android 自定义ProgressDialog进度条对话框用法详解

作者:java--hhf 时间:2022-02-14 19:31:04 

ProgressDialog的基本用法

ProgressDialog为进度对话框。android手机自带的对话框显得比较单一,我们可以通过ProgressDialog来自己定义对话框中将要显示出什么东西。

首先看看progressDialog里面的方法

setProgressStyle:设置进度条风格,风格为圆形,旋转的。

setTitlt:设置标题
setMessage:设置提示信息;
setIcon:设置标题图标;
setIndeterminate:设置ProgressDialog 的进度条是否不明确;这个属性对于ProgressDailog默认的转轮模式没有实际意义,默认下设置为true,它仅仅对带有ProgressBar的Dialog有作用。修改这个属性为false后可以实时更新进度条的进度。

setCancelable:设置ProgressDialog 是否可以按返回键取消;
CancelListner:当前Dialog强制取消之后将会被执行,通常用来清理未完成的任务。

setButton:设置ProgressDialog 的一个Button(需要监听Button事件);

show:显示ProgressDialog。

cancel:删除progressdialog

dismiss: 删除progressdialog 作用和cancel相同

setProgress(intCounter);更新进度条,当然一般都需要Handler的结合来更新进度条
<!--EndFragment-->

然后我们看看效果

Android 自定义ProgressDialog进度条对话框用法详解

实现代码如下

<span style="">package cn.android;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class SecondActivity extends Activity implements Runnable{
/**
* Called when the activity is first created.
* Activity入口
* */
private Button b_dialog,b_dialog1,button;//两个按钮
private ProgressDialog pd,pd1;//进度条对话框
private int count;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);//关联对应的界面
b_dialog = (Button)this.findViewById(R.id.button_dialog);
b_dialog1 = (Button)this.findViewById(R.id.Button_dialog1);
//处理事件发生时要做的事
b_dialog.setOnClickListener(listener);
b_dialog1.setOnClickListener(listener);
</span>
<span style=""> }
//定义 * 对象
private OnClickListener listener = new OnClickListener() {
// 鼠标按下后
public void onClick(View v) {
// 得到当前被触发的事件的ID —— 类型是int
int id = v.getId();
if(id == R.id.button_dialog){
//按下确定键就会消失的进程对话框
// pd = new ProgressDialog(SecondActivity.this);// 创建ProgressDialog对象
// pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);// 设置进度条风格,风格为圆形,旋转的
// pd.setTitle("提示");// 设置ProgressDialog 标题
// pd.setMessage("这是一个圆形进度条对话框");// 设置ProgressDialog提示信息
// pd.setIcon(R.drawable.icon);// 设置ProgressDialog标题图标
// // 设置ProgressDialog 的进度条是否不明确 false 就是不设置为不明确
// pd.setIndeterminate(false);
// pd.setCancelable(true); // 设置ProgressDialog 是否可以按退回键取消
// pd.setButton("确定", new Bt1DialogListener()); // 设置ProgressDialog 的一个Button
// pd.show(); // 让ProgressDialog显示
//过1秒钟就会自己消失的进程对话框
//弹出另外一种对话框
pd = ProgressDialog.show(SecondActivity.this, "自动关闭对话框", "Working,,,,,,1秒", true, false);
Thread thread = new Thread(SecondActivity.this);//开启一个线程来延时
thread.start();//启动线程
}else if(id == R.id.Button_dialog1){
pd1 = new ProgressDialog(SecondActivity.this);// 创建ProgressDialog对象
pd1.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);// 设置进度条风格,风格为圆形,旋转的
pd1.setTitle("提示");// 设置ProgressDialog 标题
pd1.setMessage("这是一个条状进度条对话框");// 设置ProgressDialog提示信息
pd1.setIcon(R.drawable.secondback);// 设置ProgressDialog标题图标
// 设置ProgressDialog 的进度条是否不明确 false 就是不设置为不明确
pd1.setIndeterminate(false);
pd1.setCancelable(true); // 设置ProgressDialog 是否可以按退回键取消
pd1.setProgress(100);// 设置ProgressDialog 进度条进度
pd1.show(); // 让ProgressDialog显示
count = 0;
new Thread() {
public void run() {
try {
while(count <= 100) {
// 由线程来控制进度
pd1.setProgress(count++);
Thread.sleep(100);
}
pd1.cancel();
} catch (Exception e) {
pd1.cancel();
}
}
}.start();
}
}
};
//run的是实现
public void run() {
try {
Thread.sleep(1000);//睡1秒
} catch (InterruptedException e) {
e.printStackTrace();
}
handler.sendEmptyMessage(0);//传送消息
}
//定义处理消息的对象
private Handler handler = new Handler(){
//加入传消息来了就这么么办
public void handleMessage(Message msg){
pd.dismiss();//对话框消失
Toast.makeText(SecondActivity.this, "对话框就消失了", 3).show();
}
};
// pdButton01的 * 类
class Bt1DialogListener implements DialogInterface.OnClickListener {
@Override
public void onClick(DialogInterface dialog, int which) {
// 点击“确定”按钮取消对话框
dialog.cancel();
}
}
}
</span>

标签:progressdialog,用法
0
投稿

猜你喜欢

  • SpringMVC路径匹配中使用通配符问题

    2023-07-18 20:44:03
  • Java中JFrame实现无边框无标题方法

    2021-11-25 20:35:54
  • JDK8中的HashMap初始化和扩容机制详解

    2023-11-25 10:06:44
  • Java中JSON处理工具类使用详解

    2023-09-19 17:59:08
  • java实现文件上传下载和图片压缩代码示例

    2023-01-02 17:49:30
  • Android View背景选择器编写技巧

    2023-09-16 21:37:43
  • Java ArrayDeque使用方法详解

    2022-02-09 08:00:23
  • java String类常量池分析及"equals"和"==”区别详细介绍

    2021-11-28 01:54:48
  • vscode编写latex的方法

    2022-05-21 13:30:52
  • SpringBoot JdbcTemplate批量操作的示例代码

    2023-05-15 21:46:42
  • 基于WPF实现简单的文件夹比较工具

    2023-11-15 16:08:34
  • Spring @ComponentScan注解扫描组件原理

    2021-09-21 09:10:02
  • 微信小程序微信登录的实现方法详解(JAVA后台)

    2023-08-29 12:37:25
  • Java面向对象之抽象类,接口的那些事

    2022-08-25 19:16:30
  • Android实现基于ViewPager的无限循环自动播放带指示器的轮播图CarouselFigureView控件

    2022-06-25 19:04:23
  • Android中实现GPS定位的简单例子

    2021-11-24 21:01:25
  • JAVA发送HTTP请求的多种方式详细总结

    2021-06-15 14:43:48
  • Android Mms之:短信发送流程(图文详解)

    2022-07-27 02:10:21
  • RocketMQ NameServer架构设计启动流程

    2023-12-13 07:40:01
  • springmvc限流拦截器的示例代码

    2021-09-08 02:50:55
  • asp之家 软件编程 m.aspxhome.com