动效工具Lottie
 
Lottie 是 Airbnb 开源的一套跨平台的完整的动画效果解决方案,设计师可以使用 Adobe After Effects 设计出漂亮的动画之后,使用 Lottic 提供的 Bodymovin 插件将设计好的动画导出成 JSON 格式,就可以直接运用在 iOS、Android、Web 和 React Native之上,无需其他额外操作。
从网络请求加载动画: Lottie 的一个优点是可以从网络请求加载动画。所以,应该将网络请求的响应内容转换为字符串格式。
Lottie 核心类
LottieAnimationView:继承自 AppCompatImageView,是加载 Lottie 动画的默认和最简单的方式。
LottieDrawable:具有大多数与 LottieAnimationView 相同的 API,因此可以在任何视图上使用它。
使用方法
func buildLOTAnimationView(_ resourceUrl: String) throws -> LOTAnimationView {
//网络下载
let lotView = try LOTAnimationView(contentsOf: URL(string: ""))
//本地加载
let zipPath = MyCache.cacheDataPath(for: resourceUrl)
let lotView = try LOTAnimationView.animation(withFilePath: "\(zipPath!)/data.json", error: ())
lotView.frame = UIScreen.main.bounds
lotView.contentMode = .scaleAspectFill
lotView.loopAnimation = true
lotView.play()
return lotView
}
动效工具PAG
PAG(Portable Animated Graphics)是腾讯自主研发的一套完整的动画工作流解决方案,助力于将 AE 动画方便快捷的应用于各平台终端。和 Lottie、SVGA 相比,支持的 AE 特性更多,支持的平台更广(增加了 mac OS、Windows 和 Linux),性能方面也做了深层次的优化,支持图层编辑,可以与视频编辑场景紧密结合
文件格式方面
Lottie 导出素材格式是 json 文本,可读性高,但是承载 AE 特性能力差,文件体积大,解码速度慢。SVGA 使用 ProtoBuffer 序列化,解码速度快,最终生成的文件直接使用 zip 压缩。PAG 采用二进制的编码方法,配套自研编解码器,动态比特位压缩,冗余信息极少,文件体积最小,解码速度最快,且支持图片和音频信息编码。
平台端支持方面
目前 Lottie 仅支持 Android、iOS、web、mac OS,SVGA 支持 Android、iOS 和 web 端,PAG 可以支持到 Android、iOS、web、mac OS、windows、Linux,涵盖到所有平台。
使用方法
//1.读取PAG素材文件, pagPath为pag动画的模版文件
pagFile = PAGFile.load(pagPath) //2.替换模版资源
private func replacePag(image: UIImage, index: Int) {
let pagImage = PAGImage.fromCGImage(image.cgImage)
pagImage?.setScaleMode(PAGScaleModeZoom)
pagFile?.replaceImage(Int32(index), data: pagImage)
}
private func replacePag(text: String, index: Int) {
let pagText = pagFile?.getTextData(Int32(index))
pagText?.text = text
pagFile?.replaceText(Int32(index), data: pagText)
} //3.创建PAG播放视图PAGView
self.pagView = PAGView.init(frame: self.view.bounds)
if let pagView = self.pagView {
//关联PAGView和PAGFile
pagView.setComposition(self.pagFile)
pagView.setRepeatCount(0)
pagView.setMaxFrameRate(30)
pagView.setCacheScale(0.8)
}
参考文章:
https://juejin.cn/post/6844903661760413704
https://github.com/Tencent/libpag/blob/main/README.zh_CN.md
https://cloud.tencent.com/developer/inventory/25439/article/1935722

移动端跨平台动效工具Lottie, PAG的使用的更多相关文章

  1. 前端必须收藏的CSS3动效库!!!

    现在的网站和App的设计中越来越重视用户体验,而优秀的动效则能使你的应用更具交互性,从而吸引更多用户的使用. 如果你对CSS3中定义动效还不熟练,或希望采用更加简单直接的方式在你的应用中引入动效的话, ...

  2. 【总结】前端必须收藏的CSS3动效库!!!

    现在的网站和App的设计中越来越重视用户体验,而优秀的动效则能使你的应用更具交互性,从而吸引更多用户的使用. 如果你对CSS3中定义动效还不熟练,或希望采用更加简单直接的方式在你的应用中引入动效的话, ...

  3. iOS开发之 Lottie -- 炫酷的动效

    动效在软件开发中非常常见,炫酷的动画能提升应用的B格,然而由设计师的设计转化成程序猿GG的代码是个非常"痛苦"的过程.对于复杂动画,可能要花费很多时间去研究和实现.Lottie 的 ...

  4. HMS Core 3D流体仿真技术,打造移动端PC级流体动效

    移动设备硬件的高速发展,让游戏行业发生翻天覆地的变化,许多酷炫的游戏效果不再局限于电脑端,玩家在移动端就能享受到场景更逼真.画质更清晰.体验更流畅的游戏服务.但由于移动设备算力不足,为了实现真实感的水 ...

  5. 玩转HTML5移动页面(动效篇)

    原文:http://www.grycheng.com/?p=458 作为一名前端,在拿到设计稿时你有两种选择: 1.快速输出静态页面 2.加上高级大气上档次狂拽炫酷屌炸天的动画让页面动起来 作为一个有 ...

  6. QQ音乐的动效歌词是如何实践的?

    本文由云+社区发表 作者:QQ音乐技术团队 一. 背景 1. 现状 歌词浏览已经成为音乐app的标配,展示和动画效果也基本上大同小异,主要是单行的逐字染色的卡拉OK效果和多行的滚动效果.当然,我们也不 ...

  7. 最火移动端跨平台方案盘点:React Native、weex、Flutter

    1.前言 跨平台一直是老生常谈的话题,cordova.ionic.react-native.weex.kotlin-native.flutter等跨平台框架的百花齐放,颇有一股推倒原生开发者的势头. ...

  8. H5动效的常见制作手法

    众所周知,一个元素,动往往比静更吸引眼球: 一套操作界面,合适的动态交互反馈能给用户带来更好的操作体验: 一个H5运营宣传页,炫酷的动画特效定能助力传播和品牌打造. 近两年,小到loading动画,表 ...

  9. 玩转HTML5移动页面(动效篇)

    为一名前端,在拿到设计稿时你有两种选择: 快速输出静态页面 加上高级大气上档次狂拽炫酷屌炸天的动画让页面动起来 作为一个有志向的前端,当然是选2啦!可是需求时间又很短很短,怎么办呢? 这次就来谈谈一些 ...

  10. 转:玩转HTML5移动页面(动效篇)

    作为一名前端,在拿到设计稿时你有两种选择: 1.快速输出静态页面 2.加上高级大气上档次狂拽炫酷屌炸天的动画让页面动起来 作为一个有志向的前端,当然是选2啦!可是需求时间又很短很短,怎么办呢? 这次就 ...

随机推荐

  1. OKR之剑·实战篇05:OKR致胜法宝-氛围&业绩双轮驱动(上)

    作者:vivo 互联网平台产品研发团队 本文是<OKR 之剑>系列之实战第 5 篇-- 我们的OKR执行如此顺利,离不开我们的"双轮驱动".类似于亚马逊的"飞 ...

  2. 如何把thinkphp5的项目迁移到阿里云函数计算来应对流量洪峰?

    原文链接:https://developer.aliyun.com/article/982746 1. 为什么要迁移到阿里云函数? 我的项目是一个节日礼品领取项目,过节的时候会有短时间的流量洪峰.平时 ...

  3. git速查

  4. Liunx运维(四)-文本处理三剑客:grep、sed、awk

    文档目录: 一.grep:文本过滤工具 二.sed:字符流编辑器 三.awk:文本分析工具 ---------------------------------------分割线:正文--------- ...

  5. 每天学五分钟 Liunx 0010 | 软件篇: RPM 和 YUM

    1. RPM RPM(RedHat Package Manager),顾名思义是 RedHat 的软件包管理器.它遵循 GPL 规则且功能强大好用,从而逐渐运用到其它 Liunx 发行版中,包括 Fe ...

  6. Angular系列教程之模板语法

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  7. Verilog仿真实践

    Verilog必须掌握 逻辑仿真工具(VCS)和逻辑综合工具(DC) AndOR module AndOr( output X,Y, input A,B,C ); // A B进行按位与运算 assi ...

  8. 【C++】类概念及使用

    类定义中不允许对数据成员初始化 类外只能访问公有部分 类成员必须指定访问属性 类的成员函数是实现对封装的数据成员进行操作的唯一途径 类定义中不允许定义本类对象,因无法预知大小 类与结构形式相同,唯一区 ...

  9. css - absolute居中

    position:absolut; left:50%; top:50%; margin-left:  -(自身一半宽度); margin-top: -(自身一半高度)

  10. CentOS7挂载webdav添加开机启动

    CentOS7挂载webdav添加开机启动 一.安装davfs2 yum install davfs2 二.挂载 1.新建挂载位置 mkdir -p /guazai chmod +x /guazai ...