自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

鴻蒙應(yīng)用開發(fā):如何與組件庫(Glide)銜接?

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

[[426400]]

想了解更多內(nèi)容,請(qǐng)?jiān)L問:

51CTO和華為官方戰(zhàn)略合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

Android 發(fā)展到現(xiàn)在不僅提供了很多 API,還提供了很多第三方庫。這降低了我們開發(fā)者的開發(fā)難度,提升了開發(fā)效率,讓應(yīng)用開發(fā)更加的簡單高效。眾所周知,HarmonyOS 除了提供 16000 多個(gè) API 外也是支持組件庫的調(diào)用的,那么鴻蒙應(yīng)用開發(fā)是如何與第三方庫銜接的呢?

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

以后要引入我廠即構(gòu) ZEGO Express SDK 鴻蒙版本的時(shí)候可以根據(jù)以下的依賴方式,開發(fā)過程中需要圖片的加載,也可以借鑒以下的圖片加載過程。

一、 組件庫(Glide)的依賴方式

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

1. Maven 倉的依賴方式

以下驗(yàn)證過程的圖片加載庫 Glide 采用的就是這種方式。

步驟一:

  1. allprojects { 
  2.     repositories { 
  3.         maven { 
  4.             url 'https://repo.huaweicloud.com/repository/maven/'  
  5.         } 
  6.         jcenter() 
  7.         mavenCentral() 
  8.     } 

 步驟二:

  1. dependencies { 
  2.  implementation fileTree(dir: 'libs', include: ['*.jar''*.har']) 
  3.  implementation 'io.openharmony.tpc.thirdlib:glide:1.1.2' 

2. Module 的依賴方式

  1. dependencies { 
  2.  implementation fileTree(dir: 'libs', include: ['*.jar''*.har']) 
  3.  implementation project(path: ':glidelibrary'

如果在setting.gradle 沒有對(duì)該 glidelibrary 的配置,就要手動(dòng)添加,如下:

  1. include ':entry'':glidelibrary' 

3. Har 包的依賴方式

  1. dependencies { 
  2.  implementation fileTree(dir: 'libs', include: ['*.jar''*.har']) 

二、 組件庫(Glide)的使用

1. 配置

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

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

  1. "deviceConfig": { 
  2.   "default": { 
  3.     "network": { 
  4.       "cleartextTraffic"true 
  5.     } 
  6.   } 

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

  1. "module": { 
  2.     "reqPermissions": [ 
  3.       { 
  4.         "name""ohos.permission.INTERNET" 
  5.       }                    
  6.     ] 

2. 加載圖片

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

調(diào)用方式:

  1. Image image = (Image)findComponentById(ResourceTable.Id_img); 
  2. //Load Image from Internet(圖片來源于 即構(gòu)官網(wǎng)的網(wǎng)絡(luò)圖) 
  3. String imagePath = "https://www.zego.im/_nuxt/img/53992d2.png"
  4. //Load Image from Resource Folder(本地圖片) 
  5. int imageResourceId = ResourceTable.Media_zego_img; 
  6. Glide.with(this) 
  7.         .load(imagePath) 
  8.         .diskCacheStrategy(DiskCacheStrategy.NONE) 
  9.         .skipMemoryCache(true
  10.         .into(image); 

 運(yùn)行結(jié)果顯示:

鴻蒙應(yīng)用開發(fā):如何與組件庫(Glide)銜接?-鴻蒙HarmonyOS技術(shù)社區(qū)

3. 加載GIF動(dòng)圖

加載的GIF 圖可以是網(wǎng)絡(luò)圖片,也可以說本地圖片。

調(diào)用方式:

  1. DraweeView draweeView = (DraweeView) findComponentById(ResourceTable.Id_draweeView); 
  2. String imagePath = "load gif from network"
  3. int imageResourceId = "load gif from native"
  4. Glide.with(this) 
  5.         .asGif() 
  6.         .load(imageResourceId) 
  7.                 .into(draweeView); 

 HarmonyOS 的Image 不支持gif 的加載,因?yàn)镮mage和Element是獨(dú)立的,不能使用Element重繪。所以 Glide 要使用 gif 的能力就要使用 DraweeView 。

  1. <com.bumptech.glide.load.resource.gif.drawableability.DraweeView 
  2.     ohos:id="$+id:draweeView" 
  3.     ohos:height="180vp" 
  4.     ohos:width="180vp" 
  5.     ohos:layout_alignment="center"/> 

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

  1. @Override 
  2. protected void onBackground() { 
  3.     super.onBackground(); 
  4.     draweeView.stopGif(); 

4. 加載圓角圖片

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

  1. public class GlideRoundTransform extends BitmapTransformation { 
  2.  
  3.     private static float radius = 0f; 
  4.  
  5.     public GlideRoundTransform(Context context) { 
  6.         this(context, 0); 
  7.     } 
  8.  
  9.     public GlideRoundTransform(Context context, int dp) { 
  10.         super(); 
  11.         this.radius = dp; 
  12.     } 
  13.  
  14.     @Override 
  15.     protected PixelMap transform(@NonNls BitmapPool pool, @NonNls PixelMap toTransform, int outWidth, int outHeight) { 
  16.         int width = toTransform.getImageInfo().size.width; 
  17.         int height = toTransform.getImageInfo().size.height; 
  18.  
  19.         PixelFormat config = 
  20.                 toTransform.getImageInfo() != null ? toTransform.getImageInfo().pixelFormat : PixelFormat.ARGB_8888; 
  21.         PixelMap bitmap = pool.get(width, height, config); 
  22.  
  23.         setCanvasBitmapDensity(toTransform, bitmap); 
  24.  
  25.         Canvas canvas = new Canvas(new Texture(bitmap)); 
  26.         canvas.drawPixelMapHolderRoundRectShape(new PixelMapHolder(toTransform), new RectFloat(0, 0, width, height), new RectFloat(0, 0, width, height), radius, radius); 
  27.         return bitmap; 
  28.     } 
  29.  
  30.     @Override 
  31.     public void updateDiskCacheKey(MessageDigest messageDigest) { 
  32.  
  33.     } 
  34.  

調(diào)用方式:

  1. Image image = (Image) findComponentById(ResourceTable.Id_img); 
  2. RequestOptions myOptions = new RequestOptions().transform(new GlideRoundTransform(getContext(), 30)); 
  3. Glide.with(this) 
  4.         .load(ResourceTable.Media_zego_img_round) 
  5.         .diskCacheStrategy(DiskCacheStrategy.NONE) 
  6.         .skipMemoryCache(true
  7.         .fitCenter() 
  8.         .apply(myOptions) 
  9.         .into(image); 

總結(jié)

通過對(duì) Glide 的引入過程與實(shí)現(xiàn)過程,跟Android 第三方庫引入與圖片加載沒有很大的區(qū)別。

舉一反三,我們可以很輕松的引入其他的組件庫,也可以通過 Glide 實(shí)現(xiàn)其他的圖片加載效果。同時(shí)一起期待我廠 即構(gòu) ZEGO Express SDK 的鴻蒙版本吧。

想了解更多內(nèi)容,請(qǐng)?jiān)L問:

51CTO和華為官方戰(zhàn)略合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

 

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2022-02-10 15:14:50

HarmonyOS操作系統(tǒng)鴻蒙

2021-03-19 17:42:01

鴻蒙HarmonyOS應(yīng)用開發(fā)

2014-10-15 14:07:21

AndroidGlide組件

2021-08-31 14:56:51

鴻蒙HarmonyOS應(yīng)用

2020-11-09 11:56:49

HarmonyOS

2021-04-23 16:08:08

鴻蒙HarmonyOS應(yīng)用

2016-02-26 09:48:49

APIAlluxio存儲(chǔ)

2011-09-15 09:31:32

云計(jì)算PaaS私有云

2022-05-19 15:59:23

組件焦點(diǎn)鴻蒙

2023-02-17 08:22:05

AndroidGlide

2020-08-10 07:00:00

SaaS開發(fā)IT

2011-06-24 16:19:59

QT web Webkit

2009-08-14 17:08:00

Android應(yīng)用程序

2009-06-24 17:05:10

2021-02-07 12:08:39

鴻蒙HarmonyOS應(yīng)用開發(fā)

2019-01-15 14:11:50

Android框架組件化

2010-04-15 16:16:57

Oracle數(shù)據(jù)庫應(yīng)用

2015-07-16 15:20:58

DockerDjango

2010-08-17 09:55:29

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)