HarmonyOS @Entry是否设置半透明效果?

@Entry是否设置半透明效果 咨询场景描述: 因为CustomDialog自定义弹窗无法封装成全局的function,希望通过Entry 设置半透明背景,实现弹窗的效果

阅读 522
1 个回答

可以通过setWindowBackgroundColor实现,示例代码如下:

EntryAbility.ets
export default class EntryAbility extends UIAbility {
  …
  onWindowStageCreate(windowStage: window.WindowStage): void {
    …
    AppStorage.setOrCreate(“windowStage”,windowStage)//保存windowStage
    …
  }
  …
}

Index.ets
import window from '@ohos.window';

@Entry
@Component
struct Index {
  build() {
    Row() {
      Column() {
        Button('show dialog').onClick(() => {
          let windowStage_: window.WindowStage = AppStorage.get('windowStage') as window.WindowStage;
          windowStage_.createSubWindow('subWindow', (err, win) => {//创建透明子窗口并打开
            win.setUIContent('pages/SubPage');
            win.showWindow();
          })
        })
      }
      .width('100%')
    }
    .height('100%')
    .backgroundColor(Color.Pink)

  }
}

SubPage.ets
import window from '@ohos.window';

@Entry
@Component
struct SubPage {
  @State message: string = 'this is a dialog page';

  aboutToAppear() {
    window.findWindow('subWindow').setWindowBackgroundColor("#00000000")//设置子窗口背景透明
  }

  onBackPress() {//关闭子窗口
    window.findWindow('subWindow').destroyWindow().then((res) => {
      console.log('destroyWindow success')
    }).catch(() => {
      console.log('destroyWindow fail')
    })
    return true
  }

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(16)
          .fontWeight(FontWeight.Bold)
          .width(200)
          .height(150)
          .backgroundColor(Color.White)
      }
      .width('100%')
    }
    .backgroundColor("#32ffffff")
    .height('100%')
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进