在当下移动直播火爆的年代,如果你曾经使用过移动端直播应用,相信会被里面那令人惊叹的礼物动画效果迷住,比如像下面这样的效果。

从开发人员的角度来看,这样的效果虽然漂亮,实现但却是一大挑战,除了要考虑编码实现的效率、性能表现外,还要结合直播业务本身的特性等。

实现思路

首先,从实现思路方面入手,有以下几个方案作为考虑:

  • 方案一:帧动画;

  • 方案二:属性动画;

  • 方案三:Gif或WebP;

  • 方案四:实现一套播放动画的框架,客户端只需要继承进来,UI设计师按照约定的动画语法作图给开发人员即可;(原理类似SVG)

从实现性能、效率以及复用角度上来看,我们最终采用了最后一种方案。

  • 方案一需要把图片带到安装包中,增大了安装包体积,而且直播应用中礼物种类很多,每个礼物都带一套帧动画进去,相当不科学。

  • 方案二开发代价较大,每一套礼物动画基本都不一样,开发人员需要去细细调参,花在业务上编码的时间会变得非常有限,从代码复用率极低。

方案一、二除了以上提到的缺陷外,还有一个直播业务场景问题没有解决,就是当客户端发布之后,想要上架一些新设计的礼物就必须要让用户升级客户端,否则是无法体验到新上架的礼物。

方案三没有以上提到的业务问题,但在性能方面并不是最优选择。Gif图实质上就是把一帧帧的静态图片打包到一起,打成一个压缩包,但是由于Gif的压缩算法问题,实际上这个压缩包一点都不小,随便一个炫酷点的礼物效果都能弄个几兆到十几兆不等的文件出来,对于移动端来说,不论从下载和播放的性能表现上都差强人意。Gif图片能做的动画,WebP格式的图片同样可以实现,且WebP图片要比Gif图小很多,下图是同样效果用Gif和WebP的实现对比。

复杂WebP动图在编解码时,性能上表现得差强人意,而且虽然Android在4.0时开始支持WebP,但是要支持有损且带透明像素的WebP得到Android 4.2.1之后。Gif和WebP图片还有一个场景上的缺陷是,如果我要在播放到某一帧动画时,动态插入一些帧,实现起来难度较大,就像我们最近上线的产品Orangy里面的一个配对动画的效果,在爱心桃的中间某一帧插入两个配对者的头像。

前面铺垫了这么多,最终还是为了带出我们的主角,方案四。方案四是YY UED团队所研发的一套动画实现方案,作者给它起了名字叫SVGA,目前已经在YY系的很多产品线上良好运行着,下面简单的介绍它的优点:

  • 对切图小哥和写Bug小哥友好,嗯,没错,再也不用互相伤害了。

  • 高效,终端只需要继承这套方案框架,把动画实现交给动画设计师即可。

  • 高性能,在实现酷炫动画的基础上,播放性能表现优于Gif和WebP。

  • 动画文件小,同样的动画效果,SVGA文件要比Gif和WebP的文件小得多。

  • 跨平台,支持Android、iOS、React Native、Web、还有不久前刚出来的微信小程序,不过小程序上的绘制功能很弱,效果有点感人。

  • 开源,可以直接访问YY UED的Github获取框架源码 https://github.com/yyued

具体各种使用姿势,可以参考开源库中README上的说明,或者访问SVGA的官网 http://svga.io 。

实现原理

如果你熟悉SVG,那么理解起SVGA的实现原理并不会很困难,今天太晚了,下篇文章会继续聊,感兴趣的同学可以阅读源码先睹为快,在没有看代码之前,你会怎么觉得内部是怎么实现的呢?。哦,对了,这套代码的作者Pony(我经常叫他崔神)是个全栈大佬,之前写Java时觉得语法太繁琐,后面干脆用Kotlin重写了整套框架,就是这么任性,我时常问崔神需不需要端茶递水的小弟,结果他总是不缺…

引用

  • https://isparta.github.io/compare-webp/index_a.html#12

直播App中Android酷炫礼物动画实现方案(上篇)相关推荐

  1. 直播App中Android酷炫礼物动画如何通过直播程序源码实现方案

    直播App中Android酷炫礼物动画如何通过直播程序源码实现方案 这个动画,如果输出成GIF的话,要3MB,尺寸是750*750.在上一篇文章中已经介绍过几种被否掉的方法,这里再稍作补充说明,如果使 ...

  2. 直播系统源码App中Android酷炫礼物动画直播平台源码搭建教程(上篇)

    直播系统源码App中Android酷炫礼物动画直播平台源码搭建教程(上篇) 在当下移动直播火爆的年代,如果你曾经使用过移动端直播应用,相信会被里面那令人惊叹的礼物动画效果迷住,比如像下面这样的效果. ...

  3. 成品app直播源码中Android酷炫礼物动画实现方案(上篇)

    成品app直播源码中Android酷炫礼物动画实现方案(上篇) +在当下移动直播火爆的年代,如果你曾经使用过移动端直播应用,相信会被里面那令人惊叹的礼物动画效果迷住,比如像下面这样的效果. 从开发人员 ...

  4. 直播App中酷炫礼物动画实现方案

    SVGA 介绍 SVGA 是一种动画格式 SVGA 类似于 Dragonbones / CreateJS 如视频: svga-礼物-跑车001 格式规范 1.x 1.x 使用 JSON 描述动画,JS ...

  5. android酷炫转圈动画,android常用旋转线条加载动画

    想要知道关于更多自定义View的实例,请参考:android自定义View索引 先上个效果图,以免大家跑错地了. 嗯,整个来说呢,除了舍不得充VIP去掉水印之外,其他都挺好的. 下面开始实现我们的效果 ...

  6. Lottie 站在巨人的肩膀上实现 Android 酷炫动画效果

    说到动画效果,一般都会感到很高端,感觉很酷炫:而小菜技术有限,稍复杂的动画效果也需要很多时间处理,但是遇到时间紧任务重的情况该怎么办呢?那就尝试一下 Lottie 吧,酷炫的动画集成却相当简单,还支持 ...

  7. android 添加json动画,Lottie 站在巨人的肩膀上实现 Android 酷炫动画效果

    说到动画效果,一般都会感到很高端,感觉很酷炫:而小菜技术有限,稍复杂的动画效果也需要很多时间处理,但是遇到时间紧任务重的情况该怎么办呢?那就尝试一下 Lottie 是个啥? Lottie 咋集成?bu ...

  8. 提供 Android 酷炫的开屏动画 (awesome-opening-animation)

    FancyView 项目地址:wongzy/FancyView  简介:提供 Android 酷炫的开屏动画 (awesome-opening-animation) 更多:作者   提 Bug 标签: ...

  9. 微信/微博的图片处理?-android酷炫图片处理(下)

    微信一向是Android开发者们模仿的对象,上篇文章中,我介绍了一个和微信图片压缩,压缩效果差不多的库Luban,这篇文章还会介绍高仿微信从文件系统选择图片.此外微博加载超长大图功能也很酷炫(其实微信 ...

最新文章

  1. python 中*args 和 **kwargs的区别
  2. 网络公司千千万,放心委托看这里!
  3. darwin转发时,摄像机在3G和4G模式下的参数设置
  4. 如何使用python爬取百度图片_python实现爬取百度图片的方法示例
  5. 使用Remix编写Solidity语言的小例子
  6. 奇偶数判断(信息学奥赛一本通-T1041)
  7. CodeIgniter典型的表单提交验证代码
  8. Overview of HEVC之3 术语
  9. php 枚举类型比较,PHP 枚举类型的管理与设计知识点总结
  10. 写题10分钟,写题解8小时,一道头条面试题,真心难。
  11. VTD场景搭建指南-搭建一个最简单的场景
  12. CS 3:威胁情报解决方案峰会——数据是威胁情报的基础
  13. MovieClip添加点击事件
  14. 【REACT-受控组件和非受控组件】
  15. linux基础操作--参考狂神说
  16. 仿真或极简,用户界面的美丽与哀愁
  17. 计算机专业云平台管理试题,练习题云平台/计算机软考考试试题-考试系统
  18. Linux网络配置和常用命令
  19. word 无法复制粘贴怎么办
  20. python图像清晰度_python 图像判断,清晰度(明暗),彩色与黑白实例

热门文章

  1. 解决sed替换文本,里面含有“/“、“#”等特殊字符的问题
  2. 软件确认与软件验证的区别
  3. 【日常笔记系列】在PostgreSQL中使用Dapper时不能使用in?
  4. 启动vue项目时报错:digital envelope routines::unsupported
  5. 计算机组成与设计(5)-----存储器-管理
  6. 为什么计算机无法检测到照相机,USB为何无法识别
  7. 计算机教师使用计划书,教师个人计算机学习计划书
  8. Python爬取当贝市场APK应用信息并下载
  9. 移动端适配的理解和各种方案解析(详解)
  10. C/C++的编译和链接过程