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)其他的圖片加載效果。
-
Android
+關(guān)注
關(guān)注
12文章
3935瀏覽量
127339 -
API
+關(guān)注
關(guān)注
2文章
1499瀏覽量
61962 -
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)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論