<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

HarmonyOS的OhosGlide三方組件應用介紹

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

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

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

指南

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

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

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

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

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

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

3.在我們需要加載網絡圖片的地方,實現以下代碼,具體如下:

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) 默認展示圖片,當中途發生異常,展示默認的圖片

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

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

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

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

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

第二種就是我們說的磁盤緩存:DiskCache,設計磁盤緩存的核心理念就是當前設備沒有網絡的情況,訪問該頁面,如果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);
    });
}

緩存架構圖如下:

代碼如下:

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

}

最終模擬器展示一張網絡圖片效果圖如下:

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

編輯:hfy

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

    關注

    183

    文章

    2622

    瀏覽量

    65412
收藏 人收藏

    評論

    相關推薦

    HarmonyOS HiSpark AI Camera】基于HarmonyOS 重構第三方3A算法

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

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

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

    【軟通動力】HarmonyOS三方件開發指南(3)-AsyncHttpHarmony組件

    1. AsyncHttpHarmony功能介紹1.1。組件介紹在做HarmonyOS開發過程中,使用java原生的HttpsURLConnection實現網絡請求很難高效的達到預期的效
    發表于 03-23 14:10

    【軟通動力】HarmonyOS三方件開發指南(4)——Logger組件

    1.Logger功能介紹1.1.組件介紹:Logger是一款log日志打印組件,輸出的日志在開發工具的Hilog控制臺中, 結構比較清晰可分辨。1.2.手機模擬器上運行效果:2.Log
    發表于 03-25 09:16

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

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

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

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

    頭文件中包含第三方文件

    macrocmake如果源文件(例如 CPP)中包含第三方頭文件,但是頭文件(例如 hpp)中不包含該第三方文件頭,采用 PRIVATE。如果源文件和頭文件中都包含該第三方文件頭,采用 PUBLIC
    發表于 08-18 08:10

    HarmonyOS應用開發-三方UI線程圖組件練習

    HarmonyOS已陸續推出1000+組件,包含UI、動畫圖形、框架、安全、工具、網絡、文件數據、多媒體、圖片緩存和基礎功能,具有多設備形態可用、多端部署、性能優化大特點。使用組件
    發表于 10-23 11:13

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

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

    組件資料】HarmonyOS三方件開發指南

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

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

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

    快速移植OpenHarmony到三方芯片平臺的方法

    移植概述本文面向希望將OpenHarmony移植到三方芯片平臺硬件的開發者,介紹一種借助三方芯片平臺自帶Linux內核的現有能力,快速移植OpenHarmony到三方芯片平臺的方法。移
    發表于 04-12 11:08

    PhotoView——支持圖片縮放、平移、旋轉的一個優雅的三方組件

    PhotoView——支持圖片縮放、平移、旋轉的一個優雅的三方組件簡介PhotoView是OpenAtom OpenHarmony(簡稱“OpenHarmony”)系統的一款圖片縮放及瀏覽的三方
    發表于 09-16 10:30

    HarmonyOS線上Codelabs系列挑戰賽第二期:調用三方庫,制作酷炫的視覺效果

    ,Battle技藝,探索HarmonyOS的魅力。在上一期的挑戰賽中,大家嘗試了Stage模型Ability的創建與使用(ArkTS)。本期,我們將:挑戰調用第三方庫,制作酷炫的視覺效果。加入本期挑戰
    發表于 11-14 16:31

    如何確定OpenVINO中第三方組件的相關許可?

    無法確定 OpenVINO?中第三方組件的相關許可。
    發表于 08-15 06:45
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>