日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
鴻蒙應用開發(fā):如何與組件庫(Glide)銜接?

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

成都創(chuàng)新互聯(lián)是一家專注于網站設計、做網站與策劃設計,通川網站建設哪家好?成都創(chuàng)新互聯(lián)做網站,專注于網站建設10余年,網設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:通川等地區(qū)。通川做網站價格咨詢:13518219792

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

https://harmonyos.

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

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

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

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

HarmonyOS 應用開發(fā)提供了三種常用的組件庫引入方式,以下的三種依賴方式都是在 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. 配置

在開發(fā)前需要在 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); 

 運行結果顯示:

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.     ohos:id="$+id:draweeView" 
  2.     ohos:height="180vp" 
  3.     ohos:width="180vp" 
  4.     ohos:layout_alignment="center"/> 

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

 
 
 
 
  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 的引入過程與實現(xiàn)過程,跟Android 第三方庫引入與圖片加載沒有很大的區(qū)別。

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

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

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

https://harmonyos.


當前標題:鴻蒙應用開發(fā):如何與組件庫(Glide)銜接?
文章起源:http://www.5511xx.com/article/cdejcsp.html