那曲檬骨新材料有限公司

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

    文章

    3945

    瀏覽量

    127943
  • API
    API
    +關注

    關注

    2

    文章

    1511

    瀏覽量

    62400
  • GIF
    GIF
    +關注

    關注

    0

    文章

    24

    瀏覽量

    6623
  • HarmonyOS
    +關注

    關注

    79

    文章

    1982

    瀏覽量

    30579

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

文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    EE-303:將VisualDSP線程安全第三方RTOS配合使用

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

    第三方檢測機構該如何提升核心競爭力?

    在國家“一帶一路”和“智能制造2025”等政策的引領下,面對競爭日益激烈的國際環境,作為全球最大的制造業國家,中國的檢測行業正經歷著迅猛的發展,成為全球增長最快、潛力最大的市場之一。 第三方檢測逐漸
    的頭像 發表于 12-17 15:44 ?271次閱讀
    <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 ?533次閱讀
    瑞芯微RK3566<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b>板Android11修改<b class='flag-5'>第三方</b>輸入法為默認輸入法

    維天地低代碼開發平臺助力第三方質檢行業數據可視化

    第三方檢驗是由獨立于買賣雙方利益之外的第三方機構(例如專業的監督檢驗機構)執行的,這些機構以公正、公平、權威的非當事人身份,依據雙方共同認可的法律、標準和合同等進行商品的符合性檢驗和認證活動
    的頭像 發表于 08-09 13:59 ?324次閱讀
    <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 ?712次閱讀

    MacPaw將在歐盟成員國推出第三方應用商店Setapp

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

    谷歌開放ZenDeviceEffects API,助第三方應用實現睡前屏幕管理

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

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

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

    鴻蒙OS開發學習:【第三方調用】

    在Stage模型,如何調用已經上架到[三方中心]的社區和項目內創建的本地
    的頭像 發表于 04-14 11:34 ?968次閱讀
    <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 ?533次閱讀

    Meta Quest頭顯將支持多款安卓第三方應用并行

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

    蘋果iOS 17.4版允許歐盟地區用戶使用第三方應用商店下載應用

    3月6日,蘋果正式推出iOS 17.4版本,首次符合歐州《數字市場法》規定,引入第三方應用商店”選項,讓iPhone用戶能從非App Store處下載應用程序。
    的頭像 發表于 03-06 10:51 ?982次閱讀
    时时博百家乐官网娱乐城| 网上玩百家乐官网有钱| 百家乐官网全程打庄| 百家乐官网最低压多少| 百家乐官网赌的是心态吗| 百家乐官网娱乐下载| 百家乐哪条路好| 百家乐优博u2bet| 豪门百家乐的玩法技巧和规则| 大发888娱乐游戏下载 客户端| 投注平台出租| 真人百家乐官网玩法| 百家乐官网和怎么算输赢| 百家乐跟路技巧| 大发888下载并安装| 缅甸百家乐官网论坛| 百家乐官网过两关| 博狗百家乐现场| 威尼斯人娱乐城评价| 庄闲和| 破解百家乐官网真人游戏| 百家乐代理商博彩e族| 大发888线上娱乐城百家乐| 高密市| 破战百家乐官网的玩法技巧和规则 | 皇冠百家乐皇冠网| 大发888娱乐场奖金| 上饶市| 百家乐制胜方法| 大发888在线娱乐下载| 百家乐官网视频官方下载| 24山择日财丁贵日| 全讯网334466| 百家乐官网太阳城娱乐城| 百家乐电子路单破解| 大发888游戏平台188| 澳门百家乐官网战法| 百家乐博彩网排名| 香港六合彩开奖结果| 贝博百家乐官网的玩法技巧和规则 | 真人游戏大全|