HarmonyOS 鸿蒙Next如何实现透明的page
HarmonyOS 鸿蒙Next如何实现透明的page
我想实现媒体页面拖拽关闭,效果是图片跟随手指拖动,并缩小,露出上一个页面,拖动到一定阈值关闭页面,我该如何实现
2 回复
可以从路由方面入手,
router路由模式请参考下面demo:
// Page1.ets
import window from '[@ohos](/user/ohos).window';
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Page2 {
[@State](/user/State) message: string = 'page Page2';
onPageHide() {
console.log("pageHide")
}
build() {
Row() {
Column() {
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
Button("pageB").onClick(() => {
let windowStege: window.WindowStage = AppStorage.get("windowStage") as window.WindowStage;
windowStege.createSubWindow("hello", (err, win) => {
win.setUIContent('pages/Page2');
win.showWindow();
})
})
}
.width('100%')
}
.height('100%')
.backgroundColor(Color.Pink)
}
}
NavDestination支持Dialog类型页面: https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-navdestination-V5#navdestinationmode枚举说明-11
NavDestinationMode.STANDARD: 标准类型 NavDestinationMode.DIALOG: 默认透明。
您这边在demo中添加image拖拽事件时可以添加对应的逻辑
在HarmonyOS鸿蒙Next中,实现透明的page页面,可以通过以下步骤进行:
- 使用子窗口加载页面:在HarmonyOS中,由于router路由无法直接实现透明页面,因此需要借助拉起子窗口的方案。通过
windowStage.createSubWindow
方法创建一个子窗口,并加载对应的页面内容。 - 设置子窗口背景透明:在子窗口加载页面后,使用
setWindowBackgroundColor
方法将子窗口的背景色设置为透明。透明颜色的十六进制代码为#00000000
。 - 处理页面交互与返回:由于子窗口与主窗口的事件交互受限,需要自行监听页面的返回手势等事件,并在适当的时候销毁子窗口以实现回到原页面的效果。
需要注意的是,在实现透明页面的过程中,可能会遇到一些技术难题,如页面持久化、参数传递等。这些都需要根据具体的应用场景进行细致的处理。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。