av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

HarmonyOS三方件開發(fā)指南(14)-Glide組件功能介紹

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

靜安網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、APP開發(fā)、響應式網(wǎng)站設計等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)建站于2013年創(chuàng)立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設就選創(chuàng)新互聯(lián)建站。

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

https://harmonyos.

 引言

在實際應用開發(fā)中,會用到大量圖片處理,如:網(wǎng)絡圖片、本地圖片、應用資源、二進制流、Uri對象等,雖然官方提供了PixelMap進行圖片處理,但是卻遠遠滿足不了實際應用中各種五花八門的應用場景,如占位圖、Gif圖、加載失敗圖、內存浪費、內存溢出、節(jié)約流量等,這時候就需要一款能夠處理這些問題,而且簡單易用且性能很高的圖片處理器了,因此OhosGlide三方組件應運而生。

功能介紹

OhosGlide 是一款非常優(yōu)秀的圖片處理工具,支持多種格式圖片加載,采用磁盤緩存、內存緩存方式實現(xiàn)預加載,指定緩存大小實現(xiàn)節(jié)省內存避免OOM,操作方便簡單易用。

指南

接下來我們來看下OhosGlide 具體是怎么使用的,在哪些場景使用,以及他的開發(fā)指南

我們先來看下對于開發(fā)者來講,如何使用這個三方件,也就是har包,需要注意哪些地方

1. 新建工程,增加組件Har包依賴

在應用模塊中添加HAR,只需要將glidelibrary.har復制到entry\libs目錄下即可(由于build.gradle中已經(jīng)依賴的libs目錄下的*.har,因此不需要在做修改)。

2.修改配置文件,首先在entry下面的build.gradle添加library 的依賴

其次在content.json 中添加需要的權限(由于在開發(fā)過程中,需要用到網(wǎng)絡,以及存儲權限,所以需要在content.json中添加相應的權限申明)

3.在我們需要加載網(wǎng)絡圖片的地方,實現(xiàn)以下代碼,具體如下:

OhosGlideUtils.with(this).load("https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png").def(ResourceTable.Media_A).into(image);

注釋://with(this)當前page

//load(url) 需要顯示的圖片url

//def(resID) 默認展示圖片,當中途發(fā)生異常,展示默認的圖片

//into(image) 需要展示的component

在實際開發(fā)中,我們不僅需要加載網(wǎng)絡圖片,還需要加載本地圖片,具體代碼如下:

注釋://load(inputStream) 需要顯示的圖片的流

作為一個程序員,最關注的不是如何使用三方件,而是三方件的靈魂,如果實現(xiàn)才是重中之重,那么作為圖片處理工具,核心的就是我們的緩存了,這樣不僅頁面加載快,而且還能節(jié)省流量,體驗感好,接下來我們就來看下OhosGlide的緩存是如何實現(xiàn)的

緩存主要分為兩種,第一種:內存緩存,也就是我們經(jīng)常說的MemoryCache,當首次加載圖片時,將圖片緩存至內存中,這樣用戶在有網(wǎng)的情況,再次訪問時,先加載內存緩存圖片,然后再去網(wǎng)絡請求最新的圖片。減少流量的浪費和增加用戶體驗感

第二種就是我們說的磁盤緩存:DiskCache,設計磁盤緩存的核心理念就是當前設備沒有網(wǎng)絡的情況,訪問該頁面,如果app有磁盤緩存,則顯示緩存的圖片。不至于用戶什么也看不到,這樣做的目的也是為了增加用戶體驗感。

先來介紹第一種:MemoryCache,核心代碼如下,具體可以參考源碼

 
 
 
 
  1. public static void savePixelMap(String key, PixelMap pixelMap) {
  2.     if (!isCache(key)) {
  3.         CACHE_LOADER.addBitmap(CacheUtils.hashKeyForCache(key), pixelMap);
  4.     }
  5. }
  6. public static PixelMap getPixelMap(String key) {
  7.     return CACHE_LOADER.getPixelMap(CacheUtils.hashKeyForCache(key));
  8. }

再來介紹第二種:DiskCache ,核心代碼如下,具體可以參考源碼:

 
 
 
 
  1. // Add緩存
  2. byte[] bytes = response.body().bytes();
  3. diskLruCacheImpl.addDiskCache(bytes, url);
  4. // Get緩存
  5. pixelMap = diskLruCacheImpl.getDiskCache(url);
  6. if (pixelMap != null) {
  7.     abilitySlice.getUITaskDispatcher().asyncDispatch(() -> {
  8.         image.setPixelMap(pixelMap);
  9.     });
  10. }

緩存架構圖如下:

代碼如下:

 
 
 
 
  1. public static void savePixelMap(String key, PixelMap pixelMap) {
  2.     if (!isCache(key)) {
  3.         CACHE_LOADER.addBitmap(CacheUtils.hashKeyForCache(key), pixelMap);
  4.     }
  5. }
  6. public static PixelMap getPixelMap(String key) {
  7.     return CACHE_LOADER.getPixelMap(CacheUtils.hashKeyForCache(key));
  8. }

最終模擬器展示一張網(wǎng)絡圖片效果圖如下:

在實現(xiàn)的過程中,我們可以在任何地方去調用OhosGlide 去展示網(wǎng)絡圖片,比如ListContainer加載列表

最后附上項目源碼:https://github.com/isoftstone-dev/Gilde_HarmonyOS.git

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

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

https://harmonyos.


新聞名稱:HarmonyOS三方件開發(fā)指南(14)-Glide組件功能介紹
網(wǎng)站URL:http://uogjgqi.cn/article/djcsdep.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流