Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >OpenHarmony 实战开发——图形框架解析

OpenHarmony 实战开发——图形框架解析

原创
作者头像
小帅聊鸿蒙
发布于 2025-04-09 12:42:16
发布于 2025-04-09 12:42:16
1680
举报
文章被收录于专栏:鸿蒙开发笔记鸿蒙开发笔记

众所周知,动画是系统和应用与用户交互的重要环节。动画效果的好坏会直接影响用户的体验。动画效果依赖图形系统,华为作为 OpenAtom OpenHarmony(以下简称“OpenHarmony”)开源项目贡献者,自主研发了一套以统一渲染为基础、高性能动效引擎为驱动的图形系统——OpenHarmony 图形栈。

一、OpenHarmony 图形栈介绍

下面先为大家介绍一下 OpenHarmony 图形栈的架构。

按照分层抽象和轻模块化的架构设计原则,OpenHarmony 图形栈分为接口层、架构层和引擎层,且每一层按能力分成了若干个能力模块。OpenHarmony 图形栈的完整能力视图如图 1 所示。(目前,视图中的能力尚未全部实现,还在持续开发和完善中)

图 1 OpenHarmony 图形栈

对上,OpenHarmony 图形栈为应用程序框架提供高性能、易用的图形接口,支撑多窗口、复杂页面的图形渲染和流畅自然动画的实现。对下,OpenHarmony 图形栈屏蔽差异化的芯片平台,支撑任意符合 OpenHarmony 图形标准的设备接入。

OpenHarmony 图形栈的分层说明如下:

• 接口层:提供图形的 NDK(native development kit,原生开发包)能力,包括:WebGL、Native core Canvas 的绘制能力、OpenGL 指令级的绘制能力支撑等。

• 框架层:分为 Render Service、Drawing、Animation、Effect、显示与内存管理五个模块。

• 引擎层:包括 2D 图形库和 3D 图形引擎两个模块。2D 图形库提供 2D 图形绘制底层 API,支持图形绘制与文本绘制底层能力。3D 图形引擎能力尚在构建中。

看了上面 OpenHarmony 图形栈的介绍,你也许还没有 get 到 OpenHarmony 图形栈到底能为用户带来哪些更好的体验。别急,下面就为大家一一道来。

二、提升动画流畅度

从通俗角度看,动画是多张连续的画面通过一定的帧率展示出来。用户大部分时间是处在人机交互的动画场景中,比如浏览新闻页面等,动画的流畅性对用户体验非常关键。我们通过对传统动画处理流程的深入分析,发现了影响动画流畅的两个关键问题:

1. 动画受 UI 主线程影响

如果 UI 主线程的业务阻塞,这很容易引发动画卡顿的现象,给用户带来不好的体验。下面的 Demo 模拟了 UI 主线程业务阻塞的场景,可以看到动画明显卡顿了。

2. 动画过程图形计算负载高

传统的动画处理流程如图 2 所示。开发者在应用代码中创建动画、设置动画参数、设置每帧回调等,从而实现想要的动画效果。应用运行时,系统会对动画一帧一帧地渲染。首先,在动画阶段,系统会计算被修改的控件的属性值。接着,进入测量/布局/绘制阶段,系统测量所有控件的属性,根据设备尺寸对所有控件进行布局,并形成绘制指令。最后由 GPU 进行每一帧的渲染。

图 2 传统的动画处理流程

在测量/布局/绘制阶段,如果控件属性发生变化(如图 3),则每一帧都要重新测量、布局和绘制。这意味着每一帧都会引入图形计算负载,增加了耗时,且最终影响动画效果。

图 3 图形计算负载

下面我们来看一个示例:

以上示例中,点击 Title 后,窗体根据设备尺寸进行伸展。这个过程其实就是控件属性发生变化的过程,我们看到动画效果不流畅,是因为测量、布局绘制环节耗时长导致。

为了解决上面两个影响动画流畅的关键问题,OpenHarmony 图形栈采取了 UI 与动画分离、测量布局绘制优化等关键技术来提升动画性能。

1. UI 与动画分离

OpenHarmony 图形栈采用 UI 与动画分离的设计思想,动画的使能和参数下发在 UI 主线程,动画的步进在渲染过程中。在这种分离的方式下,动画不再受 UI 主线程阻塞的影响,从架构上避免了因 UI 主线程阻塞导致动画卡顿的问题。

下面我们再次通过上面的 Demo 来模拟 UI 主线程业务阻塞。这次我们看到动画非常流畅,丝毫没有受到 UI 主线程业务阻塞的影响。

2. 测量布局绘制优化

传统的动画过程中,宽高的变化必然引起布局的变化,从而导致每帧进行重新测量、布局和绘制。当控件数量过多的时候,因测量、布局、绘制所带来的 CPU 负载是非常高的。为此,对于布局中内容不变的场景,OpenHarmony 图形栈对测量布局计算进行优化,动画过程中由系统进行动态的“插帧”处理,从而有效地避免了每帧的重新测量、布局和绘制。

下面我们看看同样的示例在 OpenHarmony 中的动画效果:

可以看到,在 OpenHarmony 中此示例的动画效果非常流畅。

DD一下:欢迎大家关注公众号<程序猿百晓生>,可以了解到以下知识点。
代码语言:erlang
AI代码解释
复制
`欢迎大家关注公众号<程序猿百晓生>,可以了解到以下知识点。`
1.OpenHarmony开发基础
2.OpenHarmony北向开发环境搭建
3.鸿蒙南向开发环境的搭建
4.鸿蒙生态应用开发白皮书V2.0 & V3.0
5.鸿蒙开发面试真题(含参考答案) 
6.TypeScript入门学习手册
7.OpenHarmony 经典面试题(含参考答案)
8.OpenHarmony设备开发入门【最新版】
9.沉浸式剖析OpenHarmony源代码
10.系统定制指南
11.OpenHarmonyUboot 驱动加载流程
12.OpenHarmony构建系统--GN与子系统、部件、模块详解
13.ohos开机init启动流程
14.鸿蒙版性能优化指南
.......

三、自然地提升动画衔接

对于单段动画而言,动画的流畅性是用户体验的一个重要指标。很多情况下,开发者还会面临多段动画的衔接处理,这时动画衔接是否自然,也是用户体验的一个重要指标。

比如,图 4 展示了两种传统的动画衔接处理方式,能很明显地看到动画衔接得不自然。

图 4 动画衔接不自然

OpenHarmony 图形栈为开发者们提供了便利且自然的动画衔接实现方式。当出现动画中断时,开发者只需要指定新的终点即可,系统会以一种自然的方式进行动画衔接。这样既降低了开发者的负担,又可以得到很好的动画体验。图 5 展示了 OpenHarmony 图形栈的动画衔接效果。

图 5 OpenHarmony 动画衔接效果

四、丰富动效

随着应用蓬勃发展,多任务、多窗口越来越普遍,给动效呈现带来了很大挑战。比如下面的视频,长按应用图标,桌面和壁纸产生模糊效果。由于桌面和壁纸是独立绘制、分离渲染的,要想实现动态实时模糊,需要在合成阶段进行模糊处理(GPU 合成方式),导致性能和功耗的代价高,用静态模糊的效果是一种比较“经济”的做法。

OpenHarmony 图形栈采用统一绘制与渲染机制。以上示例在 OpenHarmony 图形栈的绘制与渲染流程如图 6 所示。

图 6 绘制与渲染流程

解决了跨窗口联动问题后,上面示例中桌面和壁纸模糊效果呈现时,也能同步看到壁纸的动效,如下:

此外,OpenHarmony 图形栈从时间和空间上提供了更丰富的动效能力。空间维度上,更容易实现空间相关的动效。时间维度上,开发者只需设置终止界面,图形栈自动进行插值计算,简化复杂的计算。

图 7 时间和空间联合动效

五、结束语

通过深挖动画处理流程中的各个环节, OpenHarmony 图形栈解决了动画受 UI 主线程影响而引发的卡顿问题,也解决了动画过程中图形计算负载高引起的耗时问题,提升了动画性能。此外,OpenHarmony 图形栈提供的时间和空间联合动效能力,让动效开发变得更简单,提升了开发效率。

写在最后

如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:

  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力;
  • 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识;
  • 想要获取更多完整鸿蒙最新学习知识点,可关注B站:码牛课堂;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
线下渠道失势:5G 能否让vivo重生
手机市场有一个奇怪的现象,华为、小米、OPPO、vivo同属国内一线手机品牌,但vivo的形象总给人一种比华为、小米矮一截的感觉,与其齐名的OPPO同样如此。
刘旷
2020/01/22
5730
折叠屏,vivo的高端打手?
2022年开年国产机销量大跳水,各实力玩家的出货成绩也都不尽人意,行业走向不景气的信号逐渐明显。
用户9702975
2022/05/30
5500
小米千店同开,难逃下沉宿命
1月9日,小米之家1003家小米之家同时开业,遍及全国30个省,覆盖270个市县。此次开店规模如此之巨大,可以看出,小米冲击线下市场的决心。同时面临苹果、华为、oppo、vivo的竞争压力,小米在稳定自身产品特色的同时,逐步扩大线下门店分销网络,意图开拓更广的实体门店版图。
刘旷
2021/01/17
5280
华为小米vivo向上,苹果荣耀OPPO向下
日前,Counterpoint发布的手机销量月度报告显示,中国智能手机销量在2024年第四季度同比下降3.2%,成为2024年唯一出现同比下滑的季度。而对于各大智能手机品牌来说,他们的市场份额和格局也在悄然发生变化。
刘旷
2025/01/22
1300
高端机市场卡位战:iQOO能否博得一席之地?
短短三年时间从无名小辈到国内手机厂商前列,iQOO刷新了消费者对手机如何更好打电竞的认知,现如今其又试图在高端市场内再上演一次“突围战”。
用户2908108
2022/02/28
4090
高端机市场卡位战:iQOO能否博得一席之地?
华为在高端智能手机市场再次撕开了一道深深的口子
8月29日,华为宣布推出“HUAWEI Mate 60 Pro先锋计划”,并于当天中午在官方商城、部分线下门店上线销售新机Mate 60 Pro,它是全球首款支持卫星通话的大众智能手机,即使在没有地面网络信号的情况下也可以与外界联系,令人欣喜。
刘旷
2023/09/11
2430
vivo 2020:沉默中寻求突围
“华米OV”国产四强中,无论是小米,还是华为或者OPPO都有一款自己智能手表,唯独与OPPO并称“蓝绿大厂”的vivo却迟迟没有动作。
刘旷
2020/06/19
6130
vivo 2020:沉默中寻求突围
折叠屏竞争又燃新战火,vivo下场晚了吗?
前些日子,有关智能手机又双叒叕卖不动了的消息再一次冲上话题榜前列,聚焦的是这届年轻人不怎么换手机了。时间往回倒几年,绝大多数年轻人不说一年一换,两年换一次手机也算是常态,如今他们平均换机周期已超31个月,媒体将这种现象称之为年轻人的“换机焦虑”。
用户2908108
2022/05/17
2440
折叠屏竞争又燃新战火,vivo下场晚了吗?
2020的5G终端革命,正在变得扑朔迷离
疫情实时数据显示,2月26日全国新增确诊411例,治愈人数新增2675人,现存确诊较昨日减少2316例。按此治愈速度估计,最迟下周,我国治愈人数将会超过现存确诊人数。一个月内,确诊病例将会悉数得到治愈,这意味着防疫阻击战即将迎来实质胜利,疫情得到基本控制。
刘旷
2020/02/28
5530
2020的5G终端革命,正在变得扑朔迷离
华为强势回归,高通却成了最大输家?
8月29日,在没有召开新品发布会的情况下,华为基于自研麒麟芯片的新一代旗舰手机Mate 60 Pro正式开售,虽然定价高达6999元,但仍是备受追捧,线上线下均一机难求。今天,华为Mate 60 Pro+和新一代折叠旗舰机Mate X5也正式开启预订,在预售开启之后,上线十多秒首批已被抢购完毕。
芯智讯
2023/09/08
2680
华为强势回归,高通却成了最大输家?
自研芯片的豪赌:华为小米vivo仍在坚持,OPPO盖牌离场,荣耀开始下注!
5月31日消息,虽然OPPO在不久前因为“全球经济、手机市场不确定性”解散了旗下的芯片设计子公司哲库科技,放弃了自研芯片,但是另外两家国产智能手机厂商小米、vivo的自研芯片计划仍在继续,现在荣耀也开始成立芯片设计公司加码自研芯片了。
芯智讯
2023/08/09
3130
自研芯片的豪赌:华为小米vivo仍在坚持,OPPO盖牌离场,荣耀开始下注!
realme能否成为今年智能手机赛道最大黑马?
无论是今年一季度的全球销量数据——Strategy Analytics发布全球智能手机出货量数据线上,Q1同比增长24%,达3.4亿部,创下2015年以来的最高增长。
用户2908108
2021/07/22
3320
OPPO们的内外新困局
鉴于此,国内互联网企业纷纷出手相助。OPPO通过与旗下的海外分支机构了解当地疫情情况,征询需求后迅速组织物资捐赠。目前已向海外肺炎疫情重灾区意大利、西班牙、德国、法国和日本捐赠寄出30万只N95/FFP3口罩。
刘旷
2020/03/19
6910
2023Q2全球智能手机市场销量八连跌!高端市场成唯一亮点
近日,市场研究机构Counterpoint发布的最新研究报告显示,2023年第二季度,全球智能手机市场的销售额同比下降8%,季度环比下降5%。这是连续第八个季度出现同比下降。
芯智讯
2023/08/09
2750
2023Q2全球智能手机市场销量八连跌!高端市场成唯一亮点
当vivo领先后,该学着“快”起来了
随着一个个大热球队的爆冷,今年世界杯赛事正在渐入高潮。就目前的形势来看,世界杯最大的悬念在于究竟是“老王”圆梦,还是“新王”登基,又或者是摩洛哥这只黑马一黑到底。
用户2908108
2023/02/26
2400
当vivo领先后,该学着“快”起来了
三星,再次“西征”
在过去相当长一段时间,三星手机在中国市场是“高光”一样的存在,在2010年前后,更是与iPhone 4一起平分中国手机市场的天下。如今,除了一部分技术控和小众消费群体,国内普通消费者在选购手机时或许很难再想起“三星”这个品牌。
用户2908108
2022/05/17
3390
三星,再次“西征”
国产机们的高端梦:OV保守、米耀激进
这几年,国内大部分手机厂商在中低端市场站稳脚跟之后,为了获取更大的利润空间以及提升自身品牌价值,纷纷进军高端手机市场。自华为遭遇制裁事件之后,无奈从高端市场退位,为了尽快接棒华为,国内手机厂商随后集体加速走向高端化。
刘旷
2022/02/21
2310
小米8永久降价,2019年智能手机市场将更凶险
12月29日上午10:00起,小米年终感恩季大促启动,年度旗舰手机小米8及小米8屏幕指纹版直降200,2299元起,相比发售时优惠400元。
罗超频道
2019/01/08
6980
国产手机:2022疑无路,2023又一村?
1月28日,Counterpoint Research公布的2022中国智能手机市场销量报告显示,中国智能手机销量2022年同比下降14%,达到十年来的最低水平。销量持续走下坡路,国内智能手机厂商们似乎已难改市场羸弱现状。
刘旷
2023/02/08
2210
不解决产能低下的问题,直供模式也拯救不了小米
人人都能成为小米的促销员!这是镁客君在看过有关小米直供的报道之后,唯一的感触。 “没有中间商赚差价。”这句曾经洗脑无数人的广告词,现如今对小米也开始适用了。就在昨天,小米推出了一个全新的销售方式,小米
镁客网
2018/05/29
8240
推荐阅读
相关推荐
线下渠道失势:5G 能否让vivo重生
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档