開發(fā)文檔代碼示例工程Dialog的完全解析
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
本文引言
學(xué)習(xí)編程,就應(yīng)該用代碼筑基,拿項(xiàng)目蓋樓!最近學(xué)習(xí)《鴻蒙操作系統(tǒng)開發(fā)入門經(jīng)典》,邊寫邊敲示例代碼,提升明顯。但總覺得例子化的代碼還是差了點(diǎn)東西,遂根據(jù)官方提供的代碼示例工程進(jìn)行學(xué)習(xí)和解析,和盡力二創(chuàng)。
開發(fā)文檔-代碼示例工程
一、概述
ToastDialog是在窗口上方彈出的對話框,是通知操作的簡單反饋。ToastDialog會在一段時間后消失,在此期間,用戶還可以操作當(dāng)前窗口的其他組件。
而基于CommonDialog我們們可以封裝更多的彈框。
幫大家翻譯一下:
二、工程演示
吐槽!原示例工程的按鈕和字體巨小!!!!眼睛都無了!我把字調(diào)大了。
進(jìn)入HAP
顯而易見有四個按鈕,即有四種反饋!
- common dialog:一般的信息反饋對話框
- list dialog:列表對話框
- multiselect dialog:對選對話框
- custom dialog:自定義對話框
- common dialog
- list dialog
- multiselect dialog
- custom dialog
三、工程項(xiàng)目解析
框架解析
四、Layout布局解析
main_ability_slice
- 主頁面
- 布局:DirectionalLayout-方向布局(vertical豎直排列)
- 組件與頁面對應(yīng):
custom_dialog_content
- 自定義頁面
- 布局:最外層DirectionalLayout方向布局—Text組件—內(nèi)層包含六個TextField組件的DirectionalLayout—Button組件
- 注解:
- 組件與頁面對應(yīng):
五、graphic文件解析
此文件下的都是以xml形式(svg會被編譯器轉(zhuǎn)為xml)的背景設(shè)置。在layout文件下的xml進(jìn)行背景設(shè)置,如下:
為演示方便。把所有集合到一個xml進(jìn)行注解。
六、MainAbility解析
關(guān)鍵點(diǎn):
- 回調(diào)函數(shù)onStart。讀者如果對生命周期函數(shù)不是很懂建議點(diǎn)擊鏈接讀下文:
- setMainRoute配置默認(rèn)展示的AbilitySlice
七、utils下的LogUtil解析
此文件是基于HiLog日志模塊的打印日志文件。
具體如何打印和如何注意事項(xiàng)不歸屬本文重點(diǎn),可以參照下文
八、MainAbilitySlice解析
聲明
關(guān)于設(shè)置頁面的不贅述直接進(jìn)入自定義函數(shù)initComponents()的解析:
關(guān)于幾個show的解析
- 基本都是字面意思
- 關(guān)鍵在于幾個關(guān)鍵功能的實(shí)現(xiàn)如單選、多選需要大家多熟悉
自定義彈框
九、custom文件的解析
難點(diǎn)在于TextField的應(yīng)用,而不是CustomDialog了哈哈哈。
- //通過addTextObserver實(shí)現(xiàn)從start到count輸入框的跳轉(zhuǎn)
- private void setObserver(TextField textField, Component textFieldNext) {
- textField.addTextObserver((string, start, before, count) -> matchNumber(string, textField, textFieldNext));
- }
- private void matchNumber(String string, TextField textField, Component textFieldNext) {
- boolean isMatch = Pattern.matches(PATTERN, string);
- if (isMatch) {
- textField.setText(string);
- }
- if (textFieldNext != null) {
- textFieldNext.requestFocus();
- }
- }
本文總結(jié)
- 每日一更!不能斷更!!!!哈哈哈哈保持學(xué)習(xí)。
- 對于代碼示例工程提一點(diǎn)建議:布局中的text的值并沒有用element中的string.json存儲。致使代碼不規(guī)范
- 代碼已經(jīng)格式化放心食用
- 對于ListDialog、CommonDialog、自定義彈窗有了一個基本演示和解析,但其完整API如下;
其中DisplayDialog很有意思:
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)