Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
cc117498
D
Docs
项目概览
OpenHarmony
/
Docs
1 年多 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
cc117498
编写于
1月 19, 2023
作者:
O
openharmony_ci
提交者:
Gitee
1月 19, 2023
浏览文件
操作
浏览文件
下载
差异文件
!13772 移除NativeWindow指导中使用的inner_api
Merge pull request !13772 from Andrew0229/cherry-pick-1674029533
上级
2e599637
a92dfee1
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
63 addition
and
11 deletion
+63
-11
zh-cn/application-dev/napi/Readme-CN.md
zh-cn/application-dev/napi/Readme-CN.md
+1
-1
zh-cn/application-dev/napi/native-window-guidelines.md
zh-cn/application-dev/napi/native-window-guidelines.md
+62
-10
未找到文件。
zh-cn/application-dev/napi/Readme-CN.md
浏览文件 @
cc117498
...
...
@@ -3,6 +3,6 @@
-
[
Native API在应用工程中的使用指导
](
napi-guidelines.md
)
-
[
Drawing开发指导
](
drawing-guidelines.md
)
-
[
Rawfile开发指导
](
rawfile-guidelines.md
)
-
[
Window开发指导
](
native-window-guidelines.md
)
-
[
Native
Window开发指导
](
native-window-guidelines.md
)
-
[
使用MindSpore Lite引擎进行模型推理
](
mindspore-lite-guidelines.md
)
-
[
Neural Network Runtime对接AI推理框架开发指导
](
neural-network-runtime-guidelines.md
)
\ No newline at end of file
zh-cn/application-dev/napi/native-window-guidelines.md
浏览文件 @
cc117498
...
...
@@ -35,14 +35,67 @@ NativeWindow是`OpenHarmony`**本地平台化窗口**,表示图形队列的生
以下步骤描述了在
**OpenHarmony**
中如何使用
`NativeWindow`
提供的
`NAPI`
接口,申请图形
`Buffer`
,并将生产图形内容写入图形
`Buffer`
后,最终提交
`Buffer`
到图形队列。
1.
**获取NativeWindow实例**
。例如,使用
`Surface`
创建
`NativeWindow`
实例。
1.
**获取NativeWindow实例**
。可在
[
`OH_NativeXComponent_Callback`
](
../reference/native-apis/_o_h___native_x_component___callback.md
)
提供的接口中获取。
1.
在xxx.ets 中定义 XComponent。
```
ts
XComponent
({
id
:
'
xcomponentId
'
,
type
:
'
surface
'
,
libraryname
:
'
nativerender
'
})
.
onLoad
((
context
)
=>
{
this
.
context
=
context
;
})
.
onDestroy
(()
=>
{
})
```
2.
在 native c++ 层获取 NativeXComponent。
```
c++
napi_value
exportInstance
=
nullptr
;
napi_get_named_property
(
env
,
exports
,
OH_NATIVE_XCOMPONENT_OBJ
,
&
exportInstance
);
OH_NativeXComponent
*
nativeXComponent
=
nullptr
;
napi_unwrap
(
env
,
exportInstance
,
reinterpret_cast
<
void
**>
(
&
nativeXComponent
));
char
idStr
[
OH_XCOMPONENT_ID_LEN_MAX
+
1
]
=
{
};
uint64_t
idSize
=
OH_XCOMPONENT_ID_LEN_MAX
+
1
;
OH_NativeXComponent_GetXComponentId
(
nativeXComponent
,
idStr
,
&
idSize
);
```
3.
定义
OH_NativeXComponent_Callback
。
```
c++
// 定义回调函数
void OnSurfaceCreatedCB(OH_NativeXComponent
* component, void*
window)
{
// 可获取 NativeWindow 实例
OHNativeWindow
*
nativeWindow = window;
// ...
}
void OnSurfaceChangedCB(OH_NativeXComponent
* component, void*
window)
{
// 可获取 NativeWindow 实例
OHNativeWindow
*
nativeWindow = window;
// ...
}
void OnSurfaceDestroyedCB(OH_NativeXComponent
* component, void*
window)
{
// 可获取 NativeWindow 实例
OHNativeWindow
*
nativeWindow = window;
// ...
}
void DispatchTouchEventCB(OH_NativeXComponent
* component, void*
window)
{
// 可获取 NativeWindow 实例
OHNativeWindow
*
nativeWindow = window;
// ...
}
```
```c++
sptr
<
OHOS
::
Surface
>
cSurface
=
Surface
::
CreateSurfaceAsConsumer
();
sptr
<
IBufferConsumerListener
>
listener
=
new
BufferConsumerListenerTest
();
cSurface
->
RegisterConsumerListener
(
listener
);
sptr
<
OHOS
::
IBufferProducer
>
producer
=
cSurface
->
GetProducer
();
sptr
<
OHOS
::
Surface
>
pSurface
=
Surface
::
CreateSurfaceAsProducer
(
producer
);
OHNativeWindow
*
nativeWindow
=
OH_NativeWindow_CreateNativeWindow
(
&
pSurface
);
// 初始化 OH_NativeXComponent_Callback
OH_NativeXComponent_Callback callback_;
callback_->OnSurfaceCreated = OnSurfaceCreatedCB;
callback_->OnSurfaceChanged = OnSurfaceChangedCB;
callback_->OnSurfaceDestroyed = OnSurfaceDestroyedCB;
callback_->DispatchTouchEvent = DispatchTouchEventCB;
```
4.
将 OH_NativeXComponent_Callback 注册给 NativeXComponent。
```
c++
OH_NativeXComponent_RegisterCallback
(
nativeXComponent
,
&
callback_
);
```
2.
**设置NativeWindowBuffer的属性**
。使用
`OH_NativeWindow_NativeWindowHandleOpt`
设置
`NativeWindowBuffer`
的属性。
...
...
@@ -91,7 +144,6 @@ NativeWindow是`OpenHarmony`**本地平台化窗口**,表示图形队列的生
```
5.
**提交NativeWindowBuffer到图形队列**
。
```
c++
// 设置刷新区域,如果Region中的Rect为nullptr,或者rectNumber为0,则认为NativeWindowBuffer全部有内容更改。
Region
region
{
nullptr
,
0
};
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录