公司项目里面扣出来的

我们来看下弹框效果

直接上代码

ScreenSizeUtils.java
package 导入自己的包;import android.content.Context;
import android.graphics.Point;
import android.view.Display;
import android.view.WindowManager;/*** 获取屏幕尺寸信息**/
public class ScreenSizeUtils {public static Point getScreenSizeInfo(Context context) {WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);Display display = null;if (manager != null) {display = manager.getDefaultDisplay();Point sizePoint = new Point();display.getSize(sizePoint);return sizePoint;} else {return null;}}}
LoadingDialog.java
package 导入自己报名即可;import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Point;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ProgressBar;
import android.widget.TextView;import 导入自己报名.ScreenSizeUtils;/*** 加载进度条Dialog** @author on 2018/9/17.*/
public class LoadingDialog extends Dialog {private LoadingDialog(Context context) {super(context, R.style.loading_dialog_style);}public static class Builder {private Context mContext;private CharSequence mMessage;private View mContentView;private float mWidthPercent = 0.3f;private float mHeightPercent = 0.3f;private boolean mIsCancelable;private boolean mIsOutsideCancelable;private DialogInterface.OnCancelListener mCancelListener;private DialogInterface.OnDismissListener mDismissListener;public Builder(Context context) {mContext = context;}public Builder setMessage(CharSequence message) {mMessage = message;return this;}public Builder setContentView(View view) {mContentView = view;return this;}/*** 设置dialog宽** @param widthPercent 占屏幕宽度百分比 0 - 1* @return builder*/public Builder setWidthPercent(float widthPercent) {mWidthPercent = widthPercent;return this;}/*** 设置dialog高** @param heightPercent 占屏幕高度百分比 0 - 1* @return builder*/public Builder setHeightPercent(float heightPercent) {mHeightPercent = heightPercent;return this;}public Builder setLoadingCancelable(boolean cancelable) {mIsCancelable = cancelable;return this;}public Builder setLoadingOutsideCancelable(boolean cancelable) {mIsOutsideCancelable = cancelable;return this;}public Builder setListener(DialogInterface.OnCancelListener cancelListener,DialogInterface.OnDismissListener dismissListener) {mCancelListener = cancelListener;mDismissListener = dismissListener;return this;}public LoadingDialog create() {LoadingDialog loadingDialog = new LoadingDialog(mContext);loadingDialog.setCancelable(mIsCancelable);loadingDialog.setCanceledOnTouchOutside(mIsOutsideCancelable);if (null != mCancelListener) {loadingDialog.setOnCancelListener(mCancelListener);}if (null != mDismissListener) {loadingDialog.setOnDismissListener(mDismissListener);}if (null != mContentView) {loadingDialog.setContentView(mContentView);} else {View view = LayoutInflater.from(mContext).inflate(R.layout.dialog_loading, null);ProgressBar loadingPB = (ProgressBar) view.findViewById(R.id.progress_loading);TextView messageTV = (TextView) view.findViewById(R.id.tv_loading_message);loadingPB.setIndeterminate(false);messageTV.setText(TextUtils.isEmpty(mMessage) ? "加载中..." : mMessage);loadingDialog.setContentView(view);}loadingDialog.show();setWindow(loadingDialog);return loadingDialog;}private void setWindow(LoadingDialog dialog) {//获取对话框当前的参数值Window window = dialog.getWindow();if (null != window) {WindowManager.LayoutParams lp = window.getAttributes();lp.gravity = Gravity.CENTER;//宽高可设置具体大小Point point = ScreenSizeUtils.getScreenSizeInfo(mContext);if (null != point) {lp.width = (int) ((point.x) * mWidthPercent);lp.height = (int) ((point.x) * mHeightPercent);}window.setAttributes(lp);}}}}
LoadingDialogUtils.java
package 导入自己的包;import android.content.Context;
import android.content.DialogInterface;import 导入自己的包.LoadingDialog;/*** 加载进度条Dialog工具类** @author xlg on 2018/9/17.*/
public final class LoadingDialogUtils {private static LoadingDialog mLoadingDialog;/*** 显示进度条Dialog** @param context 上下文*/public static void showLoadingDialog(Context context) {show(context, null, true, null, null);}/*** 显示进度条Dialog** @param context 上下文* @param msg     loading显示的message*/public static void showLoadingDialog(Context context, CharSequence msg) {show(context, msg, true, null, null);}/*** 显示进度条Dialog** @param context 上下文*/public static void showLoadingDialog(Context context, boolean isCCancel) {show(context, null, isCCancel, null, null);}/*** 显示进度条Dialog** @param context 上下文* @param msg     loading显示的message*/public static void showLoadingDialog(Context context, CharSequence msg, boolean isCCancel) {show(context, msg, isCCancel, null, null);}/*** 显示进度条Dialog** @param context         上下文* @param cancelListener  取消Dialog显示监听* @param dismissListener Dialog消失监听*/public static void showLoadingDialog(Context context,DialogInterface.OnCancelListener cancelListener,DialogInterface.OnDismissListener dismissListener) {show(context, null, true, cancelListener, dismissListener);}/*** 显示进度条Dialog** @param context         上下文* @param cancelListener  取消Dialog显示监听* @param dismissListener Dialog消失监听*/public static void showLoadingDialog(Context context, CharSequence msg,DialogInterface.OnCancelListener cancelListener,DialogInterface.OnDismissListener dismissListener) {show(context, msg, true, cancelListener, dismissListener);}/*** 显示进度条Dialog** @param context         上下文* @param cancelListener  取消Dialog显示监听* @param dismissListener Dialog消失监听*/public static void showLoadingDialog(Context context, CharSequence msg, boolean isCCancel,DialogInterface.OnCancelListener cancelListener,DialogInterface.OnDismissListener dismissListener) {show(context, msg, isCCancel, cancelListener, dismissListener);}/*** 显示进度条Dialog** @param context         上下文* @param isCCancel       是否点击Dialog边缘取消Dialog* @param cancelListener  取消Dialog显示监听* @param dismissListener Dialog消失监听*/private static void show(Context context, CharSequence message, boolean isCCancel,DialogInterface.OnCancelListener cancelListener,DialogInterface.OnDismissListener dismissListener) {mLoadingDialog = new LoadingDialog.Builder(context).setMessage(message).setLoadingCancelable(isCCancel).setLoadingOutsideCancelable(isCCancel).setListener(cancelListener, dismissListener).create();}/*** 隐藏进度条Dialog* 由于统一管理Dialog,注意Activity/Fragment生命周期对它的影响*/public static void hideLoadingDialog() {if (null != mLoadingDialog) {if (mLoadingDialog.isShowing()) {mLoadingDialog.dismiss();}mLoadingDialog = null;}}}

Android开发之Dialog对话框(弹框)工具类相关推荐

  1. Android开发之6.0动态权限工具类(高德地图官方扣出来的)附源码

    感觉这个权限申请类写的比较好. 使用方法:activity直接继承就可以了. 看下mainactivity.java package com.qfy.permissiondemo;import and ...

  2. Android开发之Dialog的三种列表显示(解读谷歌官方API)

    根据谷歌的官方文档呢,我们可以有三种列表显示的关于ALertDialog api的可用:.(1)传统的单一选择列表(2)一个持久的单一选择列表(单选按钮) (3)一个持久的多项选择列表(复选框) .创 ...

  3. android注册弹窗,Android开发之PopupWindow创建弹窗、对话框的方法详解

    本文实例讲述了Android开发之PopupWindow创建弹窗.对话框的方法.分享给大家供大家参考,具体如下: 简介: PopupWindow 可创建类似对话框风格的窗口 效果: 使用方法: 使用P ...

  4. android语音播放工具类,Android开发之MediaPlayer多媒体(音频,视频)播放工具类

    本文实例讲述了Android开发之MediaPlayer多媒体(音频,视频)播放工具类.分享给大家供大家参考,具体如下: package com.android.imooc.chat; import ...

  5. Android开发之旅:应用程序基础及组件

    --成功属于耐得住寂寞的人,接下来几篇将讲述Android应用程序的原理及术语,可能会比较枯燥.如果能够静下心来看,相信成功将属于你. 引言 为了后面的例子做准备,本篇及接下来几篇将介绍Android ...

  6. Android开发之2048安卓版

    之前是在eclipse上写的,后面换成了android sudio. 2048游戏的UI整体可以采用线性布局,即LinearLayout,其中嵌套一个线性布局和一个GridLayout,内嵌的线性布局 ...

  7. 如何实现接口统一入口_网易考拉Android App如何实现统一弹框

    摘要 在快速开发的背景下,经历了n个版本后的考拉Android App中已经存在了各种各样看似相同却各有差别的弹框样式.其中包括系统弹框和自定义弹框,并且在线上时常会出现IllegalArgument ...

  8. 【原作者:吴秦(Tyler)http://www.cnblogs.com/skynet/archive/2010/04/12/1709892.html】Android开发之旅:环境搭建及HelloWo

    Android开发之旅:环境搭建及HelloWorld 2010-04-12 00:45 by 吴秦, 801360 阅读, 138 评论, 收藏, 编辑 --工欲善其事必先利其器 引言 本系列适合0 ...

  9. Android开发之SlidingDrawer(一)

    Android开发之SlidingDrawer(一) /* *  Android开发之SlidingDrawer *  北京Android俱乐部群:167839253 * Created on: 20 ...

最新文章

  1. linux挂载移动硬盘 格式化_linux系统下如何挂载NTFS移动硬盘
  2. Data Artisans发布支持ACID事务的流式处理框架Streaming Ledger
  3. 终于有人站出来为程序员说话了
  4. MobileNetV3
  5. python 并行、并发以及多线程的概念 tensorflow图像识别程序多线程并行
  6. 趣谈设计模式 | 职责链模式(ChainOfResposibility):请求的转发处理
  7. Flask和mysql多线程_数据库连接池Flask-SQLAlchemy中多线程安全的问题
  8. Linux 内核定时器实验————复习到这
  9. 当代开发者的六大真实现状,你被哪一个场景“戳中”了?
  10. libcurl linux 静态链接库_GCC 程序编译的静态链接和动态链接
  11. MySQL---分组查询
  12. java类和对象的基础(笔记)
  13. matlab积分器重置功能,MATLABSIMULINK积分器相关操作.docx
  14. autocomplete触发事件_如何防止onSelect事件在DevBridge jQuery Autocomplete中触发两次
  15. 机器学习项目实践——K-means聚类实现广告分析
  16. 【JSOI2018】绝地反击
  17. 02-ElasticSearch创建索引
  18. 禁用ubuntu16.04的guest账户
  19. mysql error1205 博客_MySQL的ERROR 1205错误分析
  20. pr使用中C盘空间变小

热门文章

  1. vivado不识别HLS生成的IP解决方法
  2. arduino 超声波测距原理_超声波测距灯
  3. java接口测试工具_这 5 款实用性能测试工具,你会如何选择?
  4. cesium three性能比较_mapboxgl + three 动画 — 网格热图
  5. NodeJS安装及部署(Linux系统)
  6. WPF自定义命令(转)
  7. 【转】用BlazeMeter录制JMeter测试脚本
  8. git github的使用
  9. 2016 大连网赛---Weak Pair(dfs+树状数组)
  10. tinyhttp源码阅读(注释)