在最近做的直播源代码中,直播源代码要求发送礼物时,需要显示对应的礼物动画,其中几个礼物动画效果如下:

看了这几个动画效果,是挺炫酷的,妥妥的能够增加用户体验,但是实现起来可就没那么容易了。

直播源代码中动画实现方案,主要有以下几种:

(1)Frame Animation(逐帧动画)

(2)Tween Animation (补间动画)

(3)Property Animation(属性动画)

(4)GIF/WebP动画图片

逐帧动画需要UI设计师将每个动画拆成一张张的图片,那么每一个礼物动画都需要一套帧动画图片,这样无疑会增加安装包的体积。

补间动画或者属性动画开发实现难度较大

GIF动画,就是每一个动画就是一张GIF图片,但是GIF动画图片较大,一般的GIF图片都要几兆到几十兆,这样在移动设备上去播放这个动画,性能体验上就比较差了。

WebP动画图片体积要比GIF动画图片小很多复杂,WebP动图在编解码时,性能上表现得差强人意,而且虽然Android在
4.0时开始支持WebP,但是要支持有损且带透明像素的WebP得到Android 4.2.1之后。

除了以上几种动画实现方案,还有一些动画框架可供我们去使用,这些动画框架使用起来普遍比较方便,UI设计师按照约定的动画语法作图给开发人员即可,开发人员使用框架中指定的方式去播放动画即可。
现在主流的动画播放框架主要有Lottie,SVGA。
Lottie,SVGA这两个动画框架都同时支持Android,iOS。

因为直播源代码选择的是SVGA动画框架,下面主要讲一下SVGA动画框架。
SVGA动画框架是YY开源的一个动画框架,SVGA是一种全新的动画格式,同时兼容Android,iOS,Web多个平台。
SVGA提供了一整套的动画解决方案:

设计师:设计师可以通过插件快速的导出SVGA动画文件。

开发者:开发者可以简单的接入动画

设计师生成了SVGA动画文件后,为了获知动画文件是否正常,动画效果怎么样,可以通过动画预览器来预览动画文件。

直播源代码中使用
下面简单介绍一下直播源代码中集成SVGA,实现礼物动画。

(1)首先拿到UI设计师做好的SVGA动画文件,放到项目的asstes文件夹中

(2)添加SVGA依赖

    allprojects {repositories {...maven { url 'https://jitpack.io' }}
}compile 'com.github.yyued:SVGAPlayer-Android:2.1.8'

(3)在布局文件中添加SVGAImageView控件,在直播源代码中播放动画文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><com.opensource.svgaplayer.SVGAImageViewandroid:layout_height="match_parent"android:layout_width="match_parent"app:autoPlay="true"android:background="#000" /></RelativeLayout>
    /*** 播放礼物动画*/private void playGiftAnimation() {mSVGAParse.parse(animationFileName, new SVGAParser.ParseCompletion() {@Overridepublic void onComplete(SVGAVideoEntity mSVGAVideoEntity) {mGiftAnimSIV.setVisibility(View.VISIBLE);SVGADrawable drawable = new SVGADrawable(mSVGAVideoEntity);mGiftAnimSIV.setImageDrawable(drawable);mGiftAnimSIV.startAnimation();}@Overridepublic void onError() {ToastUtil.showShort(mActivity, getString(R.string.prompt_gift_parse_fail));}});}

其中animationFileName就是放到assets中的SVGA动画文件名

 /*** 礼物动画播放监听*/mGiftAnimSIV.setCallback(new SVGACallback() {@Overridepublic void onPause() {}@Overridepublic void onFinished() {mGiftAnimSIV.setVisibility(View.GONE);}@Overridepublic void onRepeat() {}@Overridepublic void onStep(int frame, double percentage) {}});

以上就是SVGA在直播源代码中的简单实用。具体的实用请参考官方的文档和Demo。

声明:本文由云豹科技转发自殇神马博客,如有侵权请联系作者删除

SVGA动画在直播源代码的运用——直播礼物的实现相关推荐

  1. 教你直播源代码来开发直播点赞功能

    教你直播源代码来开发直播点赞功能 今年的App行业,应该就是直播软件最火了.但凡是一个社交App,直播功能似乎已经是最基础的功能了. 这个只是一个点赞的小功能,并不是全部的直播 爱心图形 -(void ...

  2. app直播源代码如何实现直播间红包功能

    红包功能是app直播源代码直播间中的重要功能,红包功能的实现,可以帮助主播快速提高直播间氛围,让用户对直播产生兴趣,app直播源代码可以怎样实现红包功能呢? 软件简介 yaf项目快速开发(兼容php7 ...

  3. Android 端app直播源代码,解决系统启动黑屏

    前言 相信做过app直播源代码的朋友都知道,当一个APP启动时,界面会首先展示一个白屏或者黑屏,然后再进入欢迎页,稍作停留最后进入APP主页.那么这个黑屏或者白屏到底是怎么一回事呢?它的最好的解决方案 ...

  4. 直播源代码中关于手机直播平台开发的登陆注册介绍

    一套完整的手机直播平台,需要有一套完善的直播源代码.开发一套符合大众需求,得到市场认可的直播平台,是需要开发公司经过不断优化调整更新的.只有开发出符合大众需求的直播平台,才能快速在市场当中得到认可和使 ...

  5. 如何实现app直播源代码,通过HLS进行直播观看

    app直播源代码需要通过网页观看直播,无插件方案就是移动端使用HLS 方法为FFMPEG推流到带Nginx-RTMP-Module的Nginx上,转出RTMP流和HLS流 所用命令为: ffmpeg. ...

  6. app直播源代码是如何实现直播间小游戏的

    为了应对不同需求的客户,我们对app直播源代码中的功能不断地进行拓展,例如将网页游戏加进App,为了快捷的实现这一功能,我们只需要对Android提供的Webview进行简单的配置,便可轻松实现app ...

  7. 直播源代码,android 时间戳转换

    直播源代码,android 时间戳转换 package util;import java.text.SimpleDateFormat; import java.util.Calendar; impor ...

  8. 使用socket,实现app直播源代码用户评论功能

    最近公司在做app直播源代码,项目经理要我们用socket长连接实现在线聊天,下面是使用socket实现app直播源代码用户互动的简单原理. 代码复制粘贴可以直接运行. //首先是服务器端packag ...

  9. 实现app直播源代码开发,完成短视频切换功能

    讲下大概思路,app直播源代码使用recycleview配合自定义LinearLayoutManager来实现这个功能,这里着重说下自定义LinearLayoutManager的实现 可以看到每当下一 ...

  10. 直播源代码,循环显示、隐藏QQ或微信

    直播源代码,循环显示.隐藏QQ或微信实现的相关代码 import time import win32gui import win32conwindow = win32gui.FindWindow('T ...

最新文章

  1. 如何入门Python?你不知道的小窍门。
  2. python办公模块_Python 办公自动化教程
  3. Securing Session State
  4. .NET Core开发实战(第18课:日志框架:聊聊记日志的最佳姿势)--学习笔记(上)...
  5. jvisualvm工具使用
  6. xshell连接redhat注册显示中文乱码
  7. RDMA的原理、传输与Verbs
  8. 中文词语自动纠错_编辑距离
  9. Linux命令大全(常用的命令解析)
  10. iptable之我也不知道
  11. 论文阅读 | FoveaBox: Beyond Anchor-based Object Detector
  12. 正规蓝牙耳机一般多少钱?音质好又便宜的蓝牙耳机
  13. 关于NFT的版权的保护认证
  14. Godot Engine:将Sprite和刚体保持同一轴心
  15. 谷歌FLAN-T5作者亲讲:5400亿参数,1800个任务,如何实现大语言模型“自我改进”...
  16. springSecurity之PasswordEncoder
  17. 数据库系统实验二作业-SQL实验报告
  18. word 设置标题前分页
  19. 【科研】BERT模型理论详解
  20. POJ1190 生日蛋糕(回溯法)

热门文章

  1. 统一建模语言UML简答题/期末考试分享
  2. mac环境下Android 反编译
  3. 安卓一键新机_「科技犬」三星华为频发新品对标iPhone12,稳固安卓生态
  4. 大数据平台解决方案(PPT)
  5. 机器学习-马尔可夫随机场(MRF)
  6. HyperLynx(三)传输线类型及相关设置
  7. JDK和JRE的区别
  8. JDK与JRE的区别
  9. 安兔兔软件测试手机准确吗,安兔兔验机准吗? 安兔兔验机中心新版使用评测
  10. 华为笔记本键盘说明图_电脑键盘的这些功能键的真正用法,你全都了解吗?