0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心
发布
  • 发文章

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动

完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>

3天内不再提示

鸿蒙开发中库的调用

OpenHarmony技术社区 来源:OpenHarmony技术社区 2023-03-26 18:01 次阅读

Codelabs 上有不少学习的案例,这次学习的是库的调用(ArkTS)案例。学习笔记拆成两部分,本文是关于社区库调用的学习笔记,以下我的学习心得,小白们也可以跟着一步步实现吖。

本次学习的案例由主页面、本地库组件页面、社区库组件页面三个页面组成,主页面由 Navigation 作为根组件实现全局标题,由 Tabs 组件实现本地库和社区库页面的切换。

效果如下:

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

软件要求:

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

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

概念知识

Tabs:一种可以通过页签进行内容视图切换的容器组件,每个页签对应一个内容视图。

Canvas:画布组件,用于自定义绘制图形。

以上这两个组件在以往的文章也有提及过啦,于此着重学习两个新的知识点:

Navigation:一般作为 Page 页面的根容器,通过属性设置来展示页面的标题、工具栏、菜单。

https://developer.harmonyos.com/cn/docs/documentation/doc-references/ts-basic-components-navigation-0000001333800549?ha_linker=eyJ0cyI6MTY3ODM2NzAyODQ1OSwiaWQiOiI4ZDBkZTMzZjU1MzY0NDRlYjZkYTQ5MjM1MzcwMjEzZiJ9
HarmonyOS npm 包:在传统的 npm 三方包的基础上,定义了 HarmonyOS npm 共享包特定的工程结构和配置文件,支持 HarmonyOS 页面组件、相关 API、资源的调用。
https://developer.harmonyos.com/cn/docs/documentation/doc-guides/creating_har_api8-0000001341502357?ha_linker=eyJ0cyI6MTY3ODM2NzA4OTk3NSwiaWQiOiI4ZDBkZTMzZjU1MzY0NDRlYjZkYTQ5MjM1MzcwMjEzZiJ9

创建项目

如下图:

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

社区库调用

①设置依赖

社区库是指已经由贡献者上架到 npm 中心供其他开发者下载使用的库,调用这类库的步骤如下:

首先需要设置 HarmonyOS npm 三方包的仓库信息,在DevEco Studio 的 Terminal 窗口执行如下命令进行设置:

npmconfigset@ohos:registry=https://repo.harmonyos.com/npm/
然后通过如下两种方式设置 HarmonyOS npm 三方包依赖信息(下面步骤以 @ohos/lottieETS 三方库为例,其他库替换对应库的名字及版本号即可):

方式一:在 Terminal 窗口中,执行如下命令安装 HarmonyOS npm 三方包,DevEco Studio 会自动在工程的 package.json 中自动添加三方包依赖。

npminstall@ohos/lottieETS--save

方式二:在工程的 package.json 中设置 HarmonyOS npm 三方包依赖,配置示例如下:

"dependencies":{

"@ohos/lottieETS":"^1.0.2"

}
依赖设置完成后,需要执行 npm install 命令安装依赖包,依赖包会存储在工程的 node_modules 目录下。 9712c434-cbb1-11ed-bfe3-dac502259ad0.png

②引入配置的社区库,并实现对社区库动画的调用

首先在如图路径,创建动画的数据文件 data.json: 97254da2-cbb1-11ed-bfe3-dac502259ad0.png 接着在 pages 目录下创建文件 Outer.ets 用于引用社区库动画,主要代码如下。

通过 import 的方式引入配置的社区库,设置画布,用于展示动画:

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();
}
下图为该社区库的一些 api 接口说明截图,在 node_modules 下的 index.d.ts 文件里。 972f4f3c-cbb1-11ed-bfe3-dac502259ad0.png

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

调用的主要代码:

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("库的调用")
.fontColor(Color.Black)
.lineHeight("33vp")
.fontSize('24fp')
.fontWeight(FontWeight.Bold)
}
.height('56vp')
.justifyContent(FlexAlign.Center)
}

@BuilderTabBuilder(index:number){
Column(){
Column(){
Text(index===0?"本地调用":"社区调用")
.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")
}
}

  • 鸿蒙
    +关注

    关注

    50

    文章

    930

    浏览量

    39937
  • OpenHarmony
    +关注

    关注

    19

    文章

    1966

    浏览量

    14415
收藏 人收藏

    评论

    相关推荐

    鸿蒙开发AI应用(汇总)连载

    开发板程序烧录的功能...4. 用鸿蒙开发AI应用方案(四)Helloworld本篇编写了第一个鸿蒙程序,讲述了从源码到,从到组件,再从组件到应用,最后进入OHOS系统执行的整个流程
    发表于 01-13 15:03

    鸿蒙应用开发入门资料合集

    的HiLog日志工具的具体使用方法。5、鸿蒙应用开发入门资料五:页面间跳转认识IntentIntent是对象之间传递信息的载体。例如,当一个Ability需要启动另一个Ability时,或者一个
    发表于 03-22 11:23

    鸿蒙有没有开源资源包可以进行系统调用

    开发 APP 的首页时,需要实现一个“导航栏”的功能。但是,安卓系统 APP 的实现(BottomNavigationView 控件)在Java ,认为自己无法实现,BottomNavigationView 这个控件实现的方式比较复杂,鸿蒙有没有开源资源包可以进行系统调用
    发表于 04-28 11:46

    Arduino直接调用没有原复杂调用有用的数据

    直接调用没有原复杂调用有用的数据免费下载。
    发表于 03-04 08:00 5次下载

    开发鸿蒙应用使用的ButtonProgressBar下载按钮进度条

    从github fork过来,主要将底层接口调用的实现修改成鸿蒙接口的实现,将三方鸿蒙化,供开发鸿蒙应用的开发者使用。 ButtonProgressBar一个下载按钮进度条 原项目
    发表于 03-18 14:37 1次下载

    将底层接口调用实现成鸿蒙接口的循环音乐进度条

    从github fork过来,主要将底层接口调用的实现修改成鸿蒙接口的实现,将三方鸿蒙化,供开发鸿蒙应用的开发者使用。 描述 项目移植状态:支持组件所有基本功能 完成度:100%
    发表于 03-24 13:51 3次下载

    鸿蒙开发者使用的多卡菜单安装方式

    从github fork过来,主要将底层接口调用的实现修改成鸿蒙接口的实现,将三方鸿蒙化,供开发鸿蒙应用的开发者使用。 项目移植状态:支持组件所有基本功能 完成度:100% 调用差异
    发表于 03-25 11:17 1次下载

    开发鸿蒙开发者使用的日期选择器

    从github fork过来,主要将底层接口调用的实现修改成鸿蒙接口的实现,将三方鸿蒙化,供开发鸿蒙应用的开发者使用。 DatePicker 是一个日期选择器 项目移植状态:支持组件
    发表于 03-28 10:44 1次下载

    鸿蒙应用开发者使用的计数动画文本视图

    从github fork过来,主要将底层接口调用的实现修改成鸿蒙接口的实现,将三方鸿蒙化,供开发鸿蒙应用的开发者使用 计数动画文本视图是一个很小的使对Text的动画计数变得非常容易
    发表于 03-29 10:38 0次下载

    开发鸿蒙开发者使用的自定义滚轮类控件

    从github fork过来,主要将底层接口调用的实现修改成鸿蒙接口的实现,将三方鸿蒙化,供开发鸿蒙应用的开发者使用。 一个自定义的滚轮类控件,样式简洁。 项目移植状态:支持组件所有
    发表于 03-30 11:38 0次下载

    鸿蒙应用开发者使用的精美图表控件

    从github fork过来,主要将底层接口调用的实现修改成鸿蒙接口的实现,将三方鸿蒙化,供开发鸿蒙应用的开发者使用 EazeGraph是一个用于创建精美图表。它的主要目标是创建一个轻量级的,该
    发表于 04-01 10:31 1次下载

    鸿蒙开发者使用的计数动画文本视图

    从github fork过来,主要将底层接口调用的实现修改成鸿蒙接口的实现,将三方鸿蒙化,供开发鸿蒙应用的开发者使用。 计数动画文本视图一个很小的使对Text的动画计数变得非常容易。 项目移植状态:支持组件所有基本功能
    发表于 04-02 14:26 1次下载

    java上位机开发(c调用)

    调用。此外,由于c/c++可以直接控制硬件,可以直接加速算法的执 行,所以作为上位机
    发表于 05-09 10:00 0次下载
    java上位机<b>开发</b>(c<b>库</b><b>调用</b>)

    鸿蒙的数据知识点学习

    开发,数据存储是非常重要的,鸿蒙也不例外,说到数据存储,首要的就是数据了,数据的存储机制是否完善,提供的功能是否简单方便,直接影响开发者的开发速度和性能。 作为鸿蒙开发者,最近就深入学习了
    的头像 发表于 09-06 09:34 2123次阅读

    鸿蒙开发怎么引入第三方

    调用的,那么鸿蒙应用开发是如何与第三方衔接的呢? 加载一张图片是每个应用所需的功能,在 Android 平台提供的有 Glide、ImageLoader
    的头像 发表于 10-11 14:11 2336次阅读

    下载硬声App