近日,華為推出了鴻蒙App的開發工具DevEco Studio 2.0,本人嘗試在官網下載了該軟體,不得不說,還是下載自家的開發工具速度快,學校網速達到40m/s。大家可以自行去網上查詢DevEco Studio的安裝教程,一方面可能是因為該軟體簡直就是傻瓜式安裝,非常簡單,另一方面是因為下載SDK等速度非常快,本人之前已經受夠了Andord studio的龜速。話不多說,我們參照官網教程開始執行第一個鴻蒙APP頁面:
本文采用XML佈局:
建立layout資料夾:entry > src > main > resources > base建立“main_layout.xml”<?xml version="1.0" encoding="utf-8"?><DependentLayout xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:width="match_parent" ohos:height="match_parent" ohos:background_element="#000000"> <Text ohos:id="$+id:text" ohos:width="match_content" ohos:height="match_content" ohos:center_in_parent="true" ohos:text="Hello World" ohos:text_color="white" ohos:text_size="32fp"/> <Button ohos:id="$+id:button" ohos:width="match_content" ohos:height="match_content" ohos:text_size="19fp" ohos:text="Next" ohos:top_padding="8vp" ohos:bottom_padding="8vp" ohos:right_padding="80vp" ohos:left_padding="80vp" ohos:text_color="white" ohos:background_element="$graphic:button_element" ohos:center_in_parent="true" ohos:align_parent_bottom="true"/></DependentLayout>
建立背景元素:在entry > src > main > resources > base下建立graphic資料夾,新增button_element.xml檔案package com.example.myapplication.slice; import com.example.myapplication.ResourceTable;import ohos.aafwk.ability.AbilitySlice;import ohos.aafwk.content.Intent; public class MainAbilitySlice extends AbilitySlice { @Override public void onStart(Intent intent) { super.onStart(intent); super.setUIContent(ResourceTable.Layout_main_layout); // 載入XML佈局 } @Override public void onActive() { super.onActive(); } @Override public void onForeground(Intent intent) { super.onForeground(intent); }}
4、開啟主程式路徑entry > src > main > java > com.example.helloworld > slice,本人的主程式路徑是entry > src > main > java >cn.edu.cau.myappdemo>slice,請記住cn.edu.cau.myappdemo,很重要。開啟其目錄下的MainAbilitySlice,重寫onStart方法:
public class MainAbilitySlice extends AbilitySlice { private DirectionalLayout myLayout = new DirectionalLayout(this); @Override public void onStart(Intent intent) { super.onStart(intent); super.setUIContent(ResourceTable.Layout_main_layout); // 載入XML佈局 } @Override public void onActive() { super.onActive(); } @Override public void onForeground(Intent intent) { super.onForeground(intent); }}
注意,寫到這裡,您可能會發現Layout_main_layout是標紅的,如下圖。如果此時執行程式,會出現錯誤,提示“錯誤: 找不到符號 符號: 變數 Layout_main_layout 位置: 類 ResourceTable”,檢視官方文件也沒有相關解決辦法。
其實,該錯誤在android中也經常遇到。如果您熟悉android開發的話,這類錯誤您一眼就能看出端倪。這裡的ResourceTable就相當於android中的R檔案,為現有資源生成並存儲一個全域性唯一的對映ID。Layout_main_layout標紅是因為ResourceTable中未定義Layout_main_layout的ID,而明明已經寫了main_layout.xml,為什麼沒有,這就好比兩個都叫張三的人,一個在初三1班,一個在初三2班,本來有人要找初三2班的張三幹仗,結果把初三1班的張三幹了一頓,找錯人了。
回到本文,大家仔細看一下ResourceTable的引用路徑:
import ohos.global.systemres.ResourceTable;
這明顯是系統引用路徑,而不是我現在建立的cn.edu.cau.myappdemo中ResourceTable,所以解決辦法為刪除全域性引用路徑,將游標定位到ResourceTable處,按住快捷鍵Alt+Enter,即可匯入當前的Resource路徑:
import cn.edu.cau.myappdemo.ResourceTable;
此時,ResourceTable.Layout_main_layout恢復正常。
再次執行,程式成功執行,如下圖:
後記:
體驗完DevEco Studio 2.0,不由得感慨,終於有一款能夠比肩android studio的中中國人開發的神器,DevEco可採用java,JS開發,與android非常相似,非常容易上手。並且,模擬器啟動速度很快,也不怎麼佔記憶體,比android好上一萬倍。此外,還是下載速度很快,可能是因為在國內的原因。雖然該工具目前僅支援TV,Watch等裝置,暫不支援手機,但我相信,支援手機開發在不久的將來一定會實現,而且做的比android還好。祝福華為!!!