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

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

3天内不再提示

鸿蒙开发中怎么引入第三方库

OpenHarmony技术社区 来源:鸿蒙技术社区 作者:即构忠武 2021-10-11 14:11 次阅读

Android 发展到现在不仅提供了很多 API,还提供了很多第三方库。这降低了我们开发者的开发难度,提升了开发效率,让应用开发更加的简单高效。

众所周知,HarmonyOS 除了提供 16000 多个 API 外也是支持组件库的调用的,那么鸿蒙应用开发是如何与第三方库衔接的呢?

加载一张图片是每个应用所需的功能,在 Android 平台提供的有 Glide、ImageLoader、Picasso,其中 Glide 最被开发者熟知,所以我就以 Glide 作为例子验证在 HarmonyOS 开发中如何使用图片加载库。

组件库(Glide)的依赖方式

HarmonyOS 应用开发提供了三种常用的组件库引入方式,以下的三种依赖方式都是在 build.grade 中操作。

①Maven 仓的依赖方式

以下验证过程的图片加载库 Glide 采用的就是这种方式。

步骤一:

allprojects{
repositories{
maven{
url'https://repo.huaweicloud.com/repository/maven/'
}
jcenter()
mavenCentral()
}
}

步骤二:

dependencies{
implementationfileTree(dir:'libs',include:['*.jar','*.har'])
implementation'io.openharmony.tpc.thirdlib1.1.2'
}

②Module 的依赖方式

如下:
dependencies{
implementationfileTree(dir:'libs',include:['*.jar','*.har'])
implementationproject(path:':glidelibrary')
}

如果在 setting.gradle 没有对该 glidelibrary 的配置,就要手动添加,如下。

include':entry',':glidelibrary'

③Har 包的依赖方式

如下:
dependencies{
implementationfileTree(dir:'libs',include:['*.jar','*.har'])
}

组件库(Glide)的使用

①配置

在开发前需要在 config.json 中做好配置的工作。

允许 HTTP 的请求:

"deviceConfig":{
"default":{
"network":{
"cleartextTraffic":true
}
}
}

网络权限的设置:

"module":{
"reqPermissions":[
{
"name":"ohos.permission.INTERNET"
}
]
}

②加载图片

图片的来源可以是网络的图片、也可以是项目文件的图片。两种方式的加载方式如下,加载的图片来源于网络 load() 的选择 imagePath,本地图片就选择 imageResourceId。

调用方式:

Imageimage=(Image)findComponentById(ResourceTable.Id_img);
//LoadImagefromInternet(图片来源于即构官网的网络图)
StringimagePath="https://www.zego.im/_nuxt/img/53992d2.png";
//LoadImagefromResourceFolder(本地图片)
intimageResourceId=ResourceTable.Media_zego_img;
Glide.with(this)
.load(imagePath)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true)
.into(image);

③加载 GIF 动图

加载的 GIF 图可以是网络图片,也可以说本地图片。

调用方式:

DraweeViewdraweeView=(DraweeView)findComponentById(ResourceTable.Id_draweeView);
StringimagePath="loadgiffromnetwork";
intimageResourceId="loadgiffromnative";
Glide.with(this)
.asGif()
.load(imageResourceId)
.into(draweeView);

HarmonyOS 的 Image 不支持 gif 的加载,因为 Image 和 Element 是独立的,不能使用 Element 重绘。

所以 Glide 要使用 gif 的能力就要使用 DraweeView。

"$+id:draweeView"
ohos:height="180vp"
ohos:width="180vp"
ohos:layout_alignment="center"/>

因为加载 gif 的过程,对系统的性能消耗是非常大的,所以在使用完的时候要及时释放资源,防止内存泄漏。

@Override
protectedvoidonBackground(){
super.onBackground();
draweeView.stopGif();
}

④加载圆角图片

加载圆角图片,把圆角 raduis 传进来,就可以绘制圆角度。

publicclassGlideRoundTransformextendsBitmapTransformation{

privatestaticfloatradius=0f;

publicGlideRoundTransform(Contextcontext){
this(context,0);
}

publicGlideRoundTransform(Contextcontext,intdp){
super();
this.radius=dp;
}

@Override
protectedPixelMaptransform(@NonNlsBitmapPoolpool,@NonNlsPixelMaptoTransform,intoutWidth,intoutHeight){
intwidth=toTransform.getImageInfo().size.width;
intheight=toTransform.getImageInfo().size.height;

PixelFormatconfig=
toTransform.getImageInfo()!=null?toTransform.getImageInfo().pixelFormat:PixelFormat.ARGB_8888;
PixelMapbitmap=pool.get(width,height,config);

setCanvasBitmapDensity(toTransform,bitmap);

Canvascanvas=newCanvas(newTexture(bitmap));
canvas.drawPixelMapHolderRoundRectShape(newPixelMapHolder(toTransform),newRectFloat(0,0,width,height),newRectFloat(0,0,width,height),radius,radius);
returnbitmap;
}

@Override
publicvoidupdateDiskCacheKey(MessageDigestmessageDigest){

}

}

调用方式:

Imageimage=(Image)findComponentById(ResourceTable.Id_img);
RequestOptionsmyOptions=newRequestOptions().transform(newGlideRoundTransform(getContext(),30));
Glide.with(this)
.load(ResourceTable.Media_zego_img_round)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true)
.fitCenter()
.apply(myOptions)
.into(image);

总结

通过对 Glide 的引入过程与实现过程,跟 Android 第三方库引入与图片加载没有很大的区别。举一反三,我们可以很轻松的引入其他的组件库,也可以通过 Glide 实现其他的图片加载效果。
编辑:jq
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Android
    +关注

    关注

    12

    文章

    3851

    浏览量

    125635
  • API
    API
    +关注

    关注

    2

    文章

    1381

    浏览量

    60988
  • GIF
    GIF
    +关注

    关注

    0

    文章

    23

    浏览量

    6466
  • HarmonyOS
    +关注

    关注

    79

    文章

    1814

    浏览量

    29256

原文标题:鸿蒙开发中如何引入第三方库?

文章出处:【微信号:gh_834c4b3d87fe,微信公众号:OpenHarmony技术社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Labview如何内嵌操作第三方EXE程序!

    自己在网上搜了下相关资料,能把第三方EXE内嵌进入容器里,但是有个问题,这个第三方软件必须手动拖到容器正中间,手动最大化。请问有什么方法可以自动实现吗? 下图是我内嵌的POLL 软件。如图!
    发表于 04-18 14:26

    微软或将引入第三方数字游戏商店至Xbox平台

    微软选择引入这些第三方游戏平台,一方面可以增加自身拥有的硬件资源和服务优势;另一方面,也是为了吸引那些在电脑端能够自由选择游戏购买渠道的游戏用户。据悉,此前的Xbox系列产品都是只内置自家的商城。
    的头像 发表于 03-27 15:51 110次阅读

    stm32H743IIT6串口2跟第三方设备通讯,不插USB就通讯不了怎么解决?

    stm32H743IIT6串口2跟第三方设备通讯。插上USB就可以通讯,不插USB就通讯不了,有没有大神帮忙解决下
    发表于 03-22 06:42

    Meta Quest头显将支持多款安卓第三方应用并行

    Meta已悄然启动了与此相关的功能,意味着Quest头显可同时操作多个第三方Android应用。在此之前,Quest对第三方Android应用有严格限制,用户每次仅能打开一个,无法实现同屏幕并行多个第三方应用进程。
    的头像 发表于 03-11 10:58 215次阅读

    使用cubemx 生成usb驱动和配置第三方fatfs,fread读取大于100k的文件,会超时的原因?

    使用cubemx 生成usb驱动和配置第三方fatfs,打开文件没有报错,使用fread读取文件的时候大于100k的文件,会读超时,小于100k正常读完,为什么
    发表于 03-07 06:35

    【飞腾派4G版免费试用】关于物联网和原生开发

    的设备代码,但是开发环境却默认不带。 二、第三方及挂载使用 鸿蒙这方面做的很好。关于第三方
    发表于 12-29 14:37

    python第三方库有哪些

    Python 作为一门功能强大的编程语言,拥有丰富的第三方库,几乎覆盖了各个领域的应用。下面是一些常见且广泛应用的 Python 第三方库的总结,希望能为您提供帮助。 NumPy(Numerical
    的头像 发表于 11-29 14:31 813次阅读

    OpenAtom OpenHarmony 三方创建发布及安全隐私检测

    根据其开发语言分为2种,一种是使用JavaScript和TypeScript语言的三方,通常以源码或OpenHarmony HAR/HSP的方式引入,在应用
    发表于 11-13 17:27

    最受欢迎的第三方平台——呼叫中心系统

    中小企业一定要选择正规的呼叫中心供应商,只有应有强大的第三方合作平台,才能拥有更专业的系统团队以及系统维护平台,只有可信的团队才能为企业带来良好的业绩。 本公司呼叫中心系统凭借多年的呼叫中心
    发表于 09-20 17:54

    如何在蜂鸟处理器核的基础上扩展第三方指令?

    想咨询一下如何在蜂鸟处理器核的基础上扩展第三方指令,使用户自定义指令,并如何构建机器码等内容? 我看了胡老师的RISC-V处理器设计的书里面讲的使用custom1-4来进行扩展,并以EAI为实例进行
    发表于 08-16 07:36

    如何确定OpenVINO第三方组件的相关许可?

    无法确定 OpenVINO™第三方组件的相关许可。
    发表于 08-15 06:45

    学会安装第三方开源库

    你好,我是爱吃鱼香ROS的小鱼。秉承着拒绝重复造轮子的ROS精神,本节我们学习如何在我们的工程里安装第三方开源库。
    的头像 发表于 07-13 14:35 624次阅读
    学会安装<b class='flag-5'>第三方</b>开源库

    第三方供应商风险评估|不要单独管理第三方风险|虹科分享

    使用ProcessUnity和虹科网络安全评级的整体方法保护您的供应商生态系统赛义亚研究所的一项新研究发现,98%的组织与遭受入侵的第三方有业务往来。报告还发现,公司平均有11个第三方关系,以及数百
    的头像 发表于 05-31 09:34 561次阅读
    <b class='flag-5'>第三方</b>供应商风险评估|不要单独管理<b class='flag-5'>第三方</b>风险|虹科分享

    调用第三方 API 接口会遇到哪些问题

    了 11、接口时好时坏 12、文档和接口逻辑不一致 13、欠费了   前言 在实际工作中,我们经常需要在项目中调用第三方API接口,获取数据,或者上报数据,进行数据交换和通信。 那么,调用第三方 API 接口会遇到哪些问题?如何解决这些问题呢? 这篇文章就跟大家一起聊聊
    的头像 发表于 05-29 14:31 924次阅读

    在SpringBoot中重试调用第三方API教程

    作为后端程序员,我们的日常工作就是调用一些第三方服务,将数据存入数据库,返回信息给前端。但你不能保证所有的事情一直都很顺利。像有些第三方API,偶尔会出现超时。此时,我们要重试几次,这取决于你的重试策略。
    的头像 发表于 05-11 10:43 476次阅读