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

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

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

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

OpenHarmony技術(shù)社區(qū) ? 來源:鴻蒙技術(shù)社區(qū) ? 作者:即構(gòu)忠武 ? 2021-10-11 14:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

組件庫(kù)(Glide)的依賴方式

HarmonyOS 應(yīng)用開發(fā)提供了三種常用的組件庫(kù)引入方式,以下的三種依賴方式都是在 build.grade 中操作。

①M(fèi)aven 倉(cāng)的依賴方式

以下驗(yàn)證過程的圖片加載庫(kù) 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 沒有對(duì)該 glidelibrary 的配置,就要手動(dòng)添加,如下。

include':entry',':glidelibrary'

③Har 包的依賴方式

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

組件庫(kù)(Glide)的使用

①配置

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

允許 HTTP 的請(qǐng)求:

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

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

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

②加載圖片

圖片的來源可以是網(wǎng)絡(luò)的圖片、也可以是項(xiàng)目文件的圖片。兩種方式的加載方式如下,加載的圖片來源于網(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 動(dòng)圖

加載的 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 的加載,因?yàn)?Image 和 Element 是獨(dú)立的,不能使用 Element 重繪。

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

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

因?yàn)榧虞d gif 的過程,對(duì)系統(tǒng)的性能消耗是非常大的,所以在使用完的時(shí)候要及時(shí)釋放資源,防止內(nèi)存泄漏。

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

④加載圓角圖片

加載圓角圖片,把圓角 raduis 傳進(jìn)來,就可以繪制圓角度。

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

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

    關(guān)注

    12

    文章

    3971

    瀏覽量

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

    關(guān)注

    2

    文章

    1568

    瀏覽量

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

    關(guān)注

    0

    文章

    24

    瀏覽量

    6795
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2148

    瀏覽量

    32529

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    使用 Claroty SRA 優(yōu)化第三方 OT 遠(yuǎn)程訪問

    第三方,如原始設(shè)備制造商 (OEM) 技術(shù)員和維護(hù)承包商,是確保 OT 環(huán)境可用性、完整性和安全性的關(guān)鍵。負(fù)責(zé)服務(wù) OT 資產(chǎn)的第三方經(jīng)常遠(yuǎn)程工作。這意味著,他們會(huì)通過無數(shù)廣泛使用的解決方案遠(yuǎn)程連接
    的頭像 發(fā)表于 06-17 16:11 ?139次閱讀
    使用 Claroty SRA 優(yōu)化<b class='flag-5'>第三方</b> OT 遠(yuǎn)程訪問

    第三方工業(yè)互聯(lián)網(wǎng)平臺(tái)有哪些

    第三方工業(yè)互聯(lián)網(wǎng)平臺(tái)有哪些
    的頭像 發(fā)表于 06-14 15:48 ?221次閱讀

    鈦和集團(tuán)榮獲零跑汽車第三方實(shí)驗(yàn)室資質(zhì)認(rèn)可

    近期,鈦和集團(tuán)順利通過了浙江零跑科技股份有限公司(以下簡(jiǎn)稱“零跑汽車”)對(duì)第三方實(shí)驗(yàn)室的能力驗(yàn)證及資質(zhì)審核,助力零跑汽車實(shí)現(xiàn)“成為值得尊敬的世界級(jí)智能電動(dòng)車企”的品牌愿景。
    的頭像 發(fā)表于 06-13 17:00 ?374次閱讀

    SGS榮獲比亞迪乘用車第三方實(shí)驗(yàn)室資質(zhì)認(rèn)可證書

    近日,國(guó)際公認(rèn)的測(cè)試、檢驗(yàn)和認(rèn)證機(jī)構(gòu)SGS(以下簡(jiǎn)稱:SGS)位于重慶的標(biāo)瑞新能源實(shí)驗(yàn)室(以下簡(jiǎn)稱:SGS-CEC)榮獲比亞迪乘用車實(shí)驗(yàn)室認(rèn)可委員會(huì)(以下簡(jiǎn)稱:比亞迪)頒發(fā)的“乘用車第三方實(shí)驗(yàn)室資質(zhì)認(rèn)可證書”。
    的頭像 發(fā)表于 05-20 15:04 ?367次閱讀

    第三方的DLP3010-LC開發(fā)板USB轉(zhuǎn)I2C失敗怎么解決?

    我們從第三方光機(jī)廠商購(gòu)買了DLP3010-LC開發(fā)板,該開發(fā)板對(duì)外只有I2C接口,需要自己購(gòu)買了USB轉(zhuǎn)I2C模塊,于是我們購(gòu)買了TI推薦的CYPRESS的CY7C65215開發(fā)板U
    發(fā)表于 02-28 06:51

    第三方的dlp3010板子時(shí)遇到的幾個(gè)問題求解

    您好,在用第三方的dlp3010板子時(shí)遇到了如下問題: 固件能夠更新,系統(tǒng)上電后,初始proj_on為低,resetz為低,intz為低;手動(dòng)拉高proj_on和cypress的gpio6,能夠
    發(fā)表于 02-26 07:19

    i.MX8M Yocto工程更新第三方軟件包

    IAC-IMX8MP-Kit開發(fā)板為例,介紹如何升級(jí)已經(jīng)配置好的Yocto工程第三方軟件包。首先,需要一個(gè)已經(jīng)拉取并編譯好的Yocto工程,這個(gè)步驟可以參考NXP官方Y(jié)octo文檔,
    的頭像 發(fā)表于 02-12 08:11 ?566次閱讀
    i.MX8M Yocto工程更新<b class='flag-5'>第三方</b>軟件包

    EE-303:將VisualDSP線程安全庫(kù)第三方RTOS配合使用

    電子發(fā)燒友網(wǎng)站提供《EE-303:將VisualDSP線程安全庫(kù)第三方RTOS配合使用.pdf》資料免費(fèi)下載
    發(fā)表于 01-07 14:09 ?0次下載
    EE-303:將VisualDSP線程安全<b class='flag-5'>庫(kù)</b>與<b class='flag-5'>第三方</b>RTOS配合使用

    鴻蒙Flutter實(shí)戰(zhàn):14-現(xiàn)有Flutter 項(xiàng)目支持鴻蒙 II

    ││└── widgets #通用小型 widgets, 純dart編寫的 Flutter UI 組件 │├── components #封裝組件庫(kù),可以依賴于第三方庫(kù)/第三方插件,
    發(fā)表于 12-26 14:59

    第三方檢測(cè)機(jī)構(gòu)該如何提升核心競(jìng)爭(zhēng)力?

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

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

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

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

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

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

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

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

    如題,esp8266會(huì)開放使用第三方云服務(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

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品