Android 萬能Dialog框架,  簡單粗暴----V1.0系列說明

github地址: https://github.com/liys666666/LDialog

最新版說明:https://www.jianshu.com/p/4ab3462b3056

一. 前言

爲什麼要封裝這個框架呢? 我們目前自定義Dialog的常見方式有:

  1. 使用系統自帶的.
    優點: 快速、簡單、粗暴.
    缺點: 比較難看, 很多屬性沒法改, 靈活性非常差.
  2. 使用第三方別人封裝好的常見樣式.
    優點: 樣式比系統好看, 快速, 總體比第1種好用.
    缺點: 佈局固定, 無法更改, 不夠靈活
  3. 自定義CustomDialog 繼承 Dialog, 然後在CustomDialog加載自己的佈局, 封裝自己的屬性.
    優點: 靈活性非常高, 任何彈窗都可以實現.
    缺點: 寫CustomDialog 比較麻煩, 時間上遠超前面兩種方式, 代碼複用性不夠強.

爲了能自定義各種dialog, 又能把節約時間, 所以就出了這個框架

二. 使用方法

1. 導入項目
//項目根目錄下 build.gradle
allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' } //添加
        }
    }
dependencies {
     implementation 'com.github.liys666666:LDialog:V1.0.4'  //添加
}
2.所有屬性
LDialog dialog = new LDialog(this, R.layout.dialog_confirm).with(); //你的佈局
        dialog
                .setMaskValue(0.5f) //遮罩--透明度
                //1.設置寬
                .setWidth() //單位:dp
                .setWidthPX() //單位:px
                .setWidthRatio(0.8) //佔屏幕寬比例

                //2.設置高
                .setHeight() //單位:dp
                .setHeightPX() //單位:px
                .setHeightRatio() //佔屏幕高比例

                //3.設置背景
                .setBgColor(Color.WHITE) //背景顏色
                .setBgColorRes(R.color.white) //res資源
                .setBgRadius() //圓角, 單位:dp
                .setBgRadiusPX() //圓角, 單位:px

                //4.設置彈框位置 和 動畫(顯示和隱藏動畫)
                .setGravity(Gravity.TOP | Gravity.BOTTOM) //設置彈框位置
                .setGravity(Gravity.LEFT, 0, 0) //設置彈框位置(偏移量)
                .setAnimationsStyle(R.style.dialog_translate) //設置動畫

                //5.設置具體佈局
                //5.1 常見系統View屬性
                .setText(R.id.tv_title, "確定")
                .setTextColor()
                .setBackgroundColor()
                .setBackgroundRes()
                .setImageBitmap()
                .setVisible()
                .setGone()
                //5.2 其它屬性
                .setCancelBtn(R.id.tv_cancel) //設置按鈕,彈框消失的按鈕
                .setOnClickListener(new LDialog.DialogOnClickListener() { //設置按鈕監聽
                    @Override
                    public void onClick(View v, LDialog customDialog) {
                        customDialog.dismiss();
                    }
                }, R.id.tv_confirm, R.id.tv_cancel)  //可以傳多個
                .show(); //顯示
3. 使用說明

①. 簡單使用(主要佈局屬性)
步驟1: new對象, 加載你的佈局
步驟2: with初始化
步驟3: 設置控件的屬性
步驟4: show()
如果有額外需求, 可用dialog.getView(viewId)獲取對應的控件, 隨便怎麼設置都可以

LDialog dialog = new LDialog(this, R.layout.dialog_confirm); //設置你的佈局
dialog.with()
                //設置佈局控件的各種屬性
                .setText(R.id.tv_content, "確定要退出登錄嗎?")
                .setCancelBtn(R.id.tv_cancel) //點擊對應按鈕, dialog會消失(可選)
                .setOnClickListener(new LDialog.DialogOnClickListener() { //設置監聽
                    @Override
                    public void onClick(View v, LDialog lDialog) { //可以根據viewId判斷
                        lDialog.dismiss();
                    }
                }, R.id.tv_confirm, R.id.tv_content) //可以設多控件
                .show();

結果如下圖:


②. dialog本身的屬性:

dialog.with()
                //1.設置寬
                .setWidth() //單位:dp
                .setWidthPX() //單位:px
                .setWidthRatio(0.8) //佔屏幕寬比例

                //2.設置高
                .setHeight() //單位:dp
                .setHeightPX() //單位:px
                .setHeightRatio() //佔屏幕高比例

                //3.設置背景
                .setBgColor(Color.WHITE) //背景顏色
                .setBgColorRes(R.color.white) //res資源
                .setBgRadius() //圓角, 單位:dp
                .setBgRadiusPX() //圓角, 單位:px

                //4.設置彈框位置 和 動畫(顯示和隱藏動畫)
                .setGravity(Gravity.TOP | Gravity.BOTTOM) //設置彈框位置
                .setGravity(Gravity.LEFT, 0, 0) //設置彈框位置(偏移量)
                .setAnimationsStyle(R.style.dialog_translate) //設置動畫

說明: 對於動畫屬性, setAnimationsStyle, 需要在res/values/styles.xml 設置, 動畫屬性參考: android動畫《一》補間動畫

    <style name="dialog_alpha" parent="android:Animation">
        <item name="android:windowEnterAnimation">@anim/dialog_alpha_show</item>  <!--顯示動畫-->
        <item name="android:windowExitAnimation">@anim/dialog_alpha_cancel</item> <!--消失動畫-->
    </style>

    <style name="dialog_translate" parent="android:Animation">
        <item name="android:windowEnterAnimation">@anim/dialog_translate_show</item>  <!--顯示動畫-->
        <item name="android:windowExitAnimation">@anim/dialog_translate_cancel</item> <!--消失動畫-->
    </style>

三. 總結:

1. 擴展性強. 這個框架只是一個盒子, 裏面都是空的, 喜歡放什麼樣的佈局完全看個人喜歡, 可進行二次封裝成自己喜歡的樣式.
2. 使用方便. 鏈式調用, 屬性明瞭, 不記得一查就可以了.
3. 學習成本低, 只需設置屬性即可, 其它完全不用管

到這裏就結束了, 如有疑問或建議, 可在評論區留言, 如果這個框架對你有幫助, 歡迎star收藏.

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