安卓 替換系統dialog風格後的通用提示框

替換系統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>

 

項目地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章