当前位置: 首页 > news >正文

Android Lottie 体积优化实践:从 6.4 MB 降到 530 KB

一、说明

产品提出需求:用户有 8 个等级,每个等级对应一个奖牌动画。

按照常用的实现方式:

  1. 设计提供 8 个 lottie 动画(8 个 json 文件)。
  2. 研发将 json 文件打包进入 APK 中。
  3. 根据不同等级播放指定的动画。

每一个 json 文件平均是 800 KB,8 个的话是 6.4 MB。

实现这个功能直接将包体积增加 6.4 MB 的话,增加太多了。

有没有什么办法将体积降低一些呢?

二、优化方案

方案 1:动态下发

可以提前将 json 文件上传到云端,然后通过接口动态下发下载地址,客户端下载下来后再显示动画。

由于我的业务特殊性,需要能够及时显示动画,并且下载失败对业务有较大影响,最终并未采用该方案。

方案 2:图文分离

通常动画文件中既包含动画展示逻辑信息,也包含图片(将图片转为 base64 文本,存储在 json 文件中)。

尝试将图片拿出来放到一个文件夹中后,减少:

  • 单个奖牌:800 KB 减少到 600 KB
  • 8 个等级:6.4 MB 减少到 4.8 MB

方案 3:图片格式转换

之前的图片用的是 png 格式的图片,尝试将其转为 webp 格式后,体积又有相应的减少:

  • 单个奖牌:215 KB
  • 8 个等级:1.68 MB

方案 4:逻辑共用

通常 8 个奖牌动画对应的是 8 个 json 文件,和 8 套图片。

问题:可否 8 个动画共用一个 json 文件,只替换掉其中的不同的奖牌部分呢?

答案是:可以。

我们将所有的等级图片放到一个文件夹中,根据不同的等级动态替换 json 中的图片配置,这样就实现了只用一个 json 即可,奖牌以外的图片也可以实现共用。

这样调整后当前的动画体积变为了:530 KB

三、总结

图文分离、webp 格式、逻辑共用和动态下发都可以有效降低包体积的占用,大家在开发中可以根据自己的业务场景选择合适的方案进行优化处理。

相关文章:

Android Lottie 体积优化实践:从 6.4 MB 降到 530 KB

一、说明 产品提出需求:用户有 8 个等级,每个等级对应一个奖牌动画。 按照常用的实现方式: 设计提供 8 个 lottie 动画(8 个 json 文件)。研发将 json 文件打包进入 APK 中。根据不同等级播放指定的动画。 每一个 …...

Django前端页面-模板继承

通过模板的继承&#xff0c;可以将所有共同的前端页面移到母版&#xff0c;那么其他页面就可以用到母版了。 这是母版 <!DOCTYPE html> <html><head>{% block css %}{% endblock %}</head><body><h1>母版</h1><div><!-- …...

使用HTML、CSS和JavaScript编写一个注册界面(一)

倘若文章或代码中有任何错误或疑惑&#xff0c;欢迎提出交流哦~ HTML和CSS 首先&#xff0c;我们需要编写一个简洁的注册界面。 简单编写下&#xff0c;如下&#xff1a; 呈现效果为&#xff1a; <!DOCTYPE html> <html lang"en"><head><me…...

什么是档案数字化管理

档案数字化管理指的是将传统的纸质档案转换为数字形式&#xff0c;并通过电子设备、软件和网络技术进行管理和存储的过程。 档案数字化管理包括以下几个步骤&#xff1a; 1. 扫描和数字化&#xff1a;将纸质档案通过扫描仪转换为数字图像或文档。可以使用OCR&#xff08;光学字…...

vuInhub靶场实战系列--prime:1

免责声明 本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关。 目录 免责声明前言一、环境配置1.1 靶场信息1.2 靶场配置 二、信息收集2.1 主机发现2.1.1 netdiscover2.1.2 nmap主机扫描2.1.3 arp-scan主机扫描 2.2 端口扫描…...

L48---1637. 两点之间不包含任何点的最宽垂直区域(排序)---Java版

1.题目描述 2.思路 &#xff08;1&#xff09;返回两点之间内部不包含任何点的 最宽垂直区域 的宽度。 我的理解是相邻两个点&#xff0c;按照等差数列那样&#xff0c;后一个数减去相邻的前一个数&#xff0c;才能保证两数之间不含其他数字。 &#xff08;2&#xff09;所以&…...

在线渲染3d怎么用?3d快速渲染步骤设置

在线渲染3D模型是一种高效的技术&#xff0c;它允许艺术家和设计师通过互联网访问远程服务器的强大计算能力&#xff0c;从而加速渲染过程。无论是复杂的场景还是高质量的视觉效果&#xff0c;在线渲染服务都能帮助您节省宝贵的时间。 在线渲染3D一般选择的是&#xff1a;云渲染…...

《软件定义安全》之二:SDN/NFV环境中的安全问题

第2章 SDN/NFV环境中的安全问题 1.架构安全 SDN强调了控制平面的集中化&#xff0c;从架构上颠覆了原有的网络管理&#xff0c;所以SDN的架构安全就是首先要解决的问题。例如&#xff0c;SDN实现中网络控制器相关的安全问题。 1.1 SDN架构的安全综述 从网络安全的角度&…...

Qt图表类介绍

本文主要介绍QCharts相关的模块及类。 Qt中图表模块有以下几种类型&#xff1a;折线图&#xff0c;样条曲线图&#xff0c;面积图&#xff0c;散点图&#xff0c;条形图&#xff0c;饼图&#xff0c;方块胡须图&#xff0c;蜡烛图&#xff0c;极坐标图。 QCharts的图表框架类似…...

时隔很久运行苍穹外卖项目,出现很多错误

中途运行了很多其他项目&#xff0c;maven的配置文件还被我修改了一次。导致再次运行苍穹外卖项目出现很多错误。 发现没有办法&#xff0c;把本地的仓库删了个干干净净。然后点击clean发现报错&#xff1a; Cannot access alimaven (http://mavejavascript:void(0);n.aliyun.…...

补篇协程:协程(Coroutine)里通过挂起suspend函数实现异步IO操作

异步IO的概念 异步IO是一种非阻塞的数据读写方法&#xff0c;异步IO与同步IO相对。 当一个异步过程调用发出后&#xff0c;调用者不能立刻得到结果。 实际的IO处理部件在完成操作后&#xff0c;会通过状态、通知或回调机制来通知调用者。 在一个CPU密集型的应用中&#xff0c…...

qmt量化交易策略小白学习笔记第16期【qmt编程之获取北向南向资金(沪港通,深港通和港股通)】

qmt编程之获取北向南向资金 qmt更加详细的教程方法&#xff0c;会持续慢慢梳理。 也可找寻博主的历史文章&#xff0c;搜索关键词查看解决方案 &#xff01; 北向南向资金&#xff08;沪港通&#xff0c;深港通和港股通&#xff09; #北向南向资金交易日历 获取交易日列表…...

开源项目学习——vnote

一、介绍 vnote是一款免费且开源的markdown编辑器&#xff0c;用C开发&#xff0c;基于Qt框架&#xff0c;windows/linux/mac都能用。 二、编译 $ git clone --recursive https://github.com/vnotex/vnote.git $ cd vnote && mkdir build $ cd build $ cmake ../ $ …...

5_1 Linux 计划任务

5_1 Linux 计划任务 文章目录 5_1 Linux 计划任务[toc]1. crontab 命令2. 计划任务书写格式 用途&#xff1a;按照设置的时间间隔&#xff0c;为用户反复执行某一固定的系统任务 软件包&#xff1a;cronie、crontabs 系统服务&#xff1a;crond 日志文件&#xff1a;/var/log/c…...

接口框架项目实战-pytest(六)csv数据驱动

csv 数据驱动 为了解决数据量大 导致yaml文件重复太多 yaml_util.py import osimport jsonpath import yamlfrom pytestdemo.common.base_util import get_path from pytestdemo.common.csv_util import analysis_parametersdef read_config_file(one_node,two_node):with ope…...

【Apache Doris】周FAQ集锦:第 5 期

【Apache Doris】周FAQ集锦&#xff1a;第 5 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目&#xff01; 在这个栏目中&#xff0c;每周将筛选社区反馈的热门问题和话题&#xff0c;重点回答并进行深入探讨。旨在为广大用户和…...

再读高考作文题

新课标I卷&#xff1a;讨论了随着互联网和人工智能的普及&#xff0c;问题是否会变得越来越少&#xff0c;要求考生写一篇文章&#xff0c;表达自己对于这一现象的联想和思考。 从来就没有什么救世主 AI也不是​​​​​ 一直不会写作文&#xff0c;直到高中&#xff0c;才堪堪…...

小程序中实现自定义头部导航组件

在页面中实现自定义头部导航的组件&#xff0c;如果仅是单个页面中需要自定义可在页面的json文件中配置"navigationStyle": “custom”&#xff0c;如果是项目中所有页面都想使用自定义的组件&#xff0c;可在app.json的window中全局配置"navigationStyle"…...

算数运算符与表达式(打印被10整除的数)

打印100以内&#xff08;包含100&#xff09;能被10整除的正整数 #include <stdio.h>#define UPPER 100int main() {int i 1;while (i < UPPER)if (i % 10 0)printf("%d\n", i);return 0; } 自增运算符 i 用于递增变量 i 的值。在 while 循环中&#xf…...

kv视频如何转码mp4格式,kv转换mp4最简单方法

在数字化时代&#xff0c;视频格式转换成为了一项日常需求。有时候我们需要把kv格式转换为MP4格式。下面将详细介绍kv转MP4的方法 方法一、 1、使用 "小白兔视频格式在线转换网站" 2、地址发给"小白兔视频格式在线转换网站"的客服&#xff0c;客服下载即可…...

ChromePass终极指南:浏览器密码提取与安全管理完全攻略

ChromePass终极指南&#xff1a;浏览器密码提取与安全管理完全攻略 【免费下载链接】chromepass Get all passwords stored by Chrome on WINDOWS. 项目地址: https://gitcode.com/gh_mirrors/chr/chromepass 副标题&#xff1a;从密码危机到数据掌控&#xff1a;3步实现…...

告别加班!3个Word神技巧,文档处理快人一步

如影随形地跟着那堆积如山的文档&#xff0c;像学生名单&#xff0c;课程表&#xff0c;教学计划&#xff0c;家长通知等等&#xff0c;这些重复性工作着实耗费了大量精力。事实上&#xff0c;Word当中蕴含着好些能够让你达成事半功倍效果的技巧&#xff0c;一旦将它们掌握住&a…...

SignalAcquisition:嵌入式高精度信号采集与二进制串行传输框架

1. SignalAcquisition 库深度解析&#xff1a;面向嵌入式信号采集的高精度时序控制与二进制串行传输框架1.1 库定位与工程价值SignalAcquisition 是一个专为 Arduino IDE 设计的轻量级、高确定性信号采集库&#xff0c;其核心目标并非提供通用传感器驱动&#xff0c;而是构建一…...

5分钟搞懂3GPP NTN标准:从Release16到19的关键技术演进与实战应用

5分钟搞懂3GPP NTN标准&#xff1a;从Release16到19的关键技术演进与实战应用 当全球通信行业将目光投向低轨卫星星座与高空平台时&#xff0c;3GPP的NTN&#xff08;非地面网络&#xff09;标准正在重塑连接边界。本文将以工程师视角&#xff0c;带您穿透技术文档迷雾&#xf…...

Matlab实战:5步搞定微电网源储荷协调调度(附完整CPLEX调用代码)

Matlab实战&#xff1a;微电网源储荷协调调度的5个工程化技巧 微电网调度是新能源时代的核心技术难题之一。面对风光发电的波动性和负荷需求的多变性&#xff0c;如何实现源、储、荷三者的动态平衡&#xff0c;成为电力工程师们每天都要应对的挑战。不同于学术论文中复杂的理论…...

2026年03月26日全球AI前沿动态

一句话总结全球AI领域密集发布技术、产品、企业动态&#xff0c;覆盖通用/垂直大模型、专项技术、智能体、机器人、硬件基建等全赛道&#xff0c;中国AI在视频、音乐、办公智能体领域领跑&#xff0c;OpenAI关停Sora战略转型&#xff0c;Arm、苹果、腾讯等大厂新品落地&#xf…...

vLLM-v0.17.1详细步骤:vLLM + Triton Ensemble实现多模型协同推理

vLLM-v0.17.1详细步骤&#xff1a;vLLM Triton Ensemble实现多模型协同推理 1. vLLM框架简介 vLLM是一个专为大型语言模型(LLM)设计的高性能推理和服务库&#xff0c;以其出色的吞吐量和易用性著称。这个项目最初由加州大学伯克利分校的天空计算实验室开发&#xff0c;现在已…...

OpenRocket全栈实战手册:从仿真引擎到航天教育生态构建

OpenRocket全栈实战手册&#xff1a;从仿真引擎到航天教育生态构建 【免费下载链接】openrocket Model-rocketry aerodynamics and trajectory simulation software 项目地址: https://gitcode.com/GitHub_Trending/op/openrocket 价值定位&#xff1a;重新定义航天工程…...

遗传算法 TWVRP 运筹优化调度 混合整数规划 带时间窗多车的物流配送路径优化 贵有贵的道理...

遗传算法 TWVRP 运筹优化调度 混合整数规划 带时间窗多车的物流配送路径优化 贵有贵的道理&#xff0c;代码质量高&#xff0c;有中文注释 只有修改表格中数据即可生成想要的配送路径上周点奶茶发现骑手绕了远路还差点超时&#xff0c;突然就想起之前折腾过的带时间窗多车配送路…...

告别手动修改!用Env文件管理器一键配置Allegro SKILL加载路径(支持16.6/17.4)

告别手动修改&#xff01;用Env文件管理器一键配置Allegro SKILL加载路径&#xff08;支持16.6/17.4&#xff09; 在PCB设计领域&#xff0c;Allegro作为行业标杆工具&#xff0c;其强大的可扩展性离不开SKILL脚本的支持。然而&#xff0c;随着项目复杂度提升&#xff0c;SKILL…...