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-->
然后我们看看效果
实现代码如下
<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>
猜你喜欢
- 一,概念1,排序排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 平时的上下文中,如果提到排序,通常指的
- 简介Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特
- 1. 数据构造索引2个文档到 hotel 索引中:PUT /hotel/_doc/1{ "title": &
- 1,带Tomcat的打包方式1.1, 在pom.xml文件添加以下配置(目的:自定main入口和跳过Junit代码)<build>
- 在之前的章节中,我们都是假设程序中只有一条执行流,程序从main方法的第一条语句逐条执行直到结束。从本节开始,我们讨论并发,在程序中创建线程
- 本文实例为大家分享了C#实现扫雷游戏的具体代码,供大家参考,具体内容如下一、实验目的:1、掌握c#窗体和控件的常用属性和功能2、完成扫雷游戏
- 在导入studio工程的时候,进行sync的时候,提示Error:Configuration with name 'default&
- 1|1简介最近基于最新的Activiti7配置了SpringBoot2。简单上手使用了一番。发现市面上解决Activiti7的教程很少,采坑
- Logback 背景Logback是由log4j创始人设计的另一个开源日志组件,官方网站:http://logback.qos.ch。它当前
- 验证码逻辑以前在项目中也做过验证码,生成验证码的代码网上有很多,也有一些第三方的jar包也可以生成漂亮的验证码。验证码逻辑很简单,就是在登录
- C# 3.0为你提供了对象集合初始化器:/// <summary>/// 图书类/// </summary>publ
- 第三章 字符串,比较器和过滤器JDK引入的一些方法对写出函数式风格的代码很有帮助。JDK库里的一些的类和接口我们已经用得非常熟悉了,比如说S
- 基本配置、测试1、导入依赖<dependency> <groupId>org.springframewo
- 如下所示:import java.util.ArrayList;import com.heima.bean.Person;public cl
- 跨域的产生就是因为浏览器的同源策略。它是浏览器的核心安全功能,所谓的同源,就是指域名,协议,还有端口要相同。传统的方案就是JSONP(前端处
- 在gitee上创建springcloud仓库 application.yaml(https方式)server: por
- 本文实例为大家分享了Springboot POI导出Excel的具体代码,供大家参考,具体内容如下需求:页面根据查询条件导出(浏览器)由于本
- 本文实例为大家分享了C#实现猜数字小游戏的具体代码,供大家参考,具体内容如下效果如图:代码:using System;using Syste
- 今天来说一个Java多机部署下定时任务的处理方案。需求: 有两台服务器同时部署了同一套代码, 代码中写有spring自带的定时任务,但是每次
- 上期回顾上期我们主要介绍了排序的基本认识,以及四个排序,分别是直接插入排序,希尔排序,选择排序,堆排序,从这些排序中,了解了算法的实现,以及