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

    文章

    2606

    浏览量

    65266
收藏 人收藏

    评论

    相关推荐

    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