0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙開發(fā)中庫的調(diào)用

OpenHarmony技術(shù)社區(qū) ? 來源:OpenHarmony技術(shù)社區(qū) ? 2023-03-26 18:01 ? 次閱讀

Codelabs 上有不少學(xué)習(xí)的案例,這次學(xué)習(xí)的是庫的調(diào)用(ArkTS)案例。學(xué)習(xí)筆記拆成兩部分,本文是關(guān)于社區(qū)庫調(diào)用的學(xué)習(xí)筆記,以下我的學(xué)習(xí)心得,小白們也可以跟著一步步實現(xiàn)吖。

本次學(xué)習(xí)的案例由主頁面、本地庫組件頁面、社區(qū)庫組件頁面三個頁面組成,主頁面由 Navigation 作為根組件實現(xiàn)全局標題,由 Tabs 組件實現(xiàn)本地庫和社區(qū)庫頁面的切換。

效果如下:

96aec042-cbb1-11ed-bfe3-dac502259ad0.gif

軟件要求:

DevEco Studio 版本:DevEco Studio 3.1 Beta1 及以上版本

HarmonyOS SDK 版本:API version 9 及以上版本

概念知識

Tabs:一種可以通過頁簽進行內(nèi)容視圖切換的容器組件,每個頁簽對應(yīng)一個內(nèi)容視圖。

Canvas:畫布組件,用于自定義繪制圖形。

以上這兩個組件在以往的文章也有提及過啦,于此著重學(xué)習(xí)兩個新的知識點:

Navigation:一般作為 Page 頁面的根容器,通過屬性設(shè)置來展示頁面的標題、工具欄、菜單。

https://developer.harmonyos.com/cn/docs/documentation/doc-references/ts-basic-components-navigation-0000001333800549?ha_linker=eyJ0cyI6MTY3ODM2NzAyODQ1OSwiaWQiOiI4ZDBkZTMzZjU1MzY0NDRlYjZkYTQ5MjM1MzcwMjEzZiJ9
HarmonyOS npm 包:在傳統(tǒng)的 npm 三方包的基礎(chǔ)上,定義了 HarmonyOS npm 共享包特定的工程結(jié)構(gòu)和配置文件,支持 HarmonyOS 頁面組件、相關(guān) API、資源的調(diào)用。
https://developer.harmonyos.com/cn/docs/documentation/doc-guides/creating_har_api8-0000001341502357?ha_linker=eyJ0cyI6MTY3ODM2NzA4OTk3NSwiaWQiOiI4ZDBkZTMzZjU1MzY0NDRlYjZkYTQ5MjM1MzcwMjEzZiJ9

創(chuàng)建項目

如下圖:

96f0daa4-cbb1-11ed-bfe3-dac502259ad0.png

社區(qū)庫調(diào)用

①設(shè)置依賴

社區(qū)庫是指已經(jīng)由貢獻者上架到 npm 中心供其他開發(fā)者下載使用的庫,調(diào)用這類庫的步驟如下:

首先需要設(shè)置 HarmonyOS npm 三方包的倉庫信息,在DevEco Studio 的 Terminal 窗口執(zhí)行如下命令進行設(shè)置:

npmconfigset@ohos:registry=https://repo.harmonyos.com/npm/
然后通過如下兩種方式設(shè)置 HarmonyOS npm 三方包依賴信息(下面步驟以 @ohos/lottieETS 三方庫為例,其他庫替換對應(yīng)庫的名字及版本號即可):

方式一:在 Terminal 窗口中,執(zhí)行如下命令安裝 HarmonyOS npm 三方包,DevEco Studio 會自動在工程的 package.json 中自動添加三方包依賴。

npminstall@ohos/lottieETS--save

方式二:在工程的 package.json 中設(shè)置 HarmonyOS npm 三方包依賴,配置示例如下:

"dependencies":{

"@ohos/lottieETS":"^1.0.2"

}
依賴設(shè)置完成后,需要執(zhí)行 npm install 命令安裝依賴包,依賴包會存儲在工程的 node_modules 目錄下。 9712c434-cbb1-11ed-bfe3-dac502259ad0.png

②引入配置的社區(qū)庫,并實現(xiàn)對社區(qū)庫動畫的調(diào)用

首先在如圖路徑,創(chuàng)建動畫的數(shù)據(jù)文件 data.json: 97254da2-cbb1-11ed-bfe3-dac502259ad0.png 接著在 pages 目錄下創(chuàng)建文件 Outer.ets 用于引用社區(qū)庫動畫,主要代碼如下。

通過 import 的方式引入配置的社區(qū)庫,設(shè)置畫布,用于展示動畫:

importlottiefrom'@ohos/lottieETS';

@Component
exportstructOuter{
privaterenderingSettings:RenderingContextSettings=newRenderingContextSettings(true);
privaterenderingContext:CanvasRenderingContext2D=newCanvasRenderingContext2D(this.renderingSettings);
privateanimateName:string='data';
privateanimateItem:any=null;
@StatecanvasTitle:string='';

aboutToDisappear():void{
lottie.destroy();
}

onPageShow():void{
lottie.play();
}

onPageHide():void{
lottie.pause();
}
下圖為該社區(qū)庫的一些 api 接口說明截圖,在 node_modules 下的 index.d.ts 文件里。 972f4f3c-cbb1-11ed-bfe3-dac502259ad0.png

973fc664-cbb1-11ed-bfe3-dac502259ad0.png

調(diào)用的主要代碼:

Column(){
Canvas(this.renderingContext)
.width('100%')
.aspectRatio(1.76)
.backgroundImage($r('app.media.canvasBg'))
.backgroundImageSize(ImageSize.Cover)
.onDisAppear(()=>{
lottie.destroy(this.animateName);
})

Column({space:12}){
Button(){
Text('加載動畫')
.fontSize('16fp')
.fontColor("#007DFF")
.fontWeight(FontWeight.Bold)
}
.width('100%')
.height('40vp')
.backgroundColor("#dedbdb")
.onClick(()=>{
this.canvasTitle="加載動畫";
this.animateItem=lottie.loadAnimation({
container:this.renderingContext,
renderer:'canvas',
loop:10,
autoplay:true,
name:this.animateName,
path:'common/lottie/data.json'
});
})

最后在主頁面通過 navigation 組件,引用 Outer 組件,代碼如下:

import{Outer}from'./Outer';
@Entry
@Component
structIndex{
privatecontroller:TabsController=newTabsController();
@StatecurrentIndex:number=0;

@BuilderNavigationTitle(){
Column(){
Text("庫的調(diào)用")
.fontColor(Color.Black)
.lineHeight("33vp")
.fontSize('24fp')
.fontWeight(FontWeight.Bold)
}
.height('56vp')
.justifyContent(FlexAlign.Center)
}

@BuilderTabBuilder(index:number){
Column(){
Column(){
Text(index===0?"本地調(diào)用":"社區(qū)調(diào)用")
.fontColor(this.currentIndex===index?"#007dff":"#182431")
.fontSize('16fp')
}
.height('100%')
.justifyContent(FlexAlign.Center)
.border(this.currentIndex===index
?{width:{bottom:'1vp'},color:"#007DFF"}
:{}
)
}
.height('56vp')
.padding({top:'10vp',bottom:'10vp'})
.justifyContent(FlexAlign.Center)
}

build(){
Column(){
Navigation(){
Tabs({barPosition:BarPosition.Start,controller:this.controller}){
TabContent(){
//Inner()
}.tabBar(this.TabBuilder(0))

TabContent(){
Outer()
}.tabBar(this.TabBuilder(1))
}
.barWidth('80%')
.barHeight('56vp')
.onChange((index:number)=>{
this.currentIndex=index;
})
}
.title(this.NavigationTitle)
.hideBackButton(true)
.titleMode(NavigationTitleMode.Mini)
}
.backgroundColor("#F1F3F5")
}
}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2287

    瀏覽量

    42629
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3607

    瀏覽量

    15956

原文標題:鴻蒙開發(fā)中庫的調(diào)用

文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    鴻蒙OS開發(fā)學(xué)習(xí):【第三方調(diào)用

    在Stage模型,如何調(diào)用已經(jīng)上架到[三方中心]的社區(qū)和項目內(nèi)創(chuàng)建的本地。
    的頭像 發(fā)表于 04-14 11:34 ?825次閱讀
    <b class='flag-5'>鴻蒙</b>OS<b class='flag-5'>開發(fā)</b>學(xué)習(xí):【第三方<b class='flag-5'>庫</b><b class='flag-5'>調(diào)用</b>】

    如何在函數(shù)調(diào)用指令?

    函數(shù)是一段可復(fù)用的代碼。我們通常把重復(fù)的代碼放進函數(shù)并且在不同的地方去調(diào)用它。是函數(shù)的集合。我們可以在庫定義經(jīng)常使用的函數(shù),這樣其它腳本便可以不再重復(fù)代碼而使用這些函數(shù)。
    的頭像 發(fā)表于 08-31 15:51 ?3742次閱讀

    Arduino直接調(diào)用沒有原復(fù)雜調(diào)用有用的數(shù)據(jù)

    本文檔的主要內(nèi)容詳細介紹的是Arduino直接調(diào)用沒有原復(fù)雜調(diào)用有用的數(shù)據(jù)免費下載。
    發(fā)表于 03-04 08:00 ?5次下載

    鴻蒙的數(shù)據(jù)知識點學(xué)習(xí)

    移動端開發(fā),數(shù)據(jù)存儲是非常重要的,鴻蒙也不例外,說到數(shù)據(jù)存儲,首要的就是數(shù)據(jù)了,數(shù)據(jù)的存儲機制是否完善,提供的功能是否簡單方便,直接影響開發(fā)
    的頭像 發(fā)表于 09-06 09:34 ?3073次閱讀

    鴻蒙開發(fā)怎么引入第三方

    多個 API 外也是支持組件調(diào)用的,那么鴻蒙應(yīng)用開發(fā)是如何與第三方銜接的呢? 加載一張圖片是每個應(yīng)用所需的功能,在 Android
    的頭像 發(fā)表于 10-11 14:11 ?3925次閱讀

    開發(fā)鴻蒙應(yīng)用使用的ButtonProgressBar下載按鈕進度條

    該三方開源從github fork過來,主要將底層接口調(diào)用的實現(xiàn)修改成鴻蒙接口的實現(xiàn),將三方鴻蒙化,供
    發(fā)表于 03-18 14:37 ?1次下載

    將底層接口調(diào)用實現(xiàn)成鴻蒙接口的循環(huán)音樂進度條

    該三方開源從github fork過來,主要將底層接口調(diào)用的實現(xiàn)修改成鴻蒙接口的實現(xiàn),將三方鴻蒙化,供
    發(fā)表于 03-24 13:51 ?3次下載

    鴻蒙開發(fā)者使用的多卡菜單安裝方式

    該三方開源從github fork過來,主要將底層接口調(diào)用的實現(xiàn)修改成鴻蒙接口的實現(xiàn),將三方鴻蒙化,供
    發(fā)表于 03-25 11:17 ?1次下載

    開發(fā)鴻蒙開發(fā)者使用的日期選擇器

    該三方開源從github fork過來,主要將底層接口調(diào)用的實現(xiàn)修改成鴻蒙接口的實現(xiàn),將三方鴻蒙化,供
    發(fā)表于 03-28 10:44 ?1次下載

    鴻蒙應(yīng)用開發(fā)者使用的計數(shù)動畫文本視圖

    該三方開源從github fork過來,主要將底層接口調(diào)用的實現(xiàn)修改成鴻蒙接口的實現(xiàn),將三方鴻蒙化,供
    發(fā)表于 03-29 10:38 ?0次下載

    開發(fā)鴻蒙開發(fā)者使用的自定義滾輪類控件

    該三方開源從github fork過來,主要將底層接口調(diào)用的實現(xiàn)修改成鴻蒙接口的實現(xiàn),將三方鴻蒙化,供
    發(fā)表于 03-30 11:38 ?0次下載

    鴻蒙應(yīng)用開發(fā)者使用的精美圖表控件

    該三方開源從github fork過來,主要將底層接口調(diào)用的實現(xiàn)修改成鴻蒙接口的實現(xiàn),將三方鴻蒙化,供
    發(fā)表于 04-01 10:31 ?1次下載

    鴻蒙開發(fā)者使用的計數(shù)動畫文本視圖

    該三方開源從github fork過來,主要將底層接口調(diào)用的實現(xiàn)修改成鴻蒙接口的實現(xiàn),將三方鴻蒙化,供
    發(fā)表于 04-02 14:26 ?1次下載

    java上位機開發(fā)(c調(diào)用)

    可以調(diào)用。此外,由于c/c++可以直接控制硬件,可以直接加速算法的執(zhí) 行,所以作為上位機開發(fā)的同學(xué)來說,掌握好c調(diào)用也是很有必要的。
    發(fā)表于 05-09 10:00 ?0次下載
    java上位機<b class='flag-5'>開發(fā)</b>(c<b class='flag-5'>庫</b><b class='flag-5'>調(diào)用</b>)

    鴻蒙實戰(zhàn)開發(fā):【相機和媒體

    在ArkTS調(diào)用相機拍照和錄像,以及如何使用媒體接口進行媒體文件的增、刪、改、查操作。本示例用到了
    的頭像 發(fā)表于 03-20 16:36 ?685次閱讀
    <b class='flag-5'>鴻蒙</b>實戰(zhàn)<b class='flag-5'>開發(fā)</b>:【相機和媒體<b class='flag-5'>庫</b>】