Android之ProgressDialog的使用

Android之ProgressDialog的使用ProgressDialog继承自AlertDialog,AlertDialog继承自Dialog,实现DialogInterface接口。ProgressDialog的创建方式有两种,一种是new

大家好,又见面了,我是你们的朋友全栈君。

ProgressDialog 继承自AlertDialog,AlertDialog继承自Dialog,实现DialogInterface接口。

ProgressDialog的创建方式有两种,一种是new Dialog ,一种是调用Dialog的静态方法Dialog.show()。

// 方式一:new Dialog  
final ProgressDialog dialog = new ProgressDialog(this);  
dialog.show();  

// 方式二:使用静态方式创建并显示,这种进度条只能是圆形条,设置title和Message提示内容  
ProgressDialog dialog2 = ProgressDialog.show(this, "提示", "正在登陆中"); 

// 方式三 使用静态方式创建并显示,这种进度条只能是圆形条,这里最后一个参数boolean indeterminate设置是否是不明确的状态  
ProgressDialog dialog3 = ProgressDialog.show(this, "提示", "正在登陆中", false);  

// 方式四 使用静态方式创建并显示,这种进度条只能是圆形条,这里最后一个参数boolean cancelable 设置是否进度条是可以取消的  
ProgressDialog dialog4 = ProgressDialog.show(this, "提示", "正在登陆中", false, true);  

// 方式五 使用静态方式创建并显示,这种进度条只能是圆形条,这里最后一个参数 DialogInterface.OnCancelListener  
// cancelListener用于监听进度条被取消  
ProgressDialog dialog5 = ProgressDialog.show(this, "提示", "正在登陆中", true, true, cancelListener);  

方式五中需要一个cancelListener,代码如下:

private OnCancelListener cancelListener = new OnCancelListener() {

  @Override
   public void onCancel(DialogInterface dialog) {
     // TODO Auto-generated method stub
     Toast.makeText(MainActivity.this, "进度条被取消", Toast.LENGTH_LONG).show();
  }
};

 

ProgressDialog的样式有两种,一种是圆形不明确状态,一种是水平进度条状态

第一种方式:圆形进度条

final ProgressDialog dialog = new ProgressDialog(this); dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);// 设置进度条的形式为圆形转动的进度条 dialog.setCancelable(true);// 设置是否可以通过点击Back键取消 dialog.setCanceledOnTouchOutside(false);// 设置在点击Dialog外是否取消Dialog进度条 dialog.setIcon(R.drawable.ic_launcher);// // 设置提示的title的图标,默认是没有的,如果没有设置title的话只设置Icon是不会显示图标的 dialog.setTitle("提示"); // dismiss监听 dialog.setOnDismissListener(new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface dialog) { // TODO Auto-generated method stub  } }); // 监听Key事件被传递给dialog dialog.setOnKeyListener(new DialogInterface.OnKeyListener() { @Override public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { // TODO Auto-generated method stub return false; } }); // 监听cancel事件 dialog.setOnCancelListener(new DialogInterface.OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { // TODO Auto-generated method stub  } }); //设置可点击的按钮,最多有三个(默认情况下) dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub  } }); dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub  } }); dialog.setButton(DialogInterface.BUTTON_NEUTRAL, "中立", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub  } }); dialog.setMessage("这是一个圆形进度条"); dialog.show(); new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub try { Thread.sleep(5000); // cancel和dismiss方法本质都是一样的,都是从屏幕中删除Dialog,唯一的区别是 // 调用cancel方法会回调DialogInterface.OnCancelListener如果注册的话,dismiss方法不会回掉  dialog.cancel(); // dialog.dismiss(); } catch (InterruptedException e) { // TODO Auto-generated catch block  e.printStackTrace(); } } }).start();

其中通过Thread.sleep(5000)模拟后台操作。

cancel和dismiss方法本质都是一样的,都是从屏幕中删除Dialog,唯一的区别是:调用cancel方法会回调DialogInterface.OnCancelListener如果注册的话,dismiss方法不会回掉。

 

第二种方式:水平进度条

 // 进度条还有二级进度条的那种形式,这里就不演示了 final ProgressDialog dialog = new ProgressDialog(this); dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);// 设置水平进度条 dialog.setCancelable(true);// 设置是否可以通过点击Back键取消 dialog.setCanceledOnTouchOutside(false);// 设置在点击Dialog外是否取消Dialog进度条 dialog.setIcon(R.drawable.ic_launcher);// 设置提示的title的图标,默认是没有的 dialog.setTitle("提示"); dialog.setMax(100); dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub  } }); dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub  } }); dialog.setButton(DialogInterface.BUTTON_NEUTRAL, "中立", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub  } }); dialog.setMessage("这是一个水平进度条"); dialog.show(); new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub int i = 0; while (i < 100) { try { Thread.sleep(200); // 更新进度条的进度,可以在子线程中更新进度条进度 dialog.incrementProgressBy(1); // dialog.incrementSecondaryProgressBy(10)//二级进度条更新方式 i++; } catch (Exception e) { // TODO: handle exception  } } // 在进度条走完时删除Dialog  dialog.dismiss(); } }).start();

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/154546.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 移动端开发框架

    移动端开发框架总体概述现在比较流行的移动APP开发框架有以下六种:网页、混合、渐进、原生、桥接、自绘。前三种体验与Web的体验相似,后三种与原生APP的体验相似。这六种框架形式,都有自己适用的范围。无所谓好坏,适用就是好。网页应用适用于传统网站APP化,比如淘宝、京东,有大量WEB页面嵌入到APP中。混合应用适用于小成本应用开发,全部代码都基于Web,好处是开发快速、成本低。渐进应用适用于高机会成本的场合,边下载边使用,能快速获取,快速体验。原生应用适用于大型和高体验要求的应用,能做出让人.

  • android之来电自动拒接并自动回复短信_上课模式app「建议收藏」

    上课的时候老师说总是错过电话,对方打来没人接还一遍遍的打,觉得可以有个app在上课期间自动拒接电话,并自动回复短信过去.当然了,需要权限的.尝试做了个雏形出来.界面如下:主要代码如下:package jason.teacher;import java.lang.reflect.Method;import java.util.HashMap;import ja

  • Java酒店管理系统_java酒店管理系统报告

    Java酒店管理系统_java酒店管理系统报告基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的小型酒店管理系统,该项目可用各类java课程设计大作业中,小型酒店管理系统的系统架构分为前后台两部分,最终实现在线上进行小型酒店管理系统各项功能,实现了诸如用户管理,登录注册,权限管理等功能,并实现对各类小型酒店管理系统相关的实体进行管理。该小型酒店管理系统为一个采用mvc设计模式进行开发B/S架构项…

  • 不浮躁,获取充实感

    不浮躁,获取充实感

    2021年12月17日
  • java定义byte类型,详解java中的byte类型[通俗易懂]

    java定义byte类型,详解java中的byte类型[通俗易懂]介绍byte,即字节,由8位的二进制组成。在Java中,byte类型的数据是8位带符号的二进制数。在计算机中,8位带符号二进制数的取值范围是[-128,127],所以在Java中,byte类型的取值范围也是[-128,127]。取值范围分析一直在想为什么不是-128到128呢?今天分析了一下这个问题。首先我们得明白一件事情,那就是运算规则:########################…

  • IDEA使用maven命令打包「建议收藏」

    IDEA使用maven命令打包「建议收藏」前言现在IDEA是最火的java集成开发环境,经常会用到一些maven命令进行必要的操作(例如打jar包),所以在这里做一些简单的总结1.常用打包命令:mvncleanpackage-DskipTests=true//打可执行jar包mvnclean-DskipTests=truedeploy//打包到相应服务器,供其他引用下载2.常用命令列表:mvn-v//…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号