0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

HarmonyOS的OhosGlide三方組件應(yīng)用介紹

鴻蒙系統(tǒng)HarmonyOS ? 來源:51CTO鴻蒙社區(qū) ? 作者:軟通田可輝 ? 2021-03-24 11:38 ? 次閱讀

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

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

指南

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

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

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

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

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

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

3.在我們需要加載網(wǎng)絡(luò)圖片的地方,實現(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)絡(luò)圖片,還需要加載本地圖片,具體代碼如下:

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

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

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

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

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

public static void savePixelMap(String key, PixelMap pixelMap) {
    if (!isCache(key)) {
        CACHE_LOADER.addBitmap(CacheUtils.hashKeyForCache(key), pixelMap);
    }
}
public static PixelMap getPixelMap(String key) {
    return CACHE_LOADER.getPixelMap(CacheUtils.hashKeyForCache(key));

}

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

// Add緩存
byte[] bytes = response.body().bytes();
diskLruCacheImpl.addDiskCache(bytes, url);
// Get緩存
pixelMap = diskLruCacheImpl.getDiskCache(url);
if (pixelMap != null) {
    abilitySlice.getUITaskDispatcher().asyncDispatch(() -> {
        image.setPixelMap(pixelMap);
    });
}

緩存架構(gòu)圖如下:

代碼如下:

public static void savePixelMap(String key, PixelMap pixelMap) {
    if (!isCache(key)) {
        CACHE_LOADER.addBitmap(CacheUtils.hashKeyForCache(key), pixelMap);
    }
}
public static PixelMap getPixelMap(String key) {
    return CACHE_LOADER.getPixelMap(CacheUtils.hashKeyForCache(key));

}

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

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

編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 鴻蒙系統(tǒng)
    +關(guān)注

    關(guān)注

    183

    文章

    2630

    瀏覽量

    66043
收藏 人收藏

    評論

    相關(guān)推薦

    HarmonyOS HiSpark AI Camera】基于HarmonyOS 重構(gòu)第三方3A算法

    項目名稱:基于HarmonyOS 重構(gòu)第三方3A算法試用計劃:1. 我有豐富的海思平臺開發(fā)經(jīng)驗,試用海思的3516,3519,3559AV100等產(chǎn)品量產(chǎn)過百萬級出貨量的產(chǎn)品,熟悉海思的ISP框架
    發(fā)表于 09-25 10:11

    【軟通動力】HarmonyOS三方件開發(fā)指南(2)——LoadingView組件

    `1.LoadingView組件功能介紹1.1.功能介紹:LoadingView組件是一個可以顯示加載動畫的三方
    發(fā)表于 03-18 14:12

    【軟通動力】HarmonyOS三方件開發(fā)指南(14)-Glide組件功能介紹

    占位圖、Gif圖、加載失敗圖、內(nèi)存浪費、內(nèi)存溢出、節(jié)約流量等,這時候就需要一款能夠處理這些問題,而且簡單易用且性能很高的圖片處理器了,因此OhosGlide三方組件應(yīng)運而生。功能介紹
    發(fā)表于 04-25 09:59

    【軟通動力】HarmonyOS三方件開發(fā)指南(15)-LoadingView功能介紹

    專門為移動開發(fā)設(shè)計的一個第三方開源庫,他的優(yōu)點如下:(1) 跨平臺(目前支持Android、iOS 、Web、React Native等平臺),本組件完成了Lottie再HarmonyOS上的移植。(2
    發(fā)表于 07-14 09:09

    HarmonyOS應(yīng)用開發(fā)-三方UI線程圖組件練習

    HarmonyOS已陸續(xù)推出1000+組件,包含UI、動畫圖形、框架、安全、工具、網(wǎng)絡(luò)、文件數(shù)據(jù)、多媒體、圖片緩存和基礎(chǔ)功能,具有多設(shè)備形態(tài)可用、多端部署、性能優(yōu)化大特點。使用組件
    發(fā)表于 10-23 11:13

    HarmonyOS組件更新,新增700+開源組件

    HarmonyOS-TPC倉庫,此倉庫收集了已經(jīng)開源的三方Java組件資源,開發(fā)者可以根據(jù)自身需求參考和使用。圖2 三方Java組件資源匯總
    發(fā)表于 11-18 11:17

    組件資料】HarmonyOS三方件開發(fā)指南

    1、HarmonyOS三方件開發(fā)指南——LoadingView組件1.LoadingView組件功能介紹1.1.功能
    發(fā)表于 03-21 11:18

    鴻蒙開源第三方組件資料合集

    /JustWeEngine )追蹤到原項目版本  項目介紹項目名稱:JustWeEngine所屬系列:ohos的第三方組件適配移植功能:JustWeEngine是托管在Gitee 的一個開源的Ohos原生
    發(fā)表于 03-23 09:53

    如何確定OpenVINO中第三方組件的相關(guān)許可?

    無法確定 OpenVINO?中第三方組件的相關(guān)許可。
    發(fā)表于 08-15 06:45

    三方實例:iView開發(fā)介紹 (1)

    三方實例介紹 - iView (1)
    的頭像 發(fā)表于 08-22 01:42 ?4292次閱讀

    鴻蒙開發(fā)中怎么引入第三方

    Android 發(fā)展到現(xiàn)在不僅提供了很多 API,還提供了很多第三方庫。這降低了我們開發(fā)者的開發(fā)難度,提升了開發(fā)效率,讓應(yīng)用開發(fā)更加的簡單高效。 眾所周知,HarmonyOS 除了提供 16000
    的頭像 發(fā)表于 10-11 14:11 ?3924次閱讀

    openharmony第三方組件適配移植之SimpleRatingBar

    項目介紹: 項目名稱:SimpleRatingBar 所屬系列:openharmony的第三方組件適配移植 功能:一個簡單的星級評分,您可以更輕松地自定義圖像和動畫。 項目移植狀態(tài):主功能完成 調(diào)用
    發(fā)表于 03-18 10:39 ?1次下載

    openharmony第三方組件適配移植的okhttp教程案例

    項目介紹 項目名稱:okhttp 所屬系列:openharmony的第三方組件適配移植 功能:PUT,DELETE,POST,GET等請求、文件的上傳下載、加載圖片(內(nèi)部會圖片大小自動壓縮)、支持
    發(fā)表于 04-12 09:25 ?4次下載

    openharmony第三方組件適配移植的數(shù)據(jù)庫組件

    項目介紹 項目名稱:DBFlow 所屬系列:openharmony的第三方組件適配移植 功能:DBFlow是一個快速、高效、功能豐富數(shù)據(jù)庫組件 項目移植狀態(tài):主功能完成 調(diào)用差異:無
    發(fā)表于 04-13 09:56 ?2次下載

    鴻蒙三方庫適配指南

    本文以 OpenHarmony-3.2-Beta4 上適配 modbus 編譯動態(tài)庫為例。 獲取三方庫 使用之前要做好代碼溯源,確認可用的版本,開源許可和發(fā)布方式等。 通過正確的路徑獲取源碼,可以
    的頭像 發(fā)表于 02-14 09:33 ?3220次閱讀