阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

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

  • 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:572004

评论

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

大数据ELK(十四):Elasticsearch编程(基本操作)

Lansonli

ES 10月月更

web前端开发培训机构比较好的是哪家

小谷哥

线下培训机构哪个比较靠谱?

小谷哥

React源码分析4-深度理解diff算法

goClient1992

React

JavaScript——JS中的正则表达式

胖虎不秃头

前端 js 10月月更

java工程师培训机构哪里好

小谷哥

RecSysOps: 大规模推荐系统运维最佳实践

俞凡

架构 最佳实践 netflix 大厂实践

Vue的computed和watch的区别是什么?

bb_xiaxia1998

Vue

什么是核心交换机、汇聚交换机、接入交换机,它们之间有啥区别?

wljslmz

交换机 网络设备 通信技术 10月月更

手写JavaScript常见5种设计模式

helloworld1024fd

JavaScript

web前端开发培训机构哪个好

小谷哥

Python 3.12 目标:还可以更快!

Python猫

Python

通过单步调试的方式学习 Angular 中带有选择器的内容投影使用方式

Jerry Wang

typescript 前端开发 angular web开发 10月月更

每日一题之Vue数据劫持原理是什么?

bb_xiaxia1998

Vue

ESP32-C3 应用 篇(实例二、通过蓝牙将传感器数据发送给手机,手机端控制 SK6812 LED)

矜辰所致

蓝牙 ESP32-C3 10月月更

每日一题之Vue的异步更新实现原理是怎样的?

bb_xiaxia1998

Vue

JavaScript——BOM、JSON

胖虎不秃头

前端 js 10月月更

前端培训机构应该怎么选

小谷哥

JavaScript——Document Object Model

胖虎不秃头

前端 js 10月月更

每日一题之请描述Vue组件渲染流程

bb_xiaxia1998

Vue

Collections之Arraylist源码解读(六)

知识浅谈

ArrayList 10月月更

面试官:请实现Javascript发布-订阅模式

helloworld1024fd

JavaScript

React源码分析1-jsx转换及React.createElement

goClient1992

React

吃透这份Java面试精选题解,我轻松拿到了字节跳动offer

Geek_0c76c3

Java 数据库 程序员 架构 开发

React源码分析3-render阶段(穿插scheduler和reconciler)

goClient1992

React

验证二叉搜索树

掘金安东尼

算法 10月月更

Python进阶(二)初识Python数据元素:字典&时间

No Silver Bullet

Python 时间 字典 10月月更 数据元素

高频js手写题之实现数组扁平化、深拷贝、总线模式

helloworld1024fd

JavaScript

js函数柯里化-面试手写版

helloworld1024fd

JavaScript

如何在 Goerli 网络中获取测试 ETH

devpoint

以太坊 Goerli 测试网络

React源码分析2-深入理解fiber

goClient1992

React

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