| Name | Date | Size | #Lines | LOC | ||
|---|---|---|---|---|---|---|
| .. | - | - | ||||
| AppScope/ | 06-May-2025 | - | 35 | 32 | ||
| entry/ | 06-May-2025 | - | 2,516 | 2,079 | ||
| hvigor/ | 06-May-2025 | - | 34 | 33 | ||
| screenshots/device/ | 06-May-2025 | - | ||||
| .gitignore | D | 06-May-2025 | 119 | 11 | 11 | |
| Readme.md | D | 06-May-2025 | 6.6 KiB | 120 | 87 | |
| build-profile.json5 | D | 06-May-2025 | 1.1 KiB | 43 | 42 | |
| hvigorfile.ts | D | 06-May-2025 | 657 | 16 | 1 | |
| hvigorw | D | 06-May-2025 | 1.4 KiB | 49 | 28 | |
| hvigorw.bat | D | 06-May-2025 | 1.5 KiB | 65 | 47 | |
| oh-package.json5 | D | 06-May-2025 | 242 | 13 | 12 | |
| ohosTest.md | D | 06-May-2025 | 2.3 KiB | 23 | 20 |
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