Skip to content
Kongzue edited this page Jan 12, 2024 · 104 revisions

🌐 View English Document | 繁體中文文檔

🏠引入 DialogX

请从以下两个源二选一引入项目。

MavenCentral 源

最新版本: DialogX Release
  1. 在 project 的 build.gradle 文件中找到 allprojects{} 代码块添加以下代码:
allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()      //增加 mavenCentral 仓库
    }
}

⚠️请注意,使用 Android Studio 北极狐版本(Arctic Fox)创建的项目,需要您前往 settings.gradle 添加上述 mavenCentral 仓库配置。

  1. 在 app 的 build.gradle 文件中找到 dependencies{} 代码块,并在其中加入以下语句:
def dialogx_version = "0.0.49"
implementation "com.kongzue.dialogx:DialogX:${dialogx_version}"

Jitpack 源

最新版本: Jitpack.io
  1. 在 project 的 build.gradle 文件中找到 allprojects{} 代码块添加以下代码:
allprojects {
    repositories {
        google()
        jcenter()
        maven { url 'https://jitpack.io' }      //增加 jitPack Maven 仓库
    }
}
  1. 在 app 的 build.gradle 文件中找到 dependencies{} 代码块,并在其中加入以下语句:
//请将 dialogx_version 的值替换为最新版本
def dialogx_version = "0.0.49"
implementation "com.github.kongzue.DialogX:DialogX:${dialogx_version}"

从 0.0.43.beta8 起,下调了最低 API 兼容版本至 19,但请注意低于 21 时,部分效果,例如底部菜单对话框的图标染色无法使用。

新手开发可以参考此文章引入配置 DialogX:【新手教程】手把手教你如何引入DialogX到自己的项目里使用

配置 DialogX

请在使用 DialogX 前,首先需要进行配置。

一般建议在 Application 的实现类中的 onCreate 方法中进行配置:

//初始化
DialogX.init(this);

配置完毕后就可以显示对话框了。

模糊效果

要使用开启组件的实时模糊效果(例如IOS主题),还需在 app 的 build.gradle 文件中找到android{defaultConfig{...}}代码块,在其中添加配置:

renderscriptTargetApi 21
renderscriptSupportModeEnabled true   

额外配置

要进行额外设置,可参考如下代码:

//开启调试模式,在部分情况下会使用 Log 输出日志信息
DialogX.DEBUGMODE = true;

//设置主题样式
DialogX.globalStyle = MaterialStyle.style();

//设置亮色/暗色(在启动下一个对话框时生效)
DialogX.globalTheme = DialogX.THEME.LIGHT;

//设置对话框最大宽度(单位为像素)
DialogX.dialogMaxWidth = 1920;

//设置 InputDialog 自动弹出键盘
DialogX.autoShowInputKeyboard = true;

//限制 PopTip 一次只显示一个实例(关闭后可以同时弹出多个 PopTip)
DialogX.onlyOnePopTip = true;

//设置对话框默认按钮文本字体样式
DialogX.buttonTextInfo = (TextInfo);

//设置对话框默认确定按钮文字样式
DialogX.okButtonTextInfo = (TextInfo);

//设置对话框默认标题文字样式
DialogX.titleTextInfo = (TextInfo);

//设置对话框默认内容文字样式
DialogX.messageTextInfo = (TextInfo);

//设置默认 WaitDialog 和 TipDialog 文字样式
DialogX.tipTextInfo = (TextInfo);

//设置默认输入框文字样式
DialogX.inputInfo = (InputInfo);

//设置默认底部菜单、对话框的标题文字样式
DialogX.menuTitleInfo = (TextInfo);

//设置默认底部菜单文本样式
DialogX.menuTextInfo = (TextInfo);

//设置默认对话框背景颜色(值为ColorInt,为-1不生效)
DialogX.backgroundColor = Color.WHITE;

//设置默认对话框默认是否可以点击外围遮罩区域或返回键关闭,此开关不影响提示框(TipDialog)以及等待框(TipDialog)
DialogX.cancelable = true;

//设置默认提示框及等待框(WaitDialog、TipDialog)默认是否可以关闭
DialogX.cancelableTipDialog = false;

//设置默认取消按钮文本文字,影响 BottomDialog
DialogX.cancelButtonText = (String);

//设置默认 PopTip 文本样式
DialogX.popTextInfo = (TextInfo);

//设置全局 Dialog 生命周期监听器
DialogX.dialogLifeCycleListener = (DialogLifecycleCallback);

//设置 TipDialog 和 WaitDialog 明暗风格,不设置则默认根据 globalTheme 定义
DialogX.tipTheme = (THEME);

//默认 TipDialog 和 WaitDialog 背景颜色(值为 ColorInt,为-1不生效)
DialogX.tipBackgroundColor = (ColorInt)

/**
 * 重写 TipDialog 和 WaitDialog 进度动画颜色,
 * 注意此属性为覆盖性质,即设置此值将替换提示框原本的进度动画的颜色,包括亮暗色切换的颜色变化也将被替代
 * (值为 ColorInt,为-1不生效)
 */
DialogX.tipProgressColor = (ColorInt)

/**
 * 设置 BottomDialog 导航栏背景颜色
 */
DialogX.bottomDialogNavbarColor = Color.TRANSPARENT;

//是否自动在主线程执行
DialogX.autoRunOnUIThread = true;

//使用振动反馈(影响 WaitDialog、TipDialog)
DialogX.useHaptic = true;

//开启沉浸式适配
DialogX.enableImmersiveMode = true;

//忽略左右两侧的非安全区(以处理对于部分 activity 在存在刘海屏的设备上横屏显示时,对话框左侧出现边距的问题)
DialogX.ignoreUnsafeInsetsHorizontal = false;

主题样式(DialogX.globalStyle)默认只自带 Material.style() 一种,你也可以引入其他主题,DialogX 采用模块化设计,因此你需要额外引入主题包才可以使用。

在这里 查看其他主题 或者 查看如何自定义主题

亮暗色设置支持你指定 DialogX 显示为亮色效果还是暗色效果,值的含义如下:

属性 解释
LIGHT 🌕强制亮色模式
DARK 🌑强制暗色模式
AUTO 🌗自动判断,根据设备亮暗色自动改变

请注意,当使用 AUTO 时,且对话框已经启动的情况下,若用户切换了系统主题,那么对话框可能发生重启现象(闪烁),但这不会丢失对话框的内容和数据,例如用户在 InputDialog 输入对话框中输入了一串文本,在对话框重启后,这段文本依然会显示在输入框里,若你设置了对话框自定义了布局,这些布局的状态也不会变化,但对话框的生命周期监听器可能重置,也就意味着你可能会额外收到一次 onDismiss 和 onShow 事件的触发。

备注

TextInfo 用于存储基础文本样式设置,其包含一系列属性和响应的 get/set 方法,例如方法解释如下:

属性 解释 默认值
fontSize 字号大小,值为-1时使用默认样式,单位:dp -1
gravity 对齐方式,值为-1时使用默认样式,取值可使用Gravity.CENTER等对齐方式 -1
fontColor 文字颜色,值为1时使用默认样式,取值可以用Color.rgb(r,g,b)等方式获取 1
bold 是否粗体 false

InputInfo 用于提供输入内容的自定义设置,其包含一系列属性和响应的 get/set 方法,例如方法解释如下:

属性 解释 默认值
MAX_LENGTH 最大长度,-1不生效 -1
inputType 自定义输入类型,类型详见 android.text.InputType
textInfo 默认字体样式 (TextInfo)
multipleLines 是否支持多行 false
selectAllText 默认选中所有文字(便于修改) false

混淆配置

-keep class com.kongzue.dialogx.** { *; }
-dontwarn com.kongzue.dialogx.**

# 额外的,建议将 android.view 也列入 keep 范围:
-keep class android.view.** { *; }

# 若启用模糊效果,请增加如下配置:
-dontwarn androidx.renderscript.**
-keep public class androidx.renderscript.** { *; }

依赖

DialogX 依赖部分其他组件实现特定的功能,请按照以下清单检查你的 app 拥有并符合依赖条件:

  1. androidx.appcompat 组件 1.2.0 版本或以上版本:
implementation 'androidx.appcompat:appcompat:1.2.0'
  1. iOS 主题的实时模糊效果依赖 RenderScript 实现,若要使用模糊效果请查看 模糊效果 章节进行配置。
  2. Material You 主题需要 material 组件 1.3.0 版本或以上版本:
implementation 'com.google.android.material:material:1.3.0'

常见问题

如果你遇到了一些问题,或没有达到预期效果,请按照如下步骤尝试:

  1. DialogX 仓库主页面 下载 Demo程序 并尝试运行,如果在您的设备上表现不正常,请 提交 Issues,并说明设备型号及系统版本,如果在设备上表现正常,那么按照第 2 条排查。

  2. 查阅 常见问题 看您的问题是否已经有解释,并按照建议进行配置。

  3. 若上述方法都无法帮您解决问题,请 提交 Issues,说明问题原因及重现问题的方法,或者你可以加入群与我直接进行讨论:590498789

反馈 DialogX

高级扩展用法

DialogX 还提供了很多 API 来丰富用法与扩展性,要了解这些 API,请前往 《高阶扩展用法》 查看

Clone this wiki locally