介绍
为了便于大家在使用本案例集时能够更详细的了解各个案例,本案例基于Web预渲染实现了案例介绍功能,即应用右下角的问号icon。
效果图预览
使用说明
- 因为直接加载的线上README,因此本功能需联网使用
- 点击icon,即会弹出对应案例的README
- 按钮可拖动
- 返回或下拉bindSheet上方的dragBar可隐藏帮助页
案例适配说明
为确保案例正确显示其README,请确保entry模块的依赖中@ohos/xxx
中的xxx
与案例目录名相同
实现思路
- 使用Stack承载Navigation,从而使得icon能够在应用的各个案例(NavDestination承载)上显示。源码见EntryView.ets
Stack() { Navigation(this.pageStack) { //... } // 帮助功能:在每个案例的右下角添加“帮助”功能 HelperView() }
- 使用BindSheet+WebView加载仓上各模块README。源码见HelperView.ets
build() { Image($r("app.media.help")) .bindSheet($$this.isShowReadMe, this.buildReadMeSheet(), { //... }) } @Builder buildReadMeSheet(): void { //... }
- 使用webview预渲染提升用户体验,复用webview实例减少资源占用。源码见NWebUtils.ets
/** * Builder中为动态组件的具体组件内容 * 调用onActive,开启渲染 */ @Builder function WebBuilder(data: Data) { Web({ src: data.url, controller: data.controller }) .onPageBegin(() => { data.controller.onActive(); }) .width($r("app.string.full_size")) .height($r("app.strin