1 Star 0 Fork 0

ScenarioSamples/CustomDialogPackaging

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

自定义弹窗封装

介绍

基于Navigation.Dialog的透明页面特性,可以用于实现弹窗效果, 而且Navigation.Dialog存在于路由栈中,天然可以实现切换页面弹窗不消失

效果预览

约束与限制

软件要求

DevEco Studio版本:DevEco Studio 5.0.0 Release及以上。 HarmonyOS SDK版本:HarmonyOS 5.0.0 Release SDK及以上。

硬件要求

设备类型:华为手机。 HarmonyOS系统:HarmonyOS 5.0.0 Release及以上。

使用说明

实现了隐私弹窗不关闭,点击Button后弹出的隐私弹窗点击弹窗外其他位置均不会使弹窗关闭,只有点击同意或不同意才会关闭弹窗。 实现了半模态弹窗与半模态弹窗动态。

实现思路

@Component
export struct PrivacyDialog {

  build() {
    NavDestination() {
      Stack({ alignContent: Alignment.Center }) {
        Column() {
        }
        .width('100%')
        .height('100%')
        .backgroundColor('rgba(0,0,0,0.5)')
        .transition(
          TransitionEffect.OPACITY.animation({
            duration: 300,
            curve: Curve.Friction
          })
        )
        .onClick(() => {
          AppRouter.pop();
        })

        Column() {
          Text('弹窗')
            .fontColor(Color.White)
          Button('新页面', { stateEffect: true, type: ButtonType.Capsule })
            .onClick(() => {
              AppRouter.push('privacyPage')
            })
        }
        .width('50%')
        .height('30%')
        .backgroundColor(Color.Blue)
        .transition(
          TransitionEffect.scale({ x: 0, y: 0 }).animation({
            duration: 300,
            curve: Curve.Friction
          })
        )
      }
      .width('100%')
      .height('100%')
    }
    .mode(NavDestinationMode.DIALOG)
    .hideTitleBar(true)
  }
}

工程目录

entry/src/main/ets/
|---cases                                 
|   |---navDialog                         // 自定义弹窗组件
|   |   |---view
|   |   |   |---PrivacyDialogView.ets
|   |   |   |---PrivacyPage.ets           
|   |   |---CaseDialog.ets
|   |   |---CustomDialog.ets
|   |   |---DefaultDialog.ets              
|   |   |---PrivacyDialog.ets
|   |   |---SheetDialo.ets
|---common
|   |---CommonConstants.ets
|---entryability
|   |---EntryAbility.ets
|---pages
|   |---index.ets                          // 页面入口
|---router
|   |---AppRouter.ets                      // 路由工具类
|---util                                   
|   |---AppDialog.ets                      // 封装弹窗控制器,定义弹窗UI组件    

参考文档

切换页面弹窗不消失

ChangeLog

修改内容 时间
修改README 2025/1/22

一份简单的问卷反馈

亲爱的Harmony Next开发者,您好!
为了协助您高效开发,提高鸿蒙场景化示例的质量,希望您在浏览或使用后抽空填写一份简单的问卷,我们将会收集您的宝贵意见进行优化

点击此处填写问卷

空文件

简介

【鸿蒙 Harmony Next 示例 代码】基于Navigation.Dialog的透明页面特性,可以用于实现弹窗效果, 而且Navigation.Dialog存在于路由栈中,天然可以实现切换页面弹窗不消失。 展开 收起
TypeScript
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/scenario-samples/custom-dialog-packaging.git
git@gitee.com:scenario-samples/custom-dialog-packaging.git
scenario-samples
custom-dialog-packaging
CustomDialogPackaging
master

搜索帮助