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

    文章

    3935

    浏览量

    127352
  • API
    API
    +关注

    关注

    2

    文章

    1499

    浏览量

    61969
  • GIF
    GIF
    +关注

    关注

    0

    文章

    24

    浏览量

    6578
  • HarmonyOS
    +关注

    关注

    79

    文章

    1974

    浏览量

    30147

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

文章出处:【微信号:gh_834c4b3d87fe,微信公众号:OpenHarmony威廉希尔官方网站 社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    第三方检测机构该如何提升核心竞争力?

    在国家“一带一路”和“智能制造2025”等政策的引领下,面对竞争日益激烈的国际环境,作为全球最大的制造业国家,中国的检测行业正经历着迅猛的发展,成为全球增长最快、潜力最大的市场之一。 第三方检测逐渐
    的头像 发表于 12-17 15:44 78次阅读
    <b class='flag-5'>第三方</b>检测机构该如何提升核心竞争力?

    鸿蒙Flutter实战:05-使用第三方插件

    # 鸿蒙Flutter 实战:使用第三方插件 在鸿蒙Flutter开发,如果涉及到使用原生功能,就要使用插件。使用插件有两种方式,一种是
    发表于 10-22 21:54

    瑞芯微RK3566鸿蒙开发板Android11修改第三方输入法为默认输入法

    本文适用于触觉智能所有支持Android11系统的开发板修改第三方输入法为默认输入法。本次使用的是触觉智能的Purple Pi OH鸿蒙开源主板,搭载了瑞芯微RK3566芯片,类树莓派设计,是Laval官方社区主荐的一款
    的头像 发表于 09-24 09:43 429次阅读
    瑞芯微RK3566<b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>板Android11修改<b class='flag-5'>第三方</b>输入法为默认输入法

    维天地低代码开发平台助力第三方质检行业数据可视化

    第三方检验是由独立于买卖双方利益之外的第三方机构(例如专业的监督检验机构)执行的,这些机构以公正、公平、权威的非当事人身份,依据双方共同认可的法律、标准和合同等进行商品的符合性检验和认证活动
    的头像 发表于 08-09 13:59 265次阅读
    <b class='flag-5'>三</b>维天地低代码<b class='flag-5'>开发</b>平台助力<b class='flag-5'>第三方</b>质检行业数据可视化

    请问esp8266会开放使用第三方云服务器吗?

    如题,esp8266会开放使用第三方云服务器吗,如百度,阿里云服务器?
    发表于 07-12 11:40

    是否有可能在支持gdb的第三方集成开发环境中使用DAS配置调试?

    是否有可能在支持 gdb 的第三方集成开发环境中使用 DAS 配置调试?
    发表于 07-02 07:29

    微软或将开放Xbox主机授权给第三方厂商

    据悉,5 月 26 日,知名媒体 Windows Central 的编辑 Jez Corden 揭露了微软即将遵循第三方手柄流程,允许在其 XBOX 主机上引入第三方产品。
    的头像 发表于 05-27 15:18 654次阅读

    MacPaw将在欧盟成员国推出第三方应用商店Setapp

    5月14日,MacPaw正式宣布将在今年5月14日在欧盟成员国面向苹果iPhone推出第三方应用商城Setapp。自今年2月起,MacPaw已着手筹备该平台。S
    的头像 发表于 05-14 10:14 372次阅读

    谷歌开放ZenDeviceEffects API,助第三方应用实现睡前屏幕管理

    据报道,谷歌近日在安卓 15 开发者预览版 2 推出了全新 ZenDeviceEffects API,允许第三方应用访问数字健康的就寝模式功能。
    的头像 发表于 05-08 16:41 482次阅读

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

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

    鸿蒙OS开发学习:【第三方调用】

    在Stage模型,如何调用已经上架到[三方中心]的社区和项目内创建的本地
    的头像 发表于 04-14 11:34 902次阅读
    <b class='flag-5'>鸿蒙</b>OS<b class='flag-5'>开发</b>学习:【<b class='flag-5'>第三方</b><b class='flag-5'>库</b>调用】

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

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

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

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

    苹果iOS 17.4版允许欧盟地区用户使用第三方应用商店下载应用

    3月6日,苹果正式推出iOS 17.4版本,首次符合欧州《数字市场法》规定,引入第三方应用商店”选项,让iPhone用户能从非App Store处下载应用程序。
    的头像 发表于 03-06 10:51 867次阅读

    鸿蒙物联网基础

    关于物联网架构以及鸿蒙第三方应用的引用方式
    的头像 发表于 01-08 08:37 529次阅读
    <b class='flag-5'>鸿蒙</b>物联网基础