HarmonyOS 鸿蒙Next 隐私政策弹窗Demo

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

HarmonyOS 鸿蒙Next 隐私政策弹窗Demo

1、弹窗效果

组成分析:

标题:title

协议相关内容本身及前后共三部分:prefixMessage、privacyArray、suffixMessage

不同意按钮、同意按钮事件:cancel、confirm

点击协议跳转:goPrivacy

2、自定义CustomDialog

@CustomDialog

export struct CustomDialogPrivacy {

  controller?: CustomDialogController;

  title?: string;

  prefixMessage?: string;

  privacyArray?: Array<string> = []

  suffixMessage?: string = ‘’

  cancelBtTitle: string = ‘app.string.Disagree’

  confirmBtTitle: string = ‘app.string.Agree_Continue’

  private titleSize: number = 20

  private fontSize: number = 16

  private fontColor: string = ‘#333333’

  private lineColor: string = ‘#EBEDF0’

  private bgColor: string = ‘#FFFFFF’

  private privacyColor: string = ‘#018F47’

  cancel: Function = () => {};

  confirm: Function = () => {};

  goPrivacy: Function = (privacy: string) => {};

  build() {

    Column(){

      Text($r(this.title))

        .textAlign(TextAlign.Center)

        .fontSize(this.titleSize)

        .fontColor(this.fontColor)

        .width(‘100%’)

        .padding({top: 20})

      Text() {

        Span($r(this.prefixMessage))

          .fontSize(this.fontSize)

        ForEach(this.privacyArray, (privacy: string) => {

          Span($r(privacy))

            .fontColor(this.privacyColor)

            .fontSize(this.fontSize)

            .onClick(() => {

              this.goPrivacy(privacy);

            })

        }, (privacy: string) => privacy)

        Span($r(this.suffixMessage))

          .fontSize(this.fontSize)

      }

      .fontColor(this.fontColor)

      .width(‘100%’)

      .padding(20)

      Divider()

        .color(this.lineColor)

        .width(‘100%’)

      Row({space: 20}){

        Button($r(this.cancelBtTitle),{type: ButtonType.Normal})

          .width(‘45%’).backgroundColor(Color.Transparent)

          .fontColor(this.fontColor)

          .fontSize(this.fontSize)

          .onClick(() => {

            this.cancel();

          })

        Divider()

          .color(this.lineColor)

          .width(2)

          .vertical(true)

          .height(‘3%’)

        Button($r(this.confirmBtTitle),{type: ButtonType.Normal})

          .width(‘45%’).backgroundColor(Color.Transparent)

          .fontColor(this.privacyColor)

          .fontSize(this.fontSize)

          .onClick(() => {

            this.confirm();

          })

      }

      .width(‘100%’)

      .padding({ left:20, right:20, top:10, bottom:10 })

      .justifyContent(FlexAlign.SpaceEvenly)

    }

    .borderRadius(20)

    .backgroundColor(this.bgColor)

  }

}

3、初始化弹窗

privacyDialogController: CustomDialogController = new CustomDialogController({

    builder: CustomDialogPrivacy({

      title: “app.string.Tips”,

      prefixMessage: “app.string.PlocyDesc0”,

      privacyArray: [“app.string.ServiceAgreementLink”, “app.string.PrivacyPolicyLink”],

      suffixMessage: “app.string.TipsPermission1”,

      cancel: () => {

        this.privacyDialogController.close();

        this.context?.terminateSelf();

      },

      confirm: () => {

      },

      goPrivacy: (privacy: string) => {

      },

    }),

    autoCancel: false,

    alignment: DialogAlignment.Center,

    customStyle: false

  })

4、调用

this.privacyDialogController.open();


更多关于HarmonyOS 鸿蒙Next 隐私政策弹窗Demo的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
很有用的分享

更多关于HarmonyOS 鸿蒙Next 隐私政策弹窗Demo的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS 鸿蒙Next 隐私政策弹窗Demo实现方式简述如下:

在HarmonyOS应用中,实现隐私政策弹窗可以通过自定义Dialog组件来完成。首先,在资源文件中定义弹窗的布局,包括标题、内容(隐私政策详情)、确认和拒绝按钮等。然后,在代码中创建并显示这个Dialog。

具体步骤如下:

  1. resources/layout目录下创建一个XML文件,定义弹窗的布局。布局中应包含TextView用于显示隐私政策内容,Button用于用户确认或拒绝。

  2. 在代码中(如AbilitySlice中),通过LayoutInflater加载这个布局,并创建Dialog实例。

  3. 设置Dialog的属性,如是否可取消、是否模态等。

  4. 为Dialog中的Button设置点击事件监听器,处理用户的确认或拒绝操作。

  5. 调用show()方法显示Dialog。

示例代码(伪代码,不包含实际API调用):

// 省略了导入和类定义等部分
Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.privacy_policy_dialog);
// 设置Dialog属性...
Button confirmButton = dialog.findViewById(R.id.confirm_button);
confirmButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // 处理确认操作
        dialog.dismiss();
    }
});
// 显示Dialog
dialog.show();

注意:上述代码为示意性描述,实际开发时需根据HarmonyOS API文档进行具体实现。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部