RM新时代网站-首页

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

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

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

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

OpenHarmony技術(shù)社區(qū) ? 來源:鴻蒙技術(shù)社區(qū) ? 作者:即構(gòu)忠武 ? 2021-10-11 14:11 ? 次閱讀

Android 發(fā)展到現(xiàn)在不僅提供了很多 API,還提供了很多第三方庫。這降低了我們開發(fā)者的開發(fā)難度,提升了開發(fā)效率,讓應(yīng)用開發(fā)更加的簡單高效。

眾所周知,HarmonyOS 除了提供 16000 多個 API 外也是支持組件庫的調(diào)用的,那么鴻蒙應(yīng)用開發(fā)是如何與第三方庫銜接的呢?

加載一張圖片是每個應(yīng)用所需的功能,在 Android 平臺提供的有 Glide、ImageLoader、Picasso,其中 Glide 最被開發(fā)者熟知,所以我就以 Glide 作為例子驗證在 HarmonyOS 開發(fā)中如何使用圖片加載庫。

組件庫(Glide)的依賴方式

HarmonyOS 應(yīng)用開發(fā)提供了三種常用的組件庫引入方式,以下的三種依賴方式都是在 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)的使用

①配置

在開發(fā)前需要在 config.json 中做好配置的工作。

允許 HTTP 的請求:

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

網(wǎng)絡(luò)權(quán)限的設(shè)置:

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

②加載圖片

圖片的來源可以是網(wǎng)絡(luò)的圖片、也可以是項目文件的圖片。兩種方式的加載方式如下,加載的圖片來源于網(wǎng)絡(luò) load() 的選擇 imagePath,本地圖片就選擇 imageResourceId。

調(diào)用方式:

Imageimage=(Image)findComponentById(ResourceTable.Id_img);
//LoadImagefromInternet(圖片來源于即構(gòu)官網(wǎng)的網(wǎng)絡(luò)圖)
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 圖可以是網(wǎng)絡(luò)圖片,也可以說本地圖片。

調(diào)用方式:

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 的過程,對系統(tǒng)的性能消耗是非常大的,所以在使用完的時候要及時釋放資源,防止內(nèi)存泄漏。

@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){

}

}

調(diào)用方式:

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);

總結(jié)

通過對 Glide 的引入過程與實現(xiàn)過程,跟 Android 第三方庫引入與圖片加載沒有很大的區(qū)別。舉一反三,我們可以很輕松的引入其他的組件庫,也可以通過 Glide 實現(xiàn)其他的圖片加載效果。
編輯:jq
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    3935

    瀏覽量

    127339
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1499

    瀏覽量

    61962
  • GIF
    GIF
    +關(guān)注

    關(guān)注

    0

    文章

    24

    瀏覽量

    6577
  • HarmonyOS
    +關(guān)注

    關(guān)注

    79

    文章

    1973

    瀏覽量

    30143

原文標題:鴻蒙開發(fā)中如何引入第三方庫?

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

收藏 人收藏

    評論

    相關(guān)推薦

    第三方檢測機構(gòu)該如何提升核心競爭力?

    在國家“一帶一路”和“智能制造2025”等政策的引領(lǐng)下,面對競爭日益激烈的國際環(huán)境,作為全球最大的制造業(yè)國家,中國的檢測行業(yè)正經(jīng)歷著迅猛的發(fā)展,成為全球增長最快、潛力最大的市場之一。 第三方檢測逐漸
    的頭像 發(fā)表于 12-17 15:44 ?71次閱讀
    <b class='flag-5'>第三方</b>檢測機構(gòu)該如何提升核心競爭力?

    鴻蒙Flutter實戰(zhàn):05-使用第三方插件

    # 鴻蒙Flutter 實戰(zhàn):使用第三方插件 在鴻蒙Flutter開發(fā),如果涉及到使用原生功能,就要使用插件。使用插件有兩種方式,一種是
    發(fā)表于 10-22 21:54

    瑞芯微RK3566鴻蒙開發(fā)板Android11修改第三方輸入法為默認輸入法

    本文適用于觸覺智能所有支持Android11系統(tǒng)的開發(fā)板修改第三方輸入法為默認輸入法。本次使用的是觸覺智能的Purple Pi OH鴻蒙開源主板,搭載了瑞芯微RK3566芯片,類樹莓派設(shè)計,是Laval官方社區(qū)主薦的一款
    的頭像 發(fā)表于 09-24 09:43 ?427次閱讀
    瑞芯微RK3566<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>板Android11修改<b class='flag-5'>第三方</b>輸入法為默認輸入法

    維天地低代碼開發(fā)平臺助力第三方質(zhì)檢行業(yè)數(shù)據(jù)可視化

    第三方檢驗是由獨立于買賣雙方利益之外的第三方機構(gòu)(例如專業(yè)的監(jiān)督檢驗機構(gòu))執(zhí)行的,這些機構(gòu)以公正、公平、權(quán)威的非當事人身份,依據(jù)雙方共同認可的法律、標準和合同等進行商品的符合性檢驗和認證活動
    的頭像 發(fā)表于 08-09 13:59 ?265次閱讀
    <b class='flag-5'>三</b>維天地低代碼<b class='flag-5'>開發(fā)</b>平臺助力<b class='flag-5'>第三方</b>質(zhì)檢行業(yè)數(shù)據(jù)可視化

    請問esp8266會開放使用第三方云服務(wù)器嗎?

    如題,esp8266會開放使用第三方云服務(wù)器嗎,如百度,阿里云服務(wù)器?
    發(fā)表于 07-12 11:40

    是否有可能在支持gdb的第三方集成開發(fā)環(huán)境中使用DAS配置調(diào)試?

    是否有可能在支持 gdb 的第三方集成開發(fā)環(huán)境中使用 DAS 配置調(diào)試?
    發(fā)表于 07-02 07:29

    微軟或?qū)㈤_放Xbox主機授權(quán)給第三方廠商

    據(jù)悉,5 月 26 日,知名媒體 Windows Central 的編輯 Jez Corden 揭露了微軟即將遵循第三方手柄流程,允許在其 XBOX 主機上引入第三方產(chǎn)品。
    的頭像 發(fā)表于 05-27 15:18 ?652次閱讀

    MacPaw將在歐盟成員國推出第三方應(yīng)用商店Setapp

    5月14日,MacPaw正式宣布將在今年5月14日在歐盟成員國面向蘋果iPhone推出第三方應(yīng)用商城Setapp。自今年2月起,MacPaw已著手籌備該平臺。S
    的頭像 發(fā)表于 05-14 10:14 ?372次閱讀

    谷歌開放ZenDeviceEffects API,助第三方應(yīng)用實現(xiàn)睡前屏幕管理

    據(jù)報道,谷歌近日在安卓 15 開發(fā)者預(yù)覽版 2 推出了全新 ZenDeviceEffects API,允許第三方應(yīng)用訪問數(shù)字健康的就寢模式功能。
    的頭像 發(fā)表于 05-08 16:41 ?480次閱讀

    Labview如何內(nèi)嵌操作第三方EXE程序!

    自己在網(wǎng)上搜了下相關(guān)資料,能把第三方EXE內(nèi)嵌進入容器里,但是有個問題,這個第三方軟件必須手動拖到容器正中間,手動最大化。請問有什么方法可以自動實現(xiàn)嗎? 下圖是我內(nèi)嵌的POLL 軟件。如圖!
    發(fā)表于 04-18 14:26

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

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

    微軟或?qū)?b class='flag-5'>引入第三方數(shù)字游戲商店至Xbox平臺

    微軟選擇引入這些第三方游戲平臺,一面可以增加自身擁有的硬件資源和服務(wù)優(yōu)勢;另一面,也是為了吸引那些在電腦端能夠自由選擇游戲購買渠道的游戲用戶。據(jù)悉,此前的Xbox系列產(chǎn)品都是只內(nèi)置
    的頭像 發(fā)表于 03-27 15:51 ?489次閱讀

    Meta Quest頭顯將支持多款安卓第三方應(yīng)用并行

    Meta已悄然啟動了與此相關(guān)的功能,意味著Quest頭顯可同時操作多個第三方Android應(yīng)用。在此之前,Quest對第三方Android應(yīng)用有嚴格限制,用戶每次僅能打開一個,無法實現(xiàn)同屏幕并行多個第三方應(yīng)用進程。
    的頭像 發(fā)表于 03-11 10:58 ?738次閱讀

    蘋果iOS 17.4版允許歐盟地區(qū)用戶使用第三方應(yīng)用商店下載應(yīng)用

    3月6日,蘋果正式推出iOS 17.4版本,首次符合歐州《數(shù)字市場法》規(guī)定,引入第三方應(yīng)用商店”選項,讓iPhone用戶能從非App Store處下載應(yīng)用程序。
    的頭像 發(fā)表于 03-06 10:51 ?866次閱讀

    鴻蒙物聯(lián)網(wǎng)基礎(chǔ)

    關(guān)于物聯(lián)網(wǎng)架構(gòu)以及鴻蒙第三方應(yīng)用的引用方式
    的頭像 發(fā)表于 01-08 08:37 ?528次閱讀
    <b class='flag-5'>鴻蒙</b>物聯(lián)網(wǎng)基礎(chǔ)
    RM新时代网站-首页