天天看點

【HarmonyOS Connect裝置開發-個人】1.抛除束縛,自定義裝置UI

1.抛除束縛,自定義裝置UI

(目錄)

本帖将實作配網完成後,跳轉到自定義的ui。

【HarmonyOS Connect裝置開發-個人】1.抛除束縛,自定義裝置UI

1.抛除束縛,自定義裝置UI

1.1 了解OneHop template

第一天使用OneHop模闆建立的工程中,可以看到在netconfig頁面配網完成後會攜帶session_id、product_id、product_name跳轉到control子產品,如下圖所示:

【HarmonyOS Connect裝置開發-個人】1.抛除束縛,自定義裝置UI

control子產品主要做兩件事:

①定義控制ui

②處理裝置消息

ui是基于現有控件、彈窗等設計的,而非JS原始的元素;在ailife-view目錄下提供了dialog、control容器,開發者需要在src-main-rawfile目錄下進行聲明使用,如下圖:

├─control
│  └─ailife-view //該目錄無需修改
│      ├─control //控件容器
│      │  ├─display //資訊展示類控件
│      │  ├─enum //枚舉類控件
│      │  ├─increasedecrease //加減器控件
│      │  ├─item //顯示子元素
│      │  ├─multifunction //多功能控件
│      │  ├─progress //進度條控件
│      │  └─reversal //開關類控件
│      ├─customdisplay //自定義展示區
│      ├─dialog //彈窗容器
│      │  ├─dialogbox
│      │  ├─enumlist //枚舉彈窗
│      │  ├─info //資訊顯示彈窗
│      │  ├─picker //選擇器彈窗
│      │  └─radiolist //單選彈窗
│      ├─observed
│      └─utils
└─src
    └─main
        ├─java //該目錄下内容可見下方類定義
        ├─js
        │  └─default
        │      ├─common //該目錄下為本地資源檔案,主要都是用于顯示的圖示資源
        │      │  └─FAN
        │      │          ic_on.png
        │      │          ic_off.png
        │      │          ...
        │      └─pages
        │          └─index
        │                  index.js //起始js
        └─resources
            └─rawfile
                ├─FAN
                        FAN_en.json //本地英文模闆配置檔案
                        FAN_zh.json //本地中文模闆配置檔案
           
【HarmonyOS Connect裝置開發-個人】1.抛除束縛,自定義裝置UI

這樣不太靈活,如果我們想使用類web範式自定義UI可以麼? 當然可以,往後看。

1.2 删除control 子產品

在工程目錄中選中control,右鍵解除安裝,然後記得在檔案目錄中直接删除control檔案夾;同時在運作調試中移出control子產品。如下圖:

【HarmonyOS Connect裝置開發-個人】1.抛除束縛,自定義裝置UI
【HarmonyOS Connect裝置開發-個人】1.抛除束縛,自定義裝置UI

1.3 Entry子產品pages下建立jscontrol

為友善入門,使用低代碼方式建立頁面,後期轉為hml檔案。建立頁面命名為jscontrol,控制ui以及資料處理均在這個頁面完成,也就是說配網完成後跳轉到該頁面。具體操作如下:

【HarmonyOS Connect裝置開發-個人】1.抛除束縛,自定義裝置UI
【HarmonyOS Connect裝置開發-個人】1.抛除束縛,自定義裝置UI

在pages目錄下多了一個jscontrol頁面,這是我們想要的。你會得到一個HelloWorld頁面。擺脫了模闆提供的容器限制,空白畫布交給你,接下來可以随意展示才藝。

1.4 自定義風扇UI

低代碼開發UI比較簡單,針對本貼,我将在頁面中放一台風扇、一行Smart Fan文本、一個開關。記得把ui改為列布局。操作如下:

【HarmonyOS Connect裝置開發-個人】1.抛除束縛,自定義裝置UI
【HarmonyOS Connect裝置開發-個人】1.抛除束縛,自定義裝置UI

這是最簡潔的頁面組成了,開關用于控制裝置側,這個下一期具體實作。為了編寫更豐富的ui,你也可以轉換為hml檔案(不可逆操作)。操作如下:

【HarmonyOS Connect裝置開發-個人】1.抛除束縛,自定義裝置UI

轉換後,你将得到jscontrol頁面對應的css、hml檔案。記住紅圈中綁定的函數,将用于發送消息控制風扇開關。

【HarmonyOS Connect裝置開發-個人】1.抛除束縛,自定義裝置UI

這裡發現一個bug,低代碼開發ui,switch綁定change函數後,在js中并不會響應,轉換為hml檔案後,發現在change關鍵字前沒給加@符号,這應該是ui編輯器的bug。

1.5 設jscontrol為跳轉目标頁面

回到netconfis.js 的goToControl()函數下将原來的ability代碼注釋或删除,新添加一個頁面路由(需要在該js檔案引入:import router from '@system.router'),操作如下:

【HarmonyOS Connect裝置開發-個人】1.抛除束縛,自定義裝置UI

如此配網完成後将跳轉到我們的jscontrol頁面。

小結

這一節我們将模闆複雜的control子產品移除、建立的control ui,不會java也不必擔心碰一碰的實作。

本貼适合我這類APP開發小白;另外風扇的ui可以做得豐富些,如添加slider元件可以實作風扇不同轉速等。文章為了突出核心,力求簡潔。

繼續閱讀