• Home
Name Date Size #Lines LOC

..--

AppScope/06-May-2025-3432

entry/06-May-2025-2,0991,770

hvigor/06-May-2025-3736

screenshots/device/06-May-2025-

.gitignoreD06-May-2025156 1313

README.mdD06-May-20257.1 KiB11281

build-profile.json5D06-May-20251.3 KiB5858

code-linter.json5D06-May-2025957 3434

hvigorfile.tsD06-May-2025838 215

oh-package.json5D06-May-2025808 2524

ohosTest.mdD06-May-20254.2 KiB1917

README.md

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