替換系統dialog風格後的通用提示框工具類,可以覆蓋lib下的定義資源,改變現有的顏色風格,需要改變佈局風格,可下載項目後自行調整
一、工程引入工具包準備
android {
repositories {
flatDir {
dirs 'libs'
}
}
...
}
dependencies {
implementation(name: 'DialogUtilsLib', ext: 'aar')
//eventbus,引入後你的項目將支持EventBus,EventBus是一種用於Android的事件發佈-訂閱總線,替代廣播的傳值方式,使用方法可以度娘查詢。
implementation 'org.greenrobot:eventbus:3.1.1'
...
}
二、使用
注意下方只做了基礎展示,dialog的都會返回對應的utils對象,在需要特殊處理的地方可以使用create(this, false)方式創建,不加入觀察者管理,此時自行維護返回獲得對象,手動處理因爲系統字體改變,橫豎屏切換等引起的activity銷燬重建現象引發窗體泄漏bug。反之,只需要在activity的onDestroy調用DialogLibCommonUtils.sendCloseEvent(Object obj)方法即可,關閉所有同類型已加入觀察者管理的對話框,避免引發泄漏風險
普通dialog
DialogLibCommonUtils.create(this)
.setMessage("普通對話框")
.noShowCancel()
.show();
自定義dialog
ImageView imageView = new ImageView(this);
imageView.setImageDrawable(getResources().getDrawable(R.mipmap.ic_launcher));
DialogLibCustomUtils.create(this)
.noShowCancel()
.show(imageView);
輸入型dialog
DialogLibInputUtils.create(this)
.setMessage("輸入信息")
.setOnBtnOk(str -> {
Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();
return true;
})
.show();
載入型dialog
DialogLibLoadingUtils.create(this)
.setTimeoutClose(2000)
.show();
三、資源覆蓋,改變顏色、字體大小、默認文字
如果需要變更顏色,請在應用aar項目的對應下方資源文件下覆蓋指定ID資源,改變dialog在實際項目裏的顏色風格
以下是lib定義的資源
colors下可覆蓋資源及註釋, 默認黑色和白色不建議覆蓋,前景色:字體的顏色,背景色:佈局的背景色
<resources>
<!--黑色-->
<color name="dialog_utils_lib_black">#FF000000</color>
<!--白色-->
<color name="dialog_utils_lib_white">#FFFFFFFF</color>
<!--dialog的標題文字的前景色,適用於所有帶標題的dialog-->
<color name="dialog_utils_lib_title_fg">@color/dialog_utils_lib_black</color>
<!--dialog的 確認 按鈕文字的前景色-->
<color name="dialog_utils_lib_ok_fg">@color/dialog_utils_lib_white</color>
<!--dialog的 取消 按鈕文字的前景色-->
<color name="dialog_utils_lib_cancel_fg">@color/dialog_utils_lib_white</color>
<!--dialog的 確認 按鈕文字的背景色-->
<color name="dialog_utils_lib_ok_bg">#22C5A3</color>
<!--dialog的 取消 按鈕文字的背景色-->
<color name="dialog_utils_lib_cancel_bg">#F8A01A</color>
<!--dialog的輸入框下方顯示2個按鈕時,中間分隔的背景色-->
<color name="dialog_utils_lib_button_split_bg">@color/dialog_utils_lib_white</color>
<!--dialog的內容文字的前景色,適用於 DialogLibCommonUtils-->
<color name="dialog_utils_lib_content_fg">@color/dialog_utils_lib_black</color>
<!--dialog的輸入框文字的前景色,適用於 DialogLibInputUtils-->
<color name="dialog_utils_lib_input_fg">@color/dialog_utils_lib_black</color>
<!--dialog的輸入框下方分割線的背景色,適用於 DialogLibInputUtils-->
<color name="dialog_utils_lib_input_split_line">@color/dialog_utils_lib_ok_bg</color>
<!--dialog的加載框加載等待區域的背景色-->
<color name="dialog_utils_lib_loading_content_bg">#FFc4c4c4</color>
<!--dialog的加載框加載等待區域文字提示的前景色-->
<color name="dialog_utils_lib_loading_content_text_fg">@color/dialog_utils_lib_white</color>
</resources>
dimens下字體大小資源
<resources>
<dimen name="dialog_utils_lib_text_size_normal">14sp</dimen>
<!--標題字體大小,統一設定-->
<dimen name="dialog_utils_lib_title_text_size">@dimen/dialog_utils_lib_text_size_normal</dimen>
<!--確定 字體大小,統一設定-->
<dimen name="dialog_utils_lib_ok_text_size">@dimen/dialog_utils_lib_text_size_normal</dimen>
<!--取消 字體大小,統一設定-->
<dimen name="dialog_utils_lib_cancel_text_size">@dimen/dialog_utils_lib_text_size_normal</dimen>
<!--內容 字體大小,適用於 DialogLibCommonUtils的提示內容區域-->
<dimen name="dialog_utils_lib_content_text_size">@dimen/dialog_utils_lib_text_size_normal</dimen>
<!--輸入框 字體大小,適用於 DialogLibInputUtils 輸入區域-->
<dimen name="dialog_utils_lib_input_text_size">@dimen/dialog_utils_lib_text_size_normal</dimen>
<!--加載框 字體大小,適用於 DialogLibLoadingUtils 提示內容區域-->
<dimen name="dialog_utils_lib_loading_text_size">@dimen/dialog_utils_lib_text_size_normal</dimen>
</resources>
strings下資源定義, 注意:如果你的項目存在多語言,則必須覆蓋
<resources>
<string name="dialog_utils_lib_ok">確定</string>
<string name="dialog_utils_lib_cancel">取消</string>
<string name="dialog_utils_lib_default_title">提示</string>
<string name="dialog_utils_lib_data_processing">數據處理中…</string>
</resources>