最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

鴻蒙(HarmonyOS)實(shí)現(xiàn)隱私政策彈窗效果

 更新時(shí)間:2024年08月10日 09:36:10   作者:安輝  
但在HarmonyOS中,由于系統(tǒng)彈窗的顯示優(yōu)先級(jí)高于其他組件,即使跳轉(zhuǎn)到Web頁面,彈窗依然會(huì)顯示在最上層,下面給大家分享鴻蒙(HarmonyOS)實(shí)現(xiàn)隱私政策彈窗,感興趣的朋友跟隨小編一起看看吧

在實(shí)現(xiàn)用戶協(xié)議彈窗時(shí),通常我們會(huì)想到使用系統(tǒng)自定義彈窗,并在彈窗中點(diǎn)擊跳轉(zhuǎn)到Web頁面。但在HarmonyOS中,由于系統(tǒng)彈窗的顯示優(yōu)先級(jí)高于其他組件,即使跳轉(zhuǎn)到Web頁面,彈窗依然會(huì)顯示在最上層。

為了解決這個(gè)問題,我們可以自定義一個(gè)組件來模擬彈窗,這樣當(dāng)跳轉(zhuǎn)到Web頁面時(shí),Web內(nèi)容會(huì)覆蓋這個(gè)模擬的彈窗。

效果圖如下:

首先,我們來看程序的入口代碼。最外層使用了一個(gè)RelativeContainer容器組件,通過showAgreePrivacyPolicy變量控制隱私政策彈窗的顯示狀態(tài)。每次啟動(dòng)應(yīng)用時(shí),該變量默認(rèn)設(shè)置為true,以顯示隱私政策彈窗。在實(shí)際開發(fā)中,你可以通過preferences保存這個(gè)變量的狀態(tài)。

struct Index {
    @State showAgreePrivacyPolicy:boolean=true;
    build() {
        RelativeContainer(){
            Row({space:10}){
                Image($r('app.media.app_icon')).width(60).height(60)
                Column({space:5}){
                    Text($r('app.string.app_name')).fontSize(22).fontColor($r('app.color.title_color'))
                    Text($r('app.string.launcher_tip')).fontSize(14).fontColor($r('app.color.other_color'))
                }.alignItems(HorizontalAlign.Start)
            }.alignRules({
                bottom: {anchor: "__container__", align: VerticalAlign.Bottom},
                middle: { anchor: '__container__', align: HorizontalAlign.Center }  //以父容器為錨點(diǎn),水平方向居中對(duì)齊
            }).margin({
                bottom:30
            })
            if(this.showAgreePrivacyPolicy){//通過變量控制隱私政策彈窗是否顯示
                PrivacyPolicyDialog({
                    cancel:this.onCancel.bind(this),//取消按鈕點(diǎn)擊
                    confirm:this.onAgree.bind(this),//確定按鈕點(diǎn)擊
                })
            }
        }.width('100%')
        .height('100%').backgroundColor($r('app.color.white'))
    }
    onCancel():void {
        (getContext(this) as common.UIAbilityContext)?.terminateSelf()
    }
    onAgree():void {//同意隱私政策
        this.showAgreePrivacyPolicy = false;
    }
}

接下來是PrivacyPolicyDialog組件代碼:

  • 根組件填充100%寬高,設(shè)置黑色背景,透明度30%內(nèi)容區(qū)域使用Stack組件,背景為白色,圓角邊框,寬度占父組件的80%。
  • 文字內(nèi)容用Text和Span組件包裹,支持滾動(dòng)功能。
  • 點(diǎn)擊用戶協(xié)議和隱私政策的文字時(shí),使用router打開Web頁面。
@Component
export default struct PrivacyPolicyDialog{
    cancel!: () => void
    confirm!: () => void
    build() {
        Stack(){
            Column() {
                Text($r('app.string.simple_user_policy')).fontSize(18).fontColor($r('app.color.title_color')).margin({ top: 30, bottom: 19 })
                Scroll(){
                    Text(){
                        Span($r('app.string.privacy_policy_start'))
                        Span($r('app.string.user_agreement_two')).fontColor($r('app.color.mainColor')).onClick(() => {
                            this.openWebUrl("/useragreement.html");
                        })
                        Span($r('app.string.and'))
                        Span($r('app.string.privacy_policy_two')).fontColor($r('app.color.mainColor')).onClick(() => {
                            this.openWebUrl("/privacypolicy.html");
                        })
                        Span($r('app.string.simple_privacy_policy'))
                    }.fontSize(16).fontColor($r('app.color.body_color')).margin({
                        left:25,
                        right:25
                    })
                }.height(120)
                Column(){
                    Button($r('app.string.disagree_privacy_policy')).onClick(() => {
                        this.cancel();
                    }).fontColor($r('app.color.other_color')).fontSize(15).backgroundColor(Color.Transparent)
                    Button($r('app.string.agree_privacy_policy')).onClick(() => {
                        this.confirm();
                    }).fontColor($r('app.color.white')).fontSize(17)
                        .linearGradient({
                            direction: GradientDirection.Right, colors:[[$r('app.color.start_main_color'),0.0],[$r('app.color.end_main_color'),1.0]]
                        }).width('80%').margin({
                        top:15,bottom:21
                    }).borderRadius(24)
                }
            }.backgroundColor($r('app.color.white')).borderRadius(13).width('80%')
        }.width('100%')
        .height('100%').backgroundColor("#4D000000")//黑色背景 透明度約為 30%
    }
    openWebUrl(urlSuffix:string){
        let url= "https://www.srzs.top"+urlSuffix;
        router.pushUrl({
            url: 'pages/WebViewPage',
            params:{
                data1: 'message',
                url: url  // 傳遞的 URL 參數(shù)
            }
        }, router.RouterMode.Single)
    }
}

WebViewPage展示W(wǎng)eb網(wǎng)頁的代碼就不貼出來了,大家可直接下載源碼。還有加載網(wǎng)頁一定要網(wǎng)絡(luò)權(quán)限,在entry/module.json5這個(gè)文件中配置。

源碼下載

https://github.com/ansen666/PrivacyPolicy

到此這篇關(guān)于鴻蒙(HarmonyOS)實(shí)現(xiàn)隱私政策彈窗的文章就介紹到這了,更多相關(guān)鴻蒙隱私政策彈窗內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • so easy!10行代碼寫個(gè)

    so easy!10行代碼寫個(gè)"狗屁不通"文章生成器功能

    這篇文章主要介紹了通過10行代碼寫個(gè)"狗屁不通"文章生成器功能,真的超級(jí)簡(jiǎn)單,感興趣的朋友跟隨腳本之家小編一起看看吧
    2020-01-01
  • 使用數(shù)學(xué)軟件Matlab建模畫圖程序匯總

    使用數(shù)學(xué)軟件Matlab建模畫圖程序匯總

    這篇文章主要介紹了使用數(shù)學(xué)軟件Matlab建模畫圖程序匯總,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2021-12-12
  • 瀏覽器插件cursor實(shí)現(xiàn)自動(dòng)注冊(cè)、續(xù)杯的詳細(xì)過程

    瀏覽器插件cursor實(shí)現(xiàn)自動(dòng)注冊(cè)、續(xù)杯的詳細(xì)過程

    Cursor簡(jiǎn)易注冊(cè)助手腳本通過自動(dòng)化郵箱填寫和驗(yàn)證碼獲取流程,大大簡(jiǎn)化了Cursor的注冊(cè)過程,它不僅提高了注冊(cè)效率,還通過友好的用戶界面和詳細(xì)的日志系統(tǒng),為用戶提供了良好的使用體驗(yàn),本文給大家介紹瀏覽器插件cursor實(shí)現(xiàn)自動(dòng)注冊(cè)、續(xù)杯的詳細(xì)過程,感興趣的朋友一起看看吧
    2025-06-06
  • 讓程序員都費(fèi)解的10大編程語言特性

    讓程序員都費(fèi)解的10大編程語言特性

    這篇文章主要介紹了讓程序員都費(fèi)解的10大編程語言特性,本文羅列了如javascript、Ruby、Java等語言中讓人費(fèi)解的10個(gè)語言特性,需要的朋友可以參考下
    2014-09-09
  • DeepSeek本地部署+可視化WebUI的實(shí)現(xiàn)(圖文教程)

    DeepSeek本地部署+可視化WebUI的實(shí)現(xiàn)(圖文教程)

    本文主要介紹了在本地部署DeepSeek并使用可視化WebUI進(jìn)行AI輔助,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-02-02
  • VSCode + WSL 2 + Ruby環(huán)境搭建圖文詳解

    VSCode + WSL 2 + Ruby環(huán)境搭建圖文詳解

    這篇文章主要介紹了VSCode + WSL 2 + Ruby環(huán)境搭建,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • JetBrains發(fā)布java代碼質(zhì)量檢測(cè)工具Qodana早期預(yù)覽版

    JetBrains發(fā)布java代碼質(zhì)量檢測(cè)工具Qodana早期預(yù)覽版

    這篇文章主要介紹了JetBrains發(fā)布java代碼質(zhì)量檢測(cè)工具Qodana早期預(yù)覽版,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • grafana安裝及使用教程詳解

    grafana安裝及使用教程詳解

    這篇文章主要介紹了grafana安裝及使用教程詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Prometheus和NodeExporter安裝監(jiān)控?cái)?shù)據(jù)說明

    Prometheus和NodeExporter安裝監(jiān)控?cái)?shù)據(jù)說明

    這篇文章主要為大家介紹了Prometheus和node?exporter安裝監(jiān)控?cái)?shù)據(jù)說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 超實(shí)用Internet Download Manager(IDM)破解注冊(cè)碼,全版本通用

    超實(shí)用Internet Download Manager(IDM)破解注冊(cè)碼,全版本通用

    IDM下載器是一個(gè)十分好用的文件下載工具。IDM下載器它能夠幫助你提升5倍的下載速度,強(qiáng)大的續(xù)傳功能,讓你不再擔(dān)心因網(wǎng)絡(luò)問題、計(jì)算機(jī)宕機(jī)、停電等原因所造成的數(shù)據(jù)不全問題,下面小編給大家?guī)砹薎nternet Download Manager(IDM)破解注冊(cè)碼,感興趣的朋友參考下吧
    2023-01-01

最新評(píng)論

兴宁市| 大宁县| 阳朔县| 三河市| 南溪县| 阿克陶县| 海兴县| 和龙市| 旺苍县| 莒南县| 易门县| 阜南县| 固阳县| 望江县| 沁源县| 苏州市| 鹤峰县| 临武县| 长丰县| 温泉县| 鱼台县| 大同市| 扶沟县| 奎屯市| 老河口市| 蚌埠市| 沂南县| 吴忠市| 谷城县| 柏乡县| 咸丰县| 大新县| 天峨县| 河津市| 平遥县| 芮城县| 宁武县| 手机| 威信县| 赣榆县| 太谷县|