写点什么

彻底解决动效开发痛点问题,优酷跨平台方案来了

  • 2020-05-07
  • 本文字数:1610 字

    阅读完需:约 5 分钟

彻底解决动效开发痛点问题,优酷跨平台方案来了

一、背景

在优酷客户端开发的日常工作中,存在着大量动效场景需求,如 ToastView 显示与消失、页面推入的轨迹动效、Pop 弹出等。虽然 iOS、Android 都提供了多种友好的动效开发方案,但由于要进行大量的参数配置及调优,面对动效开发工作,大多数开发同学的第一反应是头疼。


动效设计需求产出后,在与研发对接过程中,存在如下一些问题:


1)同一动画,不同的开发人员实现的效果有差别;


2)同一动画,iOS 端和 Android 端实现的效果有差别;


3)Anticipate、Overshoot、Bounce 曲线,设计师无法提供准确参数给开发,实现出来的效果随机性强;


4)部分开发人员对系统自带曲线函数不熟悉,会导致降级应用线性或减速曲线,影响动态效果。


为了彻底解决上述痛点问题,优酷应用心中开发团队与设计团队共同研发推出了优酷跨平台动效解决方案——画眉,目的是从设计标准化、研发组件化、配置工具化三个方向,使得动效从设计-研发-验收-上线的全链路上实现统一、提效。


优酷跨平台动效方案,底层基于算法策略,后续会陆续开放源代码,对于广大的客户端场景动效快速上线,具有广泛的意义。

二、什么是画眉

“画眉”是一种小巧又灵动的鸟类,优酷动效跨平台解决方案以此取名,也因为方案本身的轻量化特性,业务方只需要通过极少量的代码接入,即可完成复杂的动效还原编码工作。


画眉-优酷跨平台动效解决方案由两部分构成:设计侧可视化动效编辑工具、研发侧跨平台 SDK,目标是彻底打通研发与设计链路,降低沟通成本,缩短验收周期,统一多端体验。



(图 1 画眉全链路保障)

三、技术方案

  1. 架构路线



(图 2 画眉整体架构)


  1. 技术实现


考虑到性能以及平台特性,在 iOS 端与 Android 端进行 SDK 策略落地时,均基于 AOP 的思想,提供了最为轻量化的技术方案。由于目前优酷客户端底层通过 OneService 提供服务, ThrushSDK 在优酷业务内落入 OneService 体系内,便于各业务的无缝接入。


1)iOS 端技术方案


SDK 接口层采用 Category 方案,通过 AOP 思想来简化调用复杂度。


CALayer + MotionCurveX 为 CALayer 的所有可动画属性,按照动效曲线能力提供支持,且在动画完成后,无需再次设置目标值。ThrushSDK 将常用的 7 种动效曲线,进行底层算法实现,使用者只需指定曲线枚举,即可实现标准化的动效。



(图 3 画眉动效曲线 iOS 端枚举定义)


底层 C 函数算法库,可以通过标准曲线实现代码来一探究竟,如图所示:



(图 4 标准曲线算法实现)


2)Android 端技术方案


为了降低 java 调用 C 的性能损耗,Android 端采用差值器 Interpolator 来实现曲线动效。



(图 5 画眉动效曲线 Android 端插值器)


  1. 可视化动效编辑工具


1)功能架构



(图 6 功能架构示意图)


2)体感



(图 7 画眉动效曲线可视化编辑工具)


3)工具介绍


ThrushEditor 目前基于 iOS 平台开发,目标使用人群为动效设计师。编辑器对于动效创作最大的提效点在于:动效可视化预览、简化参数调优、动效代码导出。设计师在确认动效参数后,使用导出工具,一键导出 iOS | Android 代码,完成与开发工程师的无缝对接。

四、总结

画眉-优酷跨平台动效解决方案推出后,目前已经在优酷 APP 内多个场景投入使用,在双端体验上也完全达到了设计初的各项预期。


  1. 优酷 APP 内场景落地


业务场景
首页搜索转场动效iOS|Android
语音搜索文案动画iOS|Android
热点弹性动效iOS|Android
个人中心消息气泡iOS|Android
播放页臻享切换动效iOS|Android


  1. 近期规划



(图 8 画眉技术方案规划)


1)开源:由于画眉 SDK 本身是纯算法实现,没有任何底层库强依赖,因此,后续会推进画眉 SDK 以及可视化编辑工具的集团内开源及外部开源,让其能效在更大的场景发挥作用;


2)多平台:以 iOS、Android 双端的效果验证作为底座,针对其他业务同学的需求,画眉会推出针对 weex 及 H5 的解决方案,让更广泛的开发同学受益;


3)品牌化:画眉跨平台动效解决方案会与设计中台联动,以大文娱技术品牌的方式将标准化、模块化、工具化三位一体的整套策略进行行业宣发。


作者 | 阿里文娱无线开发专家 祁序


2020-05-07 18:572123

评论

发布
暂无评论
发现更多内容

差点跳起来了!全靠这份999页Java面试宝典,我刚拿到美团offer

Java~~~

Java 架构 面试 微服务 多线程

小手哆嗦一下,就能用 Python Django 实现一个微型博客系统

梦想橡皮擦

8月日更

uni-app技术分享| 怎么用uni-app实现呼叫邀请

anyRTC开发者

uni-app 音视频 呼叫邀请 点对点呼叫

Compose 可组合项的生命周期

Changing Lin

8月日更

测试开发之系统篇-Docker容器安装

禅道项目管理

Docker 测试开发

某离散制造行业龙头客户“主数据管理平台”建设分享

用友BIP

主数据管理

云计算运维与传统运维工作有啥不同?需要什么资质?

行云管家

云计算 服务器 IT运维 云计算运维

零代码上线小布对话技能:技能平台的实践与思考

OPPO小布助手

人工智能 自然语言处理 算法 零代码 语义理解

为构建大型复杂系统而生的微服务框架 Erda Infra

尔达Erda

开源 程序员 微服务 云原生 运维开发

Go 学习笔记之 Channels

架构精进之路

Go 语言 8月日更

数据中台——数据汇聚存储技术解析

用友BIP

数据中台 数据存储

闭关修炼21天,“啃完”283页pdf,我终于4面拿下字节跳动offer

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

Vue进阶(二十六):详解 router.push()

No Silver Bullet

Vue router 8月日更

信创产业已成现象级新风口,快来加入争做“弄潮儿”

华为云开发者联盟

开源 信创 opengauss openEuler 鲲鹏

1年半经验,2本学历,Curd背景,竟给30K,我的美团Offer终于来了

Java~~~

Java 架构 面试 微服务 多线程

阿里(钉钉部门)远程面,三面坐上“直通车”,拿下offer没问题

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

拒绝内卷!Github连夜封杀的阿里全套Spring Security高级笔记

Java 编程 架构 面试 程序人生

netty系列之:使用POJO替代buf

程序那些事

Java Netty nio 程序那些事

【插画】一文看懂容器k8s

恒生LIGHT云社区

Docker 容器 k8s

云小课 | 到底什么是区块链?

华为云开发者联盟

区块链 华为云 区块链的定义 区块链的解决方案 区块链的发展

c++ 构造函数详解

若尘

c++ 构造函数 8月日更

数据中台为什么要建标签体系,分类它不香吗?

用友BIP

数据中台 标签体系

跨链治理之入门三问 :WHO WHAT HOW

趣链科技

区块链 治理机制

Vue进阶(二十五):<component>实现动态组件

No Silver Bullet

Vue 动态组件 8月日更

AIMA:如何通过质量指标提高QA的绩效(译)

BY林子

软件测试 绩效 QA

Go 效率工具集合

潇洒哥 - 老苗

Go 语言

【LeetCode】第一个只出现一次的字符Java题解

Albert

算法 LeetCode 8月日更

高防服务器,企业成长安全控制有效性的关键工具

九河云安全

当容器应用越发广泛,我们又该如何监测容器?

阿里巴巴云原生

云计算 容器 云原生 监控 中间件

2年5个月13天,从外包到拿下阿里offer,没想到屌丝也能有今天

Java~~~

Java spring 架构 面试 微服务

直击美团“远程面试”现场,面试官竟反问:你真懂数据库事务吗?

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

彻底解决动效开发痛点问题,优酷跨平台方案来了_文化 & 方法_阿里巴巴文娱技术_InfoQ精选文章