成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

鴻蒙應用開發:如何與組件庫(Glide)銜接?

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

[[426400]]

想了解更多內容,請訪問:

51CTO和華為官方戰略合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

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

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

以后要引入我廠即構 ZEGO Express SDK 鴻蒙版本的時候可以根據以下的依賴方式,開發過程中需要圖片的加載,也可以借鑒以下的圖片加載過程。

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

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

1. Maven 倉的依賴方式

以下驗證過程的圖片加載庫 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 沒有對該 glidelibrary 的配置,就要手動添加,如下:

  1. include ':entry'':glidelibrary' 

3. Har 包的依賴方式

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

二、 組件庫(Glide)的使用

1. 配置

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

允許 HTTP 的請求:

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

 網絡權限的設置:

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

2. 加載圖片

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

調用方式:

  1. Image image = (Image)findComponentById(ResourceTable.Id_img); 
  2. //Load Image from Internet(圖片來源于 即構官網的網絡圖) 
  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); 

 運行結果顯示:

鴻蒙應用開發:如何與組件庫(Glide)銜接?-鴻蒙HarmonyOS技術社區

3. 加載GIF動圖

加載的GIF 圖可以是網絡圖片,也可以說本地圖片。

調用方式:

  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 的加載,因為Image和Element是獨立的,不能使用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"/> 

 因為加載 gif 的過程,對系統的性能消耗是非常大的,所以在使用完的時候要及時釋放資源,防止內存泄漏。

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

4. 加載圓角圖片

加載圓角圖片,把圓角 raduis 傳進來,就可以繪制圓角度。

  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.  

調用方式:

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

總結

通過對 Glide 的引入過程與實現過程,跟Android 第三方庫引入與圖片加載沒有很大的區別。

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

想了解更多內容,請訪問:

51CTO和華為官方戰略合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2022-02-10 15:14:50

HarmonyOS操作系統鴻蒙

2021-08-31 14:56:51

鴻蒙HarmonyOS應用

2021-03-19 17:42:01

鴻蒙HarmonyOS應用開發

2020-11-09 11:56:49

HarmonyOS

2014-10-15 14:07:21

AndroidGlide組件

2021-04-23 16:08:08

鴻蒙HarmonyOS應用

2020-09-28 15:13:04

鴻蒙

2016-02-26 09:48:49

APIAlluxio存儲

2009-06-24 17:05:10

2021-01-18 13:17:04

鴻蒙HarmonyOSAPP

2024-08-28 17:55:43

HarmonyOS

2011-09-15 09:31:32

云計算PaaS私有云

2019-01-15 14:11:50

Android框架組件化

2022-05-19 15:59:23

組件焦點鴻蒙

2021-10-26 15:22:52

鴻蒙HarmonyOS應用

2020-08-10 07:00:00

SaaS開發IT

2021-06-24 09:32:00

鴻蒙HarmonyOS應用

2022-02-21 15:25:47

HarmonyOS鴻蒙低代碼開發

2011-11-24 21:25:15

ibmdw
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品久久久久中文字幕欢迎你 | 天天摸天天干 | 久久久不卡网国产精品一区 | 懂色av色香蕉一区二区蜜桃 | 草久久久 | 欧美精品一二三区 | 在线观看亚洲精品 | 国产专区在线 | 狠狠干影院 | 神马久久av | 欧美精品一区在线 | 特级黄一级播放 | 国产日韩欧美精品一区二区三区 | 国产网站在线免费观看 | 在线欧美小视频 | 国产精品久久久久久久三级 | 欧美激情欧美激情在线五月 | 国产电影一区二区三区爱妃记 | 精精国产xxxx视频在线 | 免费中文字幕 | 亚洲一区影院 | 国产精品成人一区二区三区吃奶 | 国产一区二区三区免费视频 | 国产91久久久久蜜臀青青天草二 | 在线国产一区 | 欧美一区 | 成人在线中文字幕 | 久久久久久久国产 | 狠狠综合久久av一区二区老牛 | 视频一区二区中文字幕日韩 | 韩国精品一区 | 激情婷婷 | 天天搞天天操 | 国产欧美一区二区三区久久手机版 | 日日操视频 | www日| 成人在线免费 | 毛片久久久 | 国产成人网 | 一级片成人 | 久久夜视频 |