Skip to content

home_tc

Kongzue edited this page Jan 12, 2024 · 2 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