鴻蒙HarmonyOS組件的分布式適配和應(yīng)用暢想
想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
https://harmonyos.51cto.com/#zz
1、開(kāi)發(fā)板是什么級(jí)別,類(lèi)似51單片機(jī),ESP8266或nanopi之類(lèi)?
答:本次直播抽獎(jiǎng)的WIFI Iot智能家居套件是可以運(yùn)行鴻蒙OS的開(kāi)發(fā)版套件,采用3861芯片。比51單片機(jī)的算力要強(qiáng)很多。
2、畫(huà)的組件有點(diǎn)擊或者觸摸事件?
答:?jiǎn)螕艋蛴|摸事件需要通過(guò)ClickListner和TouchEventListner實(shí)現(xiàn)。
3、老師,可以幫忙整理下代碼結(jié)構(gòu)和前后互掉邏輯嗎?謝謝🙏
答:可以的,我會(huì)近期理順以下發(fā)到51CTO論壇中。
4、和直接AI camera C++源碼控制的LCD顯示有什么聯(lián)系?
答:不好意思,這個(gè)問(wèn)題我暫時(shí)不太了解,不能夠給出準(zhǔn)確的回答。
5、DevEcoStudio里用js寫(xiě)的UI需要用自定義組件實(shí)現(xiàn)?
答:JS UI中也有很多預(yù)設(shè)的組件類(lèi)型可以直接使用,但是對(duì)于某些特別需求下也可以通過(guò)自定義組件來(lái)實(shí)現(xiàn)組件功能。
6、RoundProgressBar 可以實(shí)現(xiàn)點(diǎn)擊調(diào)整,或者拖動(dòng)調(diào)整嗎?
答:不可以的。
7、為什么鴻蒙FA要區(qū)分exampleAblity和exampleAbilitySlice兩個(gè)類(lèi),基于什么思路設(shè)計(jì)的?
答:Ablity和AbilitySlice是兩個(gè)概念,分別有點(diǎn)類(lèi)似于android中的Activity和Fragment,但是也并不完全一樣。同一個(gè)界面中,只能顯示1個(gè)AbilitySlice,而Fragment可以顯示多個(gè)。
Ability是鴻蒙應(yīng)用程序開(kāi)發(fā)的基本單元,這么設(shè)計(jì)是為了能夠?qū)⒐δ芟嚓P(guān)的界面組合在1個(gè)Ability之中,方便應(yīng)用程序在多個(gè)設(shè)備之間的互相調(diào)用。
8、控件自繪的流程和Vc 的gdi 是不是一樣的原理呢?
答:原理并不完全一樣,但是似乎也可以這么類(lèi)比,畢竟都需要高級(jí)的繪圖方法來(lái)繪制我們想要的界面功能。
9、鴻蒙的界面開(kāi)發(fā)和安卓,web的界面開(kāi)發(fā)有什么相同和不同的地方呢?
答:鴻蒙的UI開(kāi)發(fā)分為兩類(lèi):Java UI和JavaScript UI。Java UI與Android UI開(kāi)發(fā)非常類(lèi)似。JavaScript UI與Web界面開(kāi)發(fā)非常類(lèi)似。
從技術(shù)實(shí)現(xiàn)上,差別不大,但是仍然需要開(kāi)發(fā)者熟悉鴻蒙UI中各個(gè)組件的用法。
10、董老師好,請(qǐng)問(wèn)一下startAbility() 用到的ElementName 和 OperationBuilder 有什么區(qū)別?
答:通過(guò)ElementName 和OperationBuilder 都可以進(jìn)行Ability的跳轉(zhuǎn),只是ElementName 可以序列化,而OperationBuilder 不可以。
11、從你了解的看,南向和北向開(kāi)發(fā)聯(lián)調(diào)估計(jì)什么時(shí)候可以進(jìn)行?
答:這個(gè)估計(jì)還沒(méi)有確切的日期。
12、"從https://harmonyos.51cto.com/posts/2798下載的代碼無(wú)法運(yùn)行,提示* What went wrong:
Execution failed for task ':entry:preBuild'.
Check if 'storeFile' is configured correctly, it can't be null or empty.為啥?"
答:可以加將entry的build.gradle中的簽名部分刪除試一下。
這個(gè)問(wèn)題我已經(jīng)在上面的帖子中回復(fù)了,請(qǐng)查看哦。
13、對(duì)于有多年嵌入式C開(kāi)發(fā)基礎(chǔ),剛學(xué)習(xí)JAVA但是沒(méi)android基礎(chǔ)的開(kāi)發(fā)者,對(duì)于鴻蒙應(yīng)用開(kāi)發(fā)有什么建議和注意事項(xiàng)?
答:首先,應(yīng)當(dāng)學(xué)習(xí)好Java語(yǔ)言,因?yàn)楫吘购虲語(yǔ)言區(qū)別比較大(面向?qū)ο?。然后,可以適當(dāng)?shù)膶W(xué)習(xí)和參考Android一些資料,畢竟鴻蒙OS和Android在開(kāi)發(fā)上比較類(lèi)似。
14、鴻蒙應(yīng)用沙箱和安卓類(lèi)似,但是官方文檔沒(méi)有寫(xiě)如何通過(guò)類(lèi)似FileProvider來(lái)給其他應(yīng)用共享文件,現(xiàn)在訪問(wèn)SD卡的路徑都是沒(méi)有權(quán)限,無(wú)法直接通過(guò)文件路徑生成的uri訪問(wèn),請(qǐng)問(wèn)有沒(méi)有什么其他方法?
答:不好意思,這個(gè)問(wèn)題我暫時(shí)不太了解,不能夠給出準(zhǔn)確的回答。我近期研究一下,然后在51CTO論壇中給您回復(fù)。
15、是不是說(shuō)JS寫(xiě)界面,Java寫(xiě)邏輯,這種搭配設(shè)備的兼容性更好?
答:在一定層面上可以這么說(shuō)。例如在輕量化穿戴設(shè)備上,只能通過(guò)JS設(shè)計(jì)用戶(hù)界面,但是無(wú)法直接運(yùn)行Java的邏輯代碼。這時(shí)候可以通過(guò)分布式能力,遠(yuǎn)程調(diào)用手機(jī)等其他設(shè)備的Java邏輯代碼(Action)。
16、地圖可以集成各個(gè)地圖服務(wù)商的SDK嗎?如何來(lái)做
答:絕大多數(shù)的地圖服務(wù)商都是閉源的SDK,這種情況下并不能集成。但是多數(shù)服務(wù)商都通過(guò)切片的形式提供地圖接口,這樣的話我們就可以輕松調(diào)用這些地圖了。
17、鴻蒙的布局和組件相對(duì)安卓有哪些主要改進(jìn)和優(yōu)勢(shì)?對(duì)應(yīng)軟總線有哪些特色的布局和組件?
答:改進(jìn):提供了很多原子化布局能力和自適應(yīng)功能。例如,可以通過(guò)AdaptiveBoxLayout來(lái)進(jìn)行自適應(yīng)的布局,這一點(diǎn)非常有特色。
軟總線是底層技術(shù),不太涉及布局和組件的設(shè)計(jì)。
18、請(qǐng)問(wèn)Java和js在編程方法和應(yīng)用領(lǐng)域主要區(qū)別是什么?各自的優(yōu)勢(shì)如何?
答:Java提供了細(xì)粒度的UI接口,采用命令式編程范式,并且提供了最為豐富的API。JavaScript提供了高層UI描述,采用聲明式編程范式,目前其API較為有限。事實(shí)上,開(kāi)發(fā)者可以采用混合編程的方式,同時(shí)使用Java和JavaScript進(jìn)行應(yīng)用程序設(shè)計(jì)。例如,可以采用Java語(yǔ)言進(jìn)行功能類(lèi)模塊的編程,實(shí)現(xiàn)業(yè)務(wù)邏輯,使用JavaScript語(yǔ)言進(jìn)行界面編程,實(shí)現(xiàn)數(shù)據(jù)內(nèi)容的展示。
19、單純的程序員,弄出來(lái)的app很丑,鴻蒙控件有沒(méi)有提供幾套皮膚可以切換呢?比如,亮色的皮膚,暗色的皮膚。謝謝老師!
答:鴻蒙OS中是存在主題(Theme)功能的,但是目前其相關(guān)的API似乎并沒(méi)有完全公開(kāi),還需要各位開(kāi)發(fā)者等待。
20、老師你好,我想問(wèn)問(wèn)有沒(méi)有c應(yīng)用相關(guān)的課程,這個(gè)分布式是否局限于Java應(yīng)用
答:這里的C應(yīng)用指的是C語(yǔ)言開(kāi)發(fā)的應(yīng)用程序的。目前鴻蒙OS應(yīng)用程序開(kāi)發(fā)所能夠使用的語(yǔ)言為Java、JavaScript和C++。但是C++通常應(yīng)用在性能要求高的邏輯代碼中,不能夠設(shè)計(jì)用戶(hù)界面。
從UI層面,分布式能力不僅限于Java應(yīng)用,也支持JavaScript應(yīng)用。
21、董老師,我看qq群里面好多人都是想用js開(kāi)發(fā)app,是不是因?yàn)閖ava的控件庫(kù)數(shù)量少,而js控件庫(kù)數(shù)量豐富?
答:目前來(lái)看,Java和JavaScript都提供了基礎(chǔ)的組件(控件)庫(kù),但是好像數(shù)量都基本夠用但并不豐富。我覺(jué)得大家可以根據(jù)自己的知識(shí)結(jié)構(gòu)和喜好選擇Java和JS語(yǔ)言。不過(guò)JS語(yǔ)言的API目前并不全面,有些具體的功能還需要Java來(lái)實(shí)現(xiàn)。
22、董老師,鴻蒙開(kāi)發(fā)工具里面有沒(méi)有現(xiàn)成的一些控件庫(kù)使用?
答:在鴻蒙SDK中,提供了包含有文本、按鈕等常見(jiàn)的組件類(lèi),即比較基礎(chǔ)的組件(控件)庫(kù)。
23、老師有空給我們整個(gè)類(lèi)似安卓的mvp或者mvcm唄?
答:非常感謝,您的需求我已經(jīng)記下來(lái),以后有機(jī)會(huì)我會(huì)研究。
24、請(qǐng)問(wèn)我這的Text的沒(méi)有weight比重,只有text-weight,這是怎么回事?
答:weight比重只存在于當(dāng)這個(gè)組件處在定向布局(Directionallayout)的情況下。
25、發(fā)現(xiàn)官方的文檔里面例子都比較少,那么怎么把控件的屬性和基本用法了解清楚呢?好期待有那種根據(jù)上下文來(lái)展開(kāi)常用用法的插件提供。就像aiXcoder一樣的,在一個(gè)類(lèi)或方法上面顯示這個(gè)類(lèi)或方法的常用用法 。
答:目前關(guān)于鴻蒙OS開(kāi)發(fā)的資料較少,但是還是希望各位開(kāi)發(fā)者理解,這是因?yàn)轼櫭墒且粋€(gè)全新的系統(tǒng),許多資料還需要各位開(kāi)發(fā)者共同努力。目前,可以參考51CTO學(xué)院上的課程以及相關(guān)的文章,希望能對(duì)您有所幫助。
26、老師,這個(gè)課是有JavaScript基礎(chǔ)才能看懂么?分布式應(yīng)用是編好一段代碼,直接各種設(shè)備通用還是得對(duì)各設(shè)備專(zhuān)門(mén)編代碼,大概怎么適配?
答:這個(gè)課程主要介紹了Java UI,還沒(méi)有涉及到JavaScript UI。分布式應(yīng)用是各個(gè)設(shè)備通用的。分布式應(yīng)用可以包含多個(gè)HAP(harmonyOS Ability Package),不能的HAP可以對(duì)應(yīng)不同的設(shè)備類(lèi)型。在華為應(yīng)用商店分發(fā)應(yīng)用時(shí),是按需分發(fā)HAP的。
27、如果從頭學(xué)習(xí)Java代碼的話,需要學(xué)習(xí)到什么程度?
答:語(yǔ)言知識(shí)學(xué)的越多越好。最少需要掌握到面向?qū)ο蟮?個(gè)特征:封裝、繼承和多態(tài)。
但是,我當(dāng)時(shí)學(xué)習(xí)Android開(kāi)發(fā)時(shí),也僅僅學(xué)習(xí)了很少的Java知識(shí)。但是Java知識(shí)越多,可能會(huì)讓你充滿(mǎn)學(xué)習(xí)信心和興趣。
如果時(shí)間充裕,還是希望好好學(xué)習(xí)完Java再學(xué)習(xí)鴻蒙OS。
28、如果所有的軟件功能都打通了,軟件可以共享資源,比如地圖部分,每個(gè)軟件都調(diào)用相同的地圖組件,視頻部分,每個(gè)軟件也都調(diào)用相同的視頻軟件,會(huì)不會(huì)緩解軟件過(guò)于臃腫的問(wèn)題
具有分布式處理功能的軟件大小會(huì)不會(huì)比安卓系統(tǒng)的軟件大小還要大,目前軟件的體積都好臃腫
還有,這兩個(gè)設(shè)備上的軟件功能應(yīng)該也不一樣吧,軟件大小是不是也不一樣。但是如果依靠投屏或者分布式處理,是不是另外一個(gè)設(shè)別就不想需要安裝那個(gè)軟件了呢。
答:統(tǒng)一的操作系統(tǒng),但是不同設(shè)別之間的差別還是很大的,會(huì)針對(duì)不同的設(shè)備進(jìn)行軟件的新適配嗎。那一個(gè)軟件如果想在多種設(shè)備上運(yùn)行是不是還需要重新編寫(xiě)軟件的代碼
鴻蒙OS可以解決應(yīng)用程序臃腫的問(wèn)題。分布式應(yīng)用可以包含多個(gè)HAP(harmonyOS Ability Package),不同的HAP可以對(duì)應(yīng)不同的設(shè)備類(lèi)型。在華為應(yīng)用商店分發(fā)應(yīng)用時(shí),是按需分發(fā)HAP的。另外,還有一些HAP是在安裝的時(shí)候并不直接下載的,而是在需要的時(shí)候再進(jìn)行下載。
因此,在不同設(shè)備上安裝同一的軟件,其軟件的大小很有可能不一樣。不過(guò),即使鴻蒙OS有分布式能力,每一個(gè)運(yùn)行應(yīng)用程序的設(shè)備在運(yùn)行應(yīng)用程序之前還是需要從應(yīng)用市場(chǎng)上拉取安裝包的。
在鴻蒙SDK中,提供了許多組件本身是具有適配能力的。例如,可以通過(guò)AdaptiveBoxLayout來(lái)進(jìn)行自適應(yīng)的布局,這一點(diǎn)非常有特色。但是,在某些復(fù)雜需求的情況下,還是需要針對(duì)不同設(shè)備來(lái)重新設(shè)計(jì)UI界面的。
想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
https://harmonyos.51cto.com/#zz


























