天天看點

解析AndroidProject 對話框案例 dialog

解析AndroidProject 對話框案例 dialog

“但願人長久,搬磚不再有”,輪子哥的座右銘。然後我卻把AndroidProject功能解析出來,是為了更好的搬磚,我想他看到是不是會當場吐血。🤣

對于對話框案例,我已經很難隻是把代碼貼出來,友善其他項目使用。整理了上方的導圖,一個MessageDialog牽扯到的全部檔案。這裡更多的是,我們要學習裡面一些代碼處理的點,以及封裝方式。我們也許可以用一個Java檔案和xml布局檔案實作的事情,卻用這麼多代碼實作的意義和好處。但考慮這些的前提都是,學習他的代碼。

結合上方導圖,可以看到有兩個檔案 R.layout.ui_dialog 和R.layout.message_dialog。内容分别是:

R.layout.ui_dialog

解析AndroidProject 對話框案例 dialog

R.layout.message_dialog

解析AndroidProject 對話框案例 dialog

實際顯示效果

解析AndroidProject 對話框案例 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中使用,在其他類中也可以達到複用的效果(後面再進行拆分)。

我開始看不懂了······我要慌了