#鸿蒙通关秘籍#如何使用同层渲染在Web上实现原生组件的流畅体验?

HarmonyOS
2024-12-02 15:41:43
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
紫Y风铃XML

要在Web上实现原生组件的流畅体验,可以采用同层渲染的方式。这种方式通过在Web页面上预留位置,然后使用NodeContainer进行渲染,可以提升性能和交互体验。

  1. 使用Stack组件将NodeContainer和Web组件进行层叠,并开启同层渲染模式:

    build() {
        Stack() {
            NodeContainer(this.searchNodeController)
            Web({ src: $rawfile("nativeembed_view.html"), controller: this.browserTabController })
                .backgroundColor('#F1F3F5')
                .zoomAccess(false)
                .enableNativeEmbedMode(true)
        }
    }
    
  2. 监听onNativeEmbedLifecycleChange事件,获取surfaceId并绑定到NodeContainer:

    .onNativeEmbedLifecycleChange((embed) => {
        if (embed.status === NativeEmbedStatus.CREATE) {
            this.searchNodeController.setRenderOption({
                surfaceId: embed.surfaceId as string,
                type: embed.info?.type as string,
                renderType: NodeRenderType.RENDER_TYPE_TEXTURE,
                embedId: embed.embedId as string,
                width: px2vp(embed.info?.width),
                height: px2vp(embed.info?.height)
            });
        }
        this.searchNodeController.rebuild();
    })
    
分享
微博
QQ
微信
回复
2024-12-02 17:06:19
相关问题
HarmonyOS WebView实现渲染资料
474浏览 • 1回复 待解决
webview是否支持渲染
1961浏览 • 1回复 待解决
HarmonyOS ArkWeb渲染嵌套能力
670浏览 • 1回复 待解决
HarmonyOS web创建失败
83浏览 • 1回复 待解决
HarmonyOS ArkWeb渲染宽高问题
91浏览 • 1回复 待解决