衡阳派盒市场营销有限公司

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

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

3天內不再提示

HarmonyOS的OhosGlide三方組件應用介紹

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

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

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

指南

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

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

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

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

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

其次在content.json 中添加需要的權限(由于在開發(fā)過程中,需要用到網絡,以及存儲權限,所以需要在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) 默認展示圖片,當中途發(fā)生異常,展示默認的圖片

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

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

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

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

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

    評論

    相關推薦

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

    項目名稱:基于HarmonyOS 重構第三方3A算法試用計劃:1. 我有豐富的海思平臺開發(fā)經驗,試用海思的3516,3519,3559AV100等產品量產過百萬級出貨量的產品,熟悉海思的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圖、加載失敗圖、內存浪費、內存溢出、節(jié)約流量等,這時候就需要一款能夠處理這些問題,而且簡單易用且性能很高的圖片處理器了,因此OhosGlide三方組件應運而生。功能介紹
    發(fā)表于 04-25 09:59

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

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

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

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

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

    HarmonyOS-TPC倉庫,此倉庫收集了已經開源的三方Java組件資源,開發(fā)者可以根據自身需求參考和使用。圖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中第三方組件的相關許可?

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

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

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

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

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

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

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

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

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

    openharmony第三方組件適配移植的數據庫組件

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

    鴻蒙三方庫適配指南

    本文以 OpenHarmony-3.2-Beta4 上適配 modbus 編譯動態(tài)庫為例。 獲取三方庫 使用之前要做好代碼溯源,確認可用的版本,開源許可和發(fā)布方式等。 通過正確的路徑獲取源碼,可以
    的頭像 發(fā)表于 02-14 09:33 ?3650次閱讀
    百家乐官网云顶| 东乡县| 东明县| 试用的百家乐官网软件| 百家乐真人投注网站| 好运来百家乐的玩法技巧和规则| 棋牌室营业执照| 百家乐官网代理每周返佣| 台东市| 蓝盾百家乐官网庄家利润分| 百家乐2万| 一起pk棋牌游戏下载| 金鼎百家乐局部算牌法| 云顶国际注册| 都坊百家乐官网的玩法技巧和规则 | 24楼风水化解| 大发888娱乐场c17| 百家乐官网平注胜进与负追| 百家乐看澳门| 百家乐官网现场网络| 折式百家乐赌台| 大发888 网站被攻击了| 百家乐官网博乐36bol在线| 百家乐技巧辅助软件| 兴业县| 尊龙百家乐赌场娱乐网规则 | 利来国际开户| 百家乐官网微乐| 大发888娱乐场怎样下载| 六合彩百家乐官网有什么平码| 百家乐剁手| 政和县| 百家乐没边| 百家乐官网官方网址| 百家乐庄闲客户端| 鸿利国际| 百家乐平台哪个好本站所有数据都是网友推荐及提供 | 百家乐官网赌博大揭密| 威尼斯人娱乐城上不了| 百家乐官网六手变化混合赢家打法 | 玩百家乐官网有何技巧|