| Name | Date | Size | #Lines | LOC | ||
|---|---|---|---|---|---|---|
| .. | - | - | ||||
| AppScope/ | 06-May-2025 | - | 34 | 32 | ||
| entry/ | 06-May-2025 | - | 2,099 | 1,770 | ||
| hvigor/ | 06-May-2025 | - | 37 | 36 | ||
| screenshots/device/ | 06-May-2025 | - | ||||
| .gitignore | D | 06-May-2025 | 156 | 13 | 13 | |
| README.md | D | 06-May-2025 | 7.1 KiB | 112 | 81 | |
| build-profile.json5 | D | 06-May-2025 | 1.3 KiB | 58 | 58 | |
| code-linter.json5 | D | 06-May-2025 | 957 | 34 | 34 | |
| hvigorfile.ts | D | 06-May-2025 | 838 | 21 | 5 | |
| oh-package.json5 | D | 06-May-2025 | 808 | 25 | 24 | |
| ohosTest.md | D | 06-May-2025 | 4.2 KiB | 19 | 17 |
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```