写点什么

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

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

评论

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

一文带你熟知ForkJoin

华为云开发者联盟

jdk 并发编程 并发 forkjoin 多线程并发

【LeetCode】寻找旋转排序数组中的最小值Java题解

Albert

算法 LeetCode 12月日更

阿里云田涛涛解读未来自动化运维新思路:CloudOps

阿里云弹性计算

CloudOps 云上运维

吃透负载均衡

高性能架构探索

负载均衡 架构 分布式 微服务 签约计划第二季

彻底搞通服务发现的原理和实现

高性能架构探索

架构 分布式 微服务 服务发现 签约计划第二季

智能运维之时间序列预测中的经典时序模型

云智慧AIOps社区

机器学习 算法 智能运维 云智慧 指标预测

react源码解析12.状态更新流程

buchila11

React

Flyway让数据库版本管理更简单

恒生LIGHT云社区

数据库 sql SqlServer

React进阶(五):导航守卫

No Silver Bullet

React 路由 12月日更

流量控制-从原理到实现

高性能架构探索

架构 分布式 微服务 签约计划第二季

给弟弟的信第13封|一个北京姑娘的艰辛生活

大菠萝

28天写作

用户文章转载:一图看懂 | 我用这张图,看懂了 P4 Reconcile

龙智—DevSecOps解决方案

perforce 一图看懂 P4 Reconcile

JerryScript:物联网开发者的得力工具

华为云开发者联盟

物联网 LiteOS JerryScript 引擎 物联网应用

Linux中国对话龙蜥社区4位理事:龙蜥操作系统捐赠的背后,是谁在推动?

OpenAnolis小助手

Linux 国产操作系统 龙蜥社区

技术实力过硬,旺链科技斩获“年度区块链技术突破奖”!

旺链科技

区块链 区块链技术 产业区块链

lock-free在召回引擎中的实现

高性能架构探索

架构 分布式 微服务 签约计划第二季

Elasticsearch 查询最大时间(qbit)

qbit

sql UTC TimeZone 时区

C++ 开发笔记

行者孙

内容合集 签约计划第二季

Homebrew大神面试Google被拒,只因写不出一道算法题

博文视点Broadview

面试官:useLayoutEffect和useEffect的区别

全栈潇晨

React

react源码解析11.生命周期调用顺序

buchila11

React

Scrapy Spider中间件,你学会了吗?本篇博客有一案例

梦想橡皮擦

12月日更

netty系列之:小白福利!手把手教你做一个简单的代理服务器

程序那些事

Java Netty 代理 程序那些事 12月日更

面试官:如何实现 List 集合去重?

王磊

java面试

有了代码变更分解提交工具SmartCommit,再也不担心复合提交了

华为云开发者联盟

代码 复合提交 SmartCommit 代码提交 代码提交原子性

欢迎举报Perforce Helix Core盗版行为

龙智—DevSecOps解决方案

盗版软件 perforce盗版 打击盗版

深入理解Flutter相机插件【Flutter专题22】

坚果

flutter 28天写作 签约计划第二季 12月日更

带波浪效果的CollapsingToolbarLayout + RecycleView

阿策小和尚

28天写作 Android 小菜鸟 12月日更

前端架构师修炼指南精选

杨成功

前端 架构师 内容合集 签约计划第二季

亿级流量实验平台设计与实现

高性能架构探索

架构 分布式 微服务 签约计划第二季 实验平台

实用机器学习笔记十四:多层感知机

打工人!

人工智能 机器学习 算法 学习笔记 12月日更

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