色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

鴻蒙OS開發:【一次開發,多端部署】( 設置app頁面)

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-05-21 14:56 ? 次閱讀

一多設置典型頁面

介紹

本示例展示了設置應用的典型頁面,其在小窗口和大窗口有不同的顯示效果,體現一次開發、多端部署的能力。

  1. 本示例使用一次開發多端部署中介紹的自適應布局能力和響應式布局能力進行多設備(或多窗口尺寸)適配,保證應用在不同設備或不同窗口尺寸下可以正常顯示。
  2. 本示例使用[Navigation組件],實現小窗口單欄顯示、大窗口雙欄顯示的效果。

效果預覽

本示例在不同窗口尺寸下的顯示效果。

本示例在開發板上的運行效果。

image.png

使用說明:

  1. 啟動應用,查看應用在全屏狀態下的顯示效果。
  2. 依次點擊WLAN -> 更多WLAN設置,查看應用的顯示效果。
  3. 依次點擊更多連接->NFC,查看應用的顯示效果。
  4. 在應用頂部,下滑出現窗口操作按鈕。(建議通過外接鼠標操作,接入鼠標只需要將鼠標移動至頂部即可出現窗口)
  5. 點擊懸浮圖標,將應用懸浮在桌面上顯示。
  6. 拖動應用懸浮窗口改變窗口尺寸,觸發應用顯示刷新。改變窗口尺寸的過程中,窗口尺寸可能超出屏幕尺寸,此時在屏幕中只能看到應用部分區域的顯示。可以通過移動窗口位置,查看應用其它區域的顯示。
  7. 重復步驟2和3,查看應用在不同窗口尺寸下的顯示效果。
  8. 開發前請熟悉鴻蒙開發指導文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

工程目錄

features/settingitems/src/main/ets/
|---settingList
|   |---settingList.ets                    // 設置頁面
|---moreconnections                                  
|   |---MoreConnectionsItem.ets            // 更多連接模塊
|   |---Nfc.ets                            // nfc對象操作類
|---wlan                                    
|   |---WlanMoreSetting.ets                // 更多網絡設置模塊
|   |---WlanSettingItem.ets                // 網絡設置模塊
|---components                                    
|   |---ItemDescription.ets                // 每個單元組模塊前的標題描述模塊
|   |---ItemGroup.ets                      // 單元組模塊
|   |---MainItem.ets                       // 主體框架模塊
|   |---SearchBox.ets                      // 搜索框模塊
|   |---SubItemArrow.ets                   // 下一步模塊(箭頭跳轉組件)
|   |---SubItemToggle.ets                  // 狀態按鈕組件
|   |---SubItemWifi.ets                    // 子網絡列表模塊   
|---products/default/src/main/ets/pages/
|   |---Index.ets                          // 首頁 

`HarmonyOSOpenHarmony鴻蒙文檔籽料:mau123789是v直接拿`

搜狗高速瀏覽器截圖20240326151450.png

具體實現

本示例介紹如何實現不同斷點下存在單欄和雙欄設計的場景,主要有以下三方面:

實現單/雙欄的顯示效果

通過Navigation組件實現單/雙欄展示,由Navbar(設置主頁面)和Content(跳轉子頁面)兩部分區域組成,Navigation組件支持Stack、Split以及Auto三種模式。
1、stack模式:導航欄與內容區獨立顯示,相當于多個頁面。展示效果:從Navbar(設置主頁面)跳轉到Content1(WLAN頁面)跳轉到Content2(更多WLAN模式)。
2、Split模式:導航欄與內容區分兩欄顯示。展示效果:Navbar+Content1。
3、auto模式:Navigation組件可以根據應用窗口尺寸,自動選擇合適的模式:窗口寬度小于520vp時,采用Stack模式顯示;窗口寬度大于等于520vp時,采用Split模式顯示。當窗口尺寸發生改變時,Navigation組件也會自動在Stack模式和Split模式之間切換。[源碼參考]。

/*

 * Copyright (c) 2022 Huawei Device Co., Ltd.

 * Licensed under the Apache License, Version 2.0 (the "License");

 * you may not use this file except in compliance with the License.

 * You may obtain a copy of the License at

 *

 *     http://www.apache.org/licenses/LICENSE-2.0

 *

 * Unless required by applicable law or agreed to in writing, software

 * distributed under the License is distributed on an "AS IS" BASIS,

 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

 * See the License for the specific language governing permissions and

 * limitations under the License.

 */



import { SettingList } from '@ohos/settingItems'



let storage = LocalStorage.GetShared()



@Entry(storage)

@Component

struct Index {

  @LocalStorageProp('currentBreakpoint') curBp: string = 'sm'

  @LocalStorageProp('windowWidth') windowWidth: number = 300

  @LocalStorageProp('isSplitMode') isSplitMode: boolean = false

  @State itemTitle: string = ''



  aboutToAppear() {

    this.itemTitle = getContext().resourceManager.getStringSync($r('app.string.settings').id)

  }



  build() {

    Navigation() {

      SettingList()

    }

    .title(this.itemTitle)

    .mode(this.isSplitMode ? NavigationMode.Split : NavigationMode.Stack)

    .navBarWidth(0.4 * this.windowWidth)

    .hideToolBar(true)

    .width('100%')

    .height('100%')

    .backgroundColor($r("sys.color.ohos_id_color_sub_background"))

  }

}

實現點擊跳轉或刷新

Navigation組件通常搭配NavRouter組件以及NavDestination組件一起使用:

  • NavRouter組件用于控制Navigation組件Content區域的顯示和刷新邏輯:其必須包含兩個孩子節點。
    1、容器類組件-直接控制NavRouter的顯示效果。
    2、NavDestination組件:刷新Navigation組件Content區域的顯示。
    3、NavRouter組件通過onStateChange回調事件,用于通知開發者NavRouter的狀態:用戶點擊NavRouter,激活NavRouter并加載對應的NavDestination子組件時,回調onStateChange(true);
    4、NavRouter對應的NavDestination子組件不再顯示時,回調onStateChange(false)。
  • NavDestination組件用于實際刷新Navigation組件Content區域的顯示。
  • 例如:在本示例中wlan功能項為NavRouter的第一個孩子節點,跳轉的子頁面WLAN為NavRouter的第二個孩子節點,[源碼參考]。
/**

 * Copyright (c) 2021-2023 Huawei Device Co., Ltd.

 * Licensed under the Apache License, Version 2.0 (the "License");

 * you may not use this file except in compliance with the License.

 * You may obtain a copy of the License at

 *

 *     http://www.apache.org/licenses/LICENSE-2.0

 *

 * Unless required by applicable law or agreed to in writing, software

 * distributed under the License is distributed on an "AS IS" BASIS,

 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

 * See the License for the specific language governing permissions and

 * limitations under the License.

 */



import { MainItem } from '../components/MainItem'

import { WlanMoreSettingItem } from './WlanMoreSetting'

import { SubItemToggle } from '../components/SubItemToggle'

import { SubItemWifi } from '../components/SubItemWifi'

import { ItemGroup } from '../components/ItemGroup'

import { ItemDescription } from '../components/ItemDescription'



@Component

export struct WlanSettingItem {

  @State itemTitle: string = ''

  @LocalStorageLink('selectedLabel') selectedLabel: string  = ''



  aboutToAppear() {

    this.itemTitle = getContext().resourceManager.getStringSync($r('app.string.wifiTab').id)

  }



  build() {

    Column() {

      NavRouter() {

        MainItem({

          title: $r('app.string.wifiTab'),

          tag: 'UX',

          icon: $r('app.media.wlan'),

          label: 'WLAN'

        })



        NavDestination() {

          WlanSetting()

        }

        .title(this.itemTitle)

        .backgroundColor($r('sys.color.ohos_id_color_sub_background'))

      }.onStateChange((isActivated: boolean) = > {

        if (isActivated) {

          this.selectedLabel = 'WLAN'

        }

      })

    }

  }

}



@Component

struct WlanSetting {

  @Builder CustomDivider() {

    Divider()

      .strokeWidth('1px')

      .color($r('sys.color.ohos_id_color_list_separator'))

      .margin({left: 12, right: 8})

  }



  build() {

    Column() {

      Column() {

        ItemGroup() {

          SubItemToggle({title: $r('app.string.wifiTab'), isOn: true})

        }



        Row().height(16)



        ItemGroup() {

          WlanMoreSettingItem()

        }

      }

      .margin({bottom: 19.5})

      .flexShrink(0)



      Scroll() {

        Column() {

          ItemDescription({description: $r('app.string.wifiTipConnectedWLAN')})

            .padding({

              left: 12,

              right: 12,

              bottom: 9.5

            })



          ItemGroup() {

            SubItemWifi({

              title: 'UX',

              subTitle: $r('app.string.wifiSummaryConnected'),

              isConnected: true,

              icon: $r('app.media.ic_wifi_signal_4_dark')

            })

          }



          Column() {

            ItemDescription({description: $r('app.string.wifiTipValidWLAN')})

              .margin({

                left: 12,

                right: 12,

                top: 19.5,

                bottom: 9.5

              })



            ItemGroup() {

              SubItemWifi({

                title: 'Huwe-yee',

                subTitle: $r('app.string.wifiSummaryEncrypted'),

                isConnected: false,

                icon: $r('app.media.ic_wifi_lock_signal_4_dark')

              })



              this.CustomDivider()



              SubItemWifi({

                title: 'UX-5G',

                subTitle: $r('app.string.wifiSummaryOpen'),

                isConnected: false,

                icon: $r('app.media.ic_wifi_signal_4_dark')

              })



              this.CustomDivider()



              SubItemWifi({

                title: 'E1-AP',

                subTitle: $r('app.string.wifiSummarySaveOpen'),

                isConnected: false,

                icon: $r('app.media.ic_wifi_signal_4_dark')

              })

            }

          }

        }

      }

      .scrollable(ScrollDirection.Vertical)

      .scrollBar(BarState.Off)

      .width('100%')

      .flexShrink(1)

    }

    .width('100%')

    .height('100%')

    .padding({left: 12, right: 12})

  }

}

實現多級跳轉

Navigation組件支持自動切換單欄和雙欄的顯示效果,同時可以根據當前狀態自動添加返回鍵及響應系統的返回鍵事件。[源碼參考]。

/**

 * Copyright (c) 2021-2023 Huawei Device Co., Ltd.

 * Licensed under the Apache License, Version 2.0 (the "License");

 * you may not use this file except in compliance with the License.

 * You may obtain a copy of the License at

 *

 *     http://www.apache.org/licenses/LICENSE-2.0

 *

 * Unless required by applicable law or agreed to in writing, software

 * distributed under the License is distributed on an "AS IS" BASIS,

 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

 * See the License for the specific language governing permissions and

 * limitations under the License.

 */



import { SubItemArrow } from '../components/SubItemArrow'

import { SubItemToggle } from '../components/SubItemToggle'

import { ItemGroup } from '../components/ItemGroup'

import { ItemDescription } from '../components/ItemDescription'



@Component

export struct WlanMoreSettingItem {

  @State itemTitle: string = ''

  @LocalStorageLink('selectedLabel') selectedLabel: string = ''



  aboutToAppear() {

    this.itemTitle = getContext().resourceManager.getStringSync($r('app.string.moreWlanSettings').id)

  }



  build() {

    NavRouter() {

      SubItemArrow({ title: $r('app.string.moreWlanSettings') })



      NavDestination() {

        WlanMoreSetting()

      }

      .title(this.itemTitle)

      .backgroundColor($r('sys.color.ohos_id_color_sub_background'))

    }

    .onStateChange((isActivated: boolean) = > {

      if (isActivated) {

        this.selectedLabel = 'WLAN'

      }

    })

  }

}



@Component

export struct WlanMoreSetting {

  build() {

    Scroll() {

      Column() {

        ItemGroup() {

          SubItemArrow({

            title: $r('app.string.wlanPlus'),

            tag: $r('app.string.enabled')

          })

        }



        ItemDescription({description: $r('app.string.wlanPlusTip')})

          .margin({

            top: 8,

            bottom: 24,

            left: 12,

            right: 12

          })



        ItemGroup() {

          SubItemArrow({ title: $r('app.string.wlanDirect') })

        }



        Blank().height(12)



        ItemGroup() {

          SubItemToggle({title: $r('app.string.wlanSecurityCheck')})

        }



        ItemDescription({description: $r('app.string.wlanSecurityCheckTip')})

          .margin({

            top: 8,

            bottom: 24,

            left: 12,

            right: 12

          })



        ItemGroup() {

          SubItemArrow({title: $r('app.string.savedWlan')})

          Divider()

            .strokeWidth('1px')

            .color($r('sys.color.ohos_id_color_list_separator'))

            .margin({left: 12, right: 8})

          SubItemArrow({title: $r('app.string.installCertificates')})

        }

      }

      .backgroundColor($r('sys.color.ohos_id_color_sub_background'))

      .padding({left: 12, right: 12})

    }

    .scrollBar(BarState.Off)

    .width('100%')

  }

}

1、通過激活SettingList中的WLANSettingItem,可以加載及顯示WlanSetting。
2、激活WlanSetting中的WlanMoreSettingItem,可以加載及顯示WlanMoreSetting。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 鴻蒙
    +關注

    關注

    57

    文章

    2392

    瀏覽量

    42972
  • 鴻蒙OS
    +關注

    關注

    0

    文章

    190

    瀏覽量

    4491
收藏 人收藏

    評論

    相關推薦

    HarmonyOS開發案例:【一次開發多端部署(視頻應用)】

    者提供了“一次開發多端部署”的系統能力,讓開發者可以基于一次
    的頭像 發表于 05-11 15:41 ?1538次閱讀
    HarmonyOS<b class='flag-5'>開發</b>案例:【<b class='flag-5'>一次</b><b class='flag-5'>開發</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>(視頻應用)】

    HarmonyOS開發案例:【一次開發多端部署-音樂專輯】

    基于自適應和響應式布局,實現一次開發多端部署音樂專輯頁面
    的頭像 發表于 05-13 16:48 ?722次閱讀
    HarmonyOS<b class='flag-5'>開發</b>案例:【<b class='flag-5'>一次</b><b class='flag-5'>開發</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>-音樂專輯】

    鴻蒙OS開發:【一次開發多端部署】(天氣應用)案例

    本章通過個天氣應用,介紹多應用的整體開發過程,包括UX設計、工程管理及調試、頁面開發等。
    的頭像 發表于 05-15 15:42 ?1106次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發</b>:【<b class='flag-5'>一次</b><b class='flag-5'>開發</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】(天氣應用)案例

    鴻蒙OS開發:【一次開發多端部署】應用(資源使用)

    頁面開發過程中,經常需要用到顏色、字體、間距、圖片等資源,在不同的設備或配置中,這些資源的值可能不同。
    的頭像 發表于 05-21 15:43 ?1083次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發</b>:【<b class='flag-5'>一次</b><b class='flag-5'>開發</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】應用(資源使用)

    鴻蒙OS開發:【一次開發多端部署】(多天氣)項目

    本示例展示個天氣應用界面,包括首頁、城市管理、添加城市、更新時間彈窗,體現一次開發多端部署的能力。
    的頭像 發表于 05-20 14:59 ?884次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發</b>:【<b class='flag-5'>一次</b><b class='flag-5'>開發</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】(<b class='flag-5'>一</b>多天氣)項目

    鴻蒙OS開發:【一次開發多端部署】(音樂專輯主頁)

    本示例使用一次開發多端部署中介紹的自適應布局能力和響應式布局能力進行多設備(或多窗口尺寸)適配,保證應用在不同設備或不同窗口尺寸下可以正常顯示。
    的頭像 發表于 05-21 14:48 ?866次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發</b>:【<b class='flag-5'>一次</b><b class='flag-5'>開發</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】(音樂專輯主頁)

    鴻蒙OS開發:【一次開發多端部署】(音樂專輯頁面

    基于自適應和響應式布局,實現一次開發多端部署音樂專輯頁面
    的頭像 發表于 05-25 16:21 ?844次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發</b>:【<b class='flag-5'>一次</b><b class='flag-5'>開發</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】(音樂專輯<b class='flag-5'>頁面</b>)

    鴻蒙OS開發:【一次開發多端部署】(視頻應用)

    者提供了“一次開發多端部署”的系統能力,讓開發者可以基于一次
    的頭像 發表于 05-25 16:29 ?4596次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發</b>:【<b class='flag-5'>一次</b><b class='flag-5'>開發</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】(視頻應用)

    鴻蒙OS開發:典型頁面場景【一次開發多端部署】實戰(音樂專輯頁2)

    本示例使用[一次開發多端部署]中介紹的自適應布局能力和響應式布局能力進行多設備(或多窗口尺寸)適配,保證應用在不同設備或不同窗口尺寸下可以正常顯示。
    的頭像 發表于 05-25 16:47 ?2151次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發</b>:典型<b class='flag-5'>頁面</b>場景【<b class='flag-5'>一次</b><b class='flag-5'>開發</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】實戰(音樂專輯頁2)

    鴻蒙OS開發:典型頁面場景【一次開發多端部署】(設置應用頁面

    本小節以“設置”應用頁面為例,介紹如何使用自適應布局能力和響應式布局能力適配不同尺寸窗口。
    的頭像 發表于 05-27 10:33 ?1280次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發</b>:典型<b class='flag-5'>頁面</b>場景【<b class='flag-5'>一次</b><b class='flag-5'>開發</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】(<b class='flag-5'>設置</b>應用<b class='flag-5'>頁面</b>)

    鴻蒙OS開發:典型頁面場景【一次開發多端部署】實戰(設置典型頁面

    本示例展示了設置應用的典型頁面,其在小窗口和大窗口有不同的顯示效果,體現一次開發多端部署的能力
    的頭像 發表于 05-27 09:36 ?1215次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發</b>:典型<b class='flag-5'>頁面</b>場景【<b class='flag-5'>一次</b><b class='flag-5'>開發</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】實戰(<b class='flag-5'>設置</b>典型<b class='flag-5'>頁面</b>)

    華為開發者大會2021:一次開發 多端部署

    一次開發 多端部署使能開發者從單設備生態跨入多設備生態!
    的頭像 發表于 10-22 15:09 ?1662次閱讀
    華為<b class='flag-5'>開發</b>者大會2021:<b class='flag-5'>一次</b><b class='flag-5'>開發</b> <b class='flag-5'>多端</b><b class='flag-5'>部署</b>

    華為開發者大會2021:軟件部總裁龔體 鴻蒙系統 一次開發 多端部署 萬物互連

    華為開發者大會2021:鴻蒙系統 一次開發 多端部署 萬物互連 在華為
    的頭像 發表于 10-22 15:09 ?4596次閱讀
    華為<b class='flag-5'>開發</b>者大會2021:軟件部總裁龔體 <b class='flag-5'>鴻蒙</b>系統 <b class='flag-5'>一次</b><b class='flag-5'>開發</b> <b class='flag-5'>多端</b><b class='flag-5'>部署</b> 萬物互連

    鴻蒙OS開發:【一次開發多端部署】(多設備自適應能力)簡單介紹

    本示例是《一次開發多端部署》的配套示例代碼,展示了[頁面開發
    的頭像 發表于 05-21 14:59 ?2538次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發</b>:【<b class='flag-5'>一次</b><b class='flag-5'>開發</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】(多設備自適應能力)簡單介紹

    鴻蒙OS開發:典型頁面場景【一次開發多端部署】(功能開發

    應用開發至少包含兩部分工作: UI頁面開發和底層功能開發(部分需要聯網的應用還會涉及服務端開發)。前面章節介紹了如何解決
    的頭像 發表于 05-28 17:32 ?636次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發</b>:典型<b class='flag-5'>頁面</b>場景【<b class='flag-5'>一次</b><b class='flag-5'>開發</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】(功能<b class='flag-5'>開發</b>)
    主站蜘蛛池模板: 浪荡女天天不停挨CAO日常视 | 凤楼app| 国产精品久久久久久人妻精品蜜桃 | 亚洲色图激情文学 | 久久黄色小视频 | 99精品视频在线免费观看 | 国产成人免费高清激情视频 | 少爷不要别揉了高H | 中文在线中文资源 | 欧美精品一区二区三区四区 | 色婷婷综合久久久久中文一区二区 | 亚洲综合无码一区二区 | 国产成人免费高清在线观看 | 国产精品久久久久影院 | 两个洞一起插哦!好刺激 | 久久无码人妻AV精品一区 | WWW国产亚洲精品久久 | 全黄H全肉细节文NP 全黄h全肉细节全文 | 欧美 另类 美腿 亚洲 无码 | 暗卫受被肉到失禁各种PLAY | 歪歪漫画羞羞漫画国产 | 欧美の无码国产の无码影院 | 中国女人内谢69xxxxxx直播 | 午夜向日葵视频在线观看 | 亚洲视频网站欧美视频网站 | 久久国产精品自线拍免费 | 狠狠色狠狠色88综合日日91 | 久9青青cao精品视频在线 | 8090碰成年女人免费碰碰尤物 | 男人就爱吃这套下载 | 草草久久久亚洲AV成人片 | 国产精品伦理一二三区伦理 | 毛片免费播放 | 美女坐脸vk| 暖暖视频大全免费观看 | 人妻熟女斩五十路0930 | 久久久久国产精品嫩草影院 | 美国z0069| 日韩午夜中文字幕电影 | 一本色道久久综合亚洲AV蜜桃 | 国产成人理在线观看视频 |