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

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

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

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

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

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

https://harmonyos.

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

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

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

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

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

1. Maven 倉(cāng)的依賴方式

以下驗(yàn)證過(guò)程的圖片加載庫(kù) 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 沒(méi)有對(duì)該 glidelibrary 的配置,就要手動(dòng)添加,如下:

 
 
 
 
  1. include ':entry', ':glidelibrary' 

3. Har 包的依賴方式

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

二、 組件庫(kù)(Glide)的使用

1. 配置

在開(kāi)發(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. 加載圖片

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

調(diào)用方式:

 
 
 
 
  1. Image image = (Image)findComponentById(ResourceTable.Id_img); 
  2. //Load Image from Internet(圖片來(lái)源于 即構(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é)果顯示:

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

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

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

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

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

4. 加載圓角圖片

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

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

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

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

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

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

https://harmonyos.


文章標(biāo)題:鴻蒙應(yīng)用開(kāi)發(fā):如何與組件庫(kù)(Glide)銜接?
當(dāng)前地址:http://m.5511xx.com/article/cdejcsp.html