HarmonyOS 鸿蒙Next状态栏通知遮罩效果受影响正常吗 及 界面背景差异大时router.replaceUrl跳转闪屏替代方案

发布于 1周前 作者 nodeper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next状态栏通知遮罩效果受影响正常吗 及 界面背景差异大时router.replaceUrl跳转闪屏替代方案

2 回复

蒙层显示时改变tab栏的背景以及透明度,请参考如下代码实现此效果

[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
  [@State](/user/State) visible: boolean = false
  [@Builder](/user/Builder) tabBuilder() {
    Column(){
      Text("首页")
    }.width('100%')
    .height('100%')
    .justifyContent(FlexAlign.Center)
    .backgroundColor(this.visible?Color.Black:Color.White)
    .opacity(this.visible?0.4:1)
  }
  build() {
    NavDestination() {
      Tabs({barPosition: BarPosition.End}) {
        TabContent() {
          Row() {
            Column() {
              Button("选择组织").onClick(() => {
                this.visible = !this.visible;
              })
              Stack({ alignContent: Alignment.Center }) {
                Column(){
                  Button("abcdd").onClick(() => {
                    this.visible = !this.visible;
                  })
                }
                .height('100%')
                .width('100%')
                CXWDropdownListView({visible: this.visible}).visibility(this.visible ? Visibility.Visible : Visibility.Hidden)
              }
            }
            .height('100%')
            .width('100%')
            .justifyContent(FlexAlign.Start)
      }.height('100%')
    }.tabBar(this.tabBuilder())
  }
}
  }
}
export class CXWEnterpriseInfo {
  identifier: string;
  name: string;
  constructor(identifier: string, name: string) {
    this.identifier = identifier;
    this.name = name;
  }
}
@Component
struct CXWDropdownListView {
  @Link visible: boolean;
  private showMaxCount = 6;
  private itemHeight = 60;
  private dataSource = [new CXWEnterpriseInfo("1", "组织1"), new CXWEnterpriseInfo("2", "组织2"),
    new CXWEnterpriseInfo("1", "组织1"), new CXWEnterpriseInfo("2", "组织2"),]
  build() {
    Column() {
      List() {
        ForEach(this.dataSource, (info: CXWEnterpriseInfo, index: number) => {
          ListItem() {
            CXWDropdownEnterpriseItem({name: info.name, selected: index == 1})
              .onClick(() => {
                this.hiddenDropdownListView();
              })
          }
        })
      }
      .height(this.dataSource.length > this.showMaxCount ? this.showMaxCount * this.itemHeight : this.dataSource.length * this.itemHeight)
      .backgroundColor(Color.White)
  Blank()
    .width('100%')
    .flexGrow(1)
    .backgroundColor(Color.Black)
    .opacity(0.4)
    .onClick(() =>{
      this.hiddenDropdownListView();
    })
}
.width('100%')
.height('100%')
  }
  hiddenDropdownListView() {
    this.visible = !this.visible;
  }
}
@Component
struct CXWDropdownEnterpriseItem {
  @State selected: boolean = false;
  name: string = "";
  build() {
    Row() {
      Image('')
        .size({width: 16, height: 16})
        .margin({left: 16})
        .backgroundColor(Color.Black)
  Text(this.name)
    .fontSize(16)
    .backgroundColor(Color.Gray)
    .padding({left: 8})
    .flexGrow(1)
  Image('')
    .size({width: 16, height: 16})
    .margin({right: 16})
    .backgroundColor(Color.Orange)
    .visibility(this.selected ? Visibility.Visible : Visibility.Hidden)
}
.justifyContent(FlexAlign.SpaceBetween)
.width('100%')
.height('60vp')
  }
} 

针对您提出的HarmonyOS 鸿蒙Next状态栏通知遮罩效果受影响及界面背景差异大时router.replaceUrl跳转闪屏问题,以下是我的专业解答:

  1. 状态栏通知遮罩效果

    • 在HarmonyOS鸿蒙Next中,状态栏通知遮罩效果可能受到多种因素影响,包括系统更新、应用兼容性等。若该效果受影响,通常不是正常现象,可能需要检查系统更新或应用适配情况。
  2. router.replaceUrl跳转闪屏

    • 在界面背景差异大时,使用router.replaceUrl进行页面跳转可能会出现闪屏现象。这通常是由于页面切换时资源加载或渲染造成的。
    • 替代方案包括优化页面加载速度、使用过渡动画或遮罩层来减少视觉上的突兀感。同时,确保页面资源得到合理管理和释放,以减少系统负担。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部