
“但願人長久,搬磚不再有”,輪子哥的座右銘。然後我卻把AndroidProject功能解析出來,是為了更好的搬磚,我想他看到是不是會當場吐血。🤣
對于對話框案例,我已經很難隻是把代碼貼出來,友善其他項目使用。整理了上方的導圖,一個MessageDialog牽扯到的全部檔案。這裡更多的是,我們要學習裡面一些代碼處理的點,以及封裝方式。我們也許可以用一個Java檔案和xml布局檔案實作的事情,卻用這麼多代碼實作的意義和好處。但考慮這些的前提都是,學習他的代碼。
結合上方導圖,可以看到有兩個檔案 R.layout.ui_dialog 和R.layout.message_dialog。内容分别是:
R.layout.ui_dialog
R.layout.message_dialog
實際顯示效果
結合方式 CommonDialog 56行
通過MessageDialog調用CommonDialog内方法進行把内容的布局 addView 進去,這樣其他的彈出框隻是内容不同,标題和按鈕部分相同,以達到複用的效果。
在ui_dialog.xml 布局中使用了控件 CardView 來實作 Dialog 圓角效果。帶圓角背景和陰影的FrameLayout。并且在CardView中使用 ImageView 可以直接顯示圓角圖檔。
參考部落格:Android之CardView (Ps:寫的真的很好)
背景顔色
圓角半徑
陰影大小
可根據内容自定義顯示和隐藏的控件
确定、取消按鈕的按壓樣式
⭐如果是 TextView 需添加 android:clickable="true" 屬性才可奏效
顯然如果把這樣一個大批量代碼移植到新的項目裡,好像是不太現實,還有一些基本資源 string、color等的定義。
1、MessageDialog 設定Dialog内容布局,接收ac的Dialog内容以及按鈕接口實作類的傳入
2、CommonDialog 設定相同Dialog的布局,将子類布局插入到Common的Dialog布局中,并接收按鈕接口實作類的傳入
3、BaseDialog 定義Dialog style 顯示大小位置以及 真正的綁定按鈕的點選事件。BaseDialog應該是這個Dialog 的核心,這裡采用的是BaseActivity extends AppCompatDialog 的形式,再通過BaseActivity.Builder去建構Dialog對象,并且實作了大量的接口,這些接口不隻是在BaseDialog中使用,在其他類中也可以達到複用的效果(後面再進行拆分)。
我開始看不懂了······我要慌了