HarmonyOS 鸿蒙Next如何设置半透明页面

发布于 1周前 作者 caililin 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next如何设置半透明页面

【问题描述】

目前有需求实现一个类似底部弹窗形式的登录页面,高度不充满整个屏幕,未填充的区域半透明可见底部页面内容。登录页面需要走路由管理,不能通过弹窗实现。此场景如何实现半透明背景页面呢?

示例代码如下:

import router from ‘@ohos.router’;

@Entry @Component struct Index { build() { Column() { Text(‘点击跳转登录页面’) .height(52) .width(‘100%’) .margin({top: 100}) .backgroundColor(’#fafafc’) .textAlign(TextAlign.Center) .onClick(() => { router.pushUrl({url: ‘pages/Second’}) }) } .height(‘100%’) .width(‘100%’) } }

@Entry({ routeName: ‘Second’ }) @Component export struct Second {

build() { Column() { List() { ListItem() { Text(‘AAAAAAAAAA’) }.height(52) } .width(‘100%’) .height(500) .backgroundColor(’#00ff00’) } .justifyContent(FlexAlign.End) .width(‘100%’) .height(‘100%’) .backgroundColor(’#00ffffff’) .opacity(0.1) } }

【解决方案】

使用@ohos.arkui.componentSnapshot库,获取屏幕截图pixelMap后,通过全局变量传参,将当前屏幕截图作为登录页面背景图来实现伪透明效果。

3 回复

目前看到论坛有个使用Navgation的方案实现路由页面的模态背景及动画控制https://developer.huawei.com/consumer/cn/forum/topic/0201150581656599021?fid=0109140870620153026

我们也遇到这种场景,原本参考Android是可以设置Activity的Theme实现Dialog样式的页面,原因是每个Activity都会创建自己的Window,相当于对Window设置了半透明背景效果,但是现在鸿蒙默认只有一个UIAbility,里面通过路由打开的多个page其实应该也是在一个Window上(同一个UIAbility中),因此即便修改了Page的opacity属性也无法实现半模态,还是看不到前一个页面的背景,因此路由Page现在无法实现半模态,这样,现阶段想实现模态弹窗效果,只能使用CustomDialog,意味着开发者被限死只能使用一种方案。不知道官方后面是否有这方面的考量

楼主解决了吗

HarmonyOS 鸿蒙Next设置半透明页面,可以通过设置页面的backgroundColor属性为半透明的颜色值来实现。例如,使用#80FFFFFF(白色半透明)作为背景色。此外,也可以使用子窗口(SubWindow)加载页面,并设置子窗口的背景为透明,以此实现页面级的半透明效果。如果问题依旧没法解决,请加我微信,我的微信是itying888。

回到顶部