• Home
Name Date Size #Lines LOC

..--

AppScope/06-May-2025-3532

entry/06-May-2025-2,5162,079

hvigor/06-May-2025-3433

screenshots/device/06-May-2025-

.gitignoreD06-May-2025119 1111

Readme.mdD06-May-20256.6 KiB12087

build-profile.json5D06-May-20251.1 KiB4342

hvigorfile.tsD06-May-2025657 161

hvigorwD06-May-20251.4 KiB4928

hvigorw.batD06-May-20251.5 KiB6547

oh-package.json5D06-May-2025242 1312

ohosTest.mdD06-May-20252.3 KiB2320

Readme.md

1# DisplaySync分级管控
2
3### 介绍
4
5本示例通过DisplaySync分级管控功能对自绘制、属性动画、XComponent的绘制内容设置开发者所期望的帧率
6### 效果预览
7
8|初始页|自绘制|属性动画|XComponent|Animator|
9|--------------------------------|--------------------------------|--------------------------------|--------------------------------|--------------------------------|
10| <img src="./screenshots/device/initPage.jpg" width="360" /> | <img src="./screenshots/device/customDraw.jpg" width="360"/> | <img src="./screenshots/device/propertyAnimation.jpg" width="360" /> | <img src="./screenshots/device/xcomponent.jpg" width="360"/> |<img src="./screenshots/device/animator.jpg" width="360"/> |
11
12使用说明
13
141.在初始页面点击“**CustomDraw**”,进入自绘制页面,点击“**Start**”,数字“**30**”按照30Hz帧率放大缩小,数字“**60**”按照60Hz帧率放大缩小;点击“**Stop**”绘制停止;点击“**Back**”返回初始页面
15
162.在初始页面点击“**PropertyAnimation**”,进入属性动画页面,点击“**Start**”,三个方块分别按照30Hz、40Hz、60Hz移动;点击“**Back**”返回初始页面
17
183.在初始页面点击“**XComponent**”,进入属性动画页面,点击“**Start**”,两个方块分别按照30Hz、120Hz移动;点击“**Stop**”动画停止;点击“**Back**”返回初始页面
19
204.在初始页面点击“**Animator**”,进入Animator动画页面,先点击“**Create**”,再点击“**Play**”三个方块分别按照10Hz、30Hz、60Hz变大;点击“**Back**”返回初始页面
21
22### 工程目录
23```
24├──entry/src/main
25│  ├──cpp                                       // C++代码区
26│  │  ├──CMakeLists.txt                         // CMake配置文件
27│  │  ├──hello.cpp                              // Napi模块注册
28│  │  ├──common
29│  │  │  └──log_common.h                        // 日志封装定义文件
30│  │  ├──plugin                                 // 生命周期管理模块
31│  │  │  ├──plugin_manager.cpp
32│  │  │  └──plugin_manager.h
33│  │  ├──samples                                // samples渲染模块
34│  │  │  ├──sample_xcomponent.cpp
35│  │  │  └──sample_xcomponent.h
36│  ├──ets                                       // ets代码区
37│  │  ├──entryability
38│  │  │  ├──EntryAbility.ts                     // 程序入口类
39|  |  |  └──EntryAbility.ets
40|  |  ├──interface
41│  │  │  └──XComponentContext.ts                // XComponentContext
42│  │  ├──pages                                  // 页面文件
43│  │  |  ├──Index.ets                           // 初始页面
44│  │  |  ├──CustomDrawDisplaySync.ets           // 自绘制页面
45│  │  |  ├──PropertyAnimationDisplaySync.ets    // 属性动画页面
46│  │  |  ├──XComponentDisplaySync.ets           // XComponent页面
47|  |  |  └──AnimatorDisplaySync.ets             // Animator动画
48│  │  ├──utils                                  // 工具类
49|  ├──resources         			                  // 资源文件目录
50```
51
52### 具体实现
53
54* 自绘制:通过调用[@ohos.graphics.displaySync](https://docs.openharmony.cn/pages/v4.1/zh-cn/application-dev/reference/apis-arkgraphics2d/js-apis-graphics-displaySync.md)接口,通过注册回调和设置刷新了区间控制回调周期
55    * 涉及到的相关接口:
56
57      通过`import displaySync from '@ohos.graphics.displaySync'`引入
58
59      | 接口名 | 描述 |
60      | -------- | -------- |
61      | Create(): DisplaySync | 创建一个DisplaySync实例 |
62      | setExpectedFrameRateRange(rateRange: ExpectedFrameRateRange): void | 设置期望帧率 |
63      | on(type: 'frame', callback: Callback<IntervalInfo>): void | 设置自定义绘制内容回调函数 |
64      | off(type: 'frame', callback?: Callback<IntervalInfo>): void | 清除自定义绘制内容回调函数 |
65      | start(): void | DisplaySync使能 |
66      | stop(): void | DisplaySync失能 |
67
68* 属性动画:通过[animation](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-animatorproperty.md)和[animateTo](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-explicit-animation.md)接口新增的参数expectedFrameRateRange,设置动画刷新率的区间,预期设置的刷新率,作为动画的属性之一,作用于动画场景
69    * 涉及到的相关接口:
70
71      | 新增动画属性 | 描述 |
72      | -------- | -------- |
73      | expectedFrameRateRange | animation和animateTo接口的动画属性参数中可选配置expectedFrameRateRange参数 |
74
75* XComponent:通过在IDE中的Native c++ 工程,在c++代码中定义对外接口为register和unregister,并调用新增的CAPI接口,可在页面上使用drawing根据设定的期望帧率来绘制
76    * 涉及到的相关接口([CAPI接口链接](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/_o_h___native_x_component.md))77
78      | 接口名 | 描述 |
79      | -------- | -------- |
80      | OH_NativeXComponent_SetExpectedFrameRateRange| 设置期望帧率范围 |
81      | OH_NativeXComponent_RegisterOnFrameCallback  | 注册更新回调 |
82      | OH_NativeXComponent_UnregisterOnFrameCallback  | 取消更新回调 |
83
84* 动画:通过[animator](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/js-apis-animator.md)新增的接口setExpectedFrameRateRange,设置期望的帧率范围,作用于动画场景
85    * 涉及到的相关接口:
86
87      | 接口名 | 描述 |
88      | ----------------------------------------------------------------- | -------- |
89      | setExpectedFrameRateRange: (rateRange: ExpectedFrameRateRange): void | 设置期望的帧率范围 |
90
91
92### 相关权限
93
94不涉及
95
96### 依赖
97
98不涉及
99
100### 约束与限制
101
1021.本示例仅支持在标准系统上运行,支持设备:RK3568。
103
1042.本示例为Stage模型,已适配API version 12版本SDK,SDK版本号(API Version 12 5.0.0.18),镜像版本号(5.0.0.18)。
105
1063.本示例需要使用DevEco Studio 版本号(3.1.0.501)及以上版本才可编译运行。
107
108
109### 下载
110
111如需单独下载本工程,执行如下命令:
112```
113git init
114git config core.sparsecheckout true
115echo code/BasicFeature/Graphics/DisplaySync/ > .git/info/sparse-checkout
116git remote add origin https://gitee.com/openharmony/applications_app_samples.git
117git pull origin master
118
119```
120