一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙OS開(kāi)發(fā):【一次開(kāi)發(fā),多端部署】(一多天氣)項(xiàng)目

jf_46214456 ? 來(lái)源:jf_46214456 ? 作者:jf_46214456 ? 2024-05-20 14:59 ? 次閱讀

一多天氣

介紹

本示例展示一個(gè)天氣應(yīng)用界面,包括首頁(yè)、城市管理、添加城市、更新時(shí)間彈窗,體現(xiàn)一次開(kāi)發(fā),多端部署的能力。

1.本示例參考一次開(kāi)發(fā),多端部署的指導(dǎo),主要使用響應(yīng)式布局的柵格斷點(diǎn)系統(tǒng)實(shí)現(xiàn)在不同尺寸窗口界面上不同的顯示效果。

2.使用[SideBarContainer]實(shí)現(xiàn)側(cè)邊欄功能。

3.使用[柵格容器組件]實(shí)現(xiàn)界面內(nèi)容的分割和展示。

4.使用Canvas和CanvasRenderingContext2D完成空氣質(zhì)量和日出月落圖的曲線繪制。

開(kāi)發(fā)前請(qǐng)熟悉鴻蒙開(kāi)發(fā)指導(dǎo)文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

效果預(yù)覽

image.png

使用說(shuō)明:

1.啟動(dòng)應(yīng)用后,首頁(yè)展示已添加城市的天氣信息,默認(rèn)展示2個(gè)城市,左右滑動(dòng)可以切換城市,在LG設(shè)備上,默認(rèn)顯示側(cè)邊欄,側(cè)邊欄顯示時(shí),右側(cè)內(nèi)容區(qū)占2/3,側(cè)邊欄隱藏時(shí),內(nèi)容區(qū)自動(dòng)鋪滿界面。

2.在支持窗口自由拖拽的設(shè)備上,拖拽窗口大小,可以分別實(shí)現(xiàn)拖動(dòng)到最大窗口側(cè)邊欄顯示(點(diǎn)擊側(cè)邊欄控制按鈕可以隱藏和顯示側(cè)邊欄),拖動(dòng)窗口縮小到MD大小時(shí)側(cè)邊欄和側(cè)邊欄控制按鈕隱藏。

3.在支持窗口自由拖拽的設(shè)備上,拖拽窗口大小,天氣內(nèi)容區(qū)跟隨窗口大小會(huì)自動(dòng)換行顯示。

4.點(diǎn)擊右上角菜單按鈕,在菜單中點(diǎn)擊 更新時(shí)間 ,彈出更新時(shí)間彈窗,沒(méi)有功能,此處只做展示,在平板設(shè)備上顯示2列,在小屏設(shè)備上顯示一列。

5.點(diǎn)擊右上角菜單按鈕,在菜單中點(diǎn)擊 管理城市 ,進(jìn)入管理城市界面,展示已添加的城市,在平板設(shè)備上顯示2列,在小屏設(shè)備上顯示一列。

6.點(diǎn)擊管理城市界面的 添加城市 ,進(jìn)入添加城市界面,已添加的城市不可點(diǎn)擊,未添加的城市點(diǎn)擊可以添加并返回管理城市界面顯示。

工程目錄

/code/SuperFeature/MultiDeviceAppDev/Weather/product/default
└─src
    ├─main
    │  │
    │  ├─ets
    │  │  ├─Application
    │  │  │      MyAbilityStage.ts          //自定義ability
    │  │  │
    │  │  ├─common                          //公共資源庫(kù)
    │  │  ├─feature
    │  │  │      AirQualityFeature.ts       //空氣繪畫(huà)
    │  │  │      SunCanvasFeature.ts        //晴天繪畫(huà)
    │  │  │
    │  │  ├─MainAbility
    │  │  │      MainAbility.ts             //主窗口
    │  │  │
    │  │  └─pages
    │  │      │  AddCity.ets                //添加城市
    │  │      │  CityList.ets               //城市列表
    │  │      │  Home.ets                   //入口
    │  │      │
    │  │      └─home
    │  │              AirQuality.ets         //空氣質(zhì)量
    │  │              HomeContent.ets        //主頁(yè)面
    │  │              HoursWeather.ets       //每小時(shí)天氣組件
    │  │              IndexEnd.ets           //首頁(yè)尾 
    │  │              IndexHeader.ets        //首頁(yè)頭
    │  │              IndexTitleBar.ets      //首頁(yè)標(biāo)題
    │  │              LifeIndex.ets          //生活建議
    │  │              MultidayWeather.ets    //天氣組件
    │  │              SideContent.ets        //側(cè)邊欄
    │  │              SunCanvas.ets          //晴天樣式
    │  │              UpdateTimeDialog.ets   //時(shí)間更新彈窗
    │  │
    │  └─resources                           //資源包

具體實(shí)現(xiàn)

1、home.ets中引入SideContent()和homeContent()。
2、定義showSideBar來(lái)判斷是否展示側(cè)邊欄,定義mediaquery.MediaQueryListener媒體監(jiān)聽(tīng)器smListener、mdListener、lgListener。
3、在aboutToAppear調(diào)用mediaquery對(duì)界面進(jìn)行監(jiān)聽(tīng),[源碼參考]。

/*

 * Copyright (c) 2022-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 mediaquery from '@ohos.mediaquery';

import HomeContent from './home/HomeContent';

import IndexTitleBar from './home/IndexTitleBar';

import SideContent from './home/SideContent';

import { CityListData, Style, getBg, getCityListWeatherData, Logger } from '@ohos/common';



const TAG: string = 'Home';



@Entry

@Component

struct Home {

  @StorageLink('isRefresh') @Watch('refreshChange') isRefresh: boolean = false;

  @StorageLink('swiperIndex') swiperIndex: number = 0;

  @State curBp: string = 'md';

  @State cityListWeatherData: CityListData[] = getCityListWeatherData();

  @State popupState: boolean = false;

  @State showSideBar: boolean = false;

  private smListener: mediaquery.MediaQueryListener;

  private mdListener: mediaquery.MediaQueryListener;

  private lgListener: mediaquery.MediaQueryListener;



  build() {

    SideBarContainer(SideBarContainerType.Embed) {

      SideContent({ showSideBar: $showSideBar })

        .height('100%')

      Column() {

        IndexTitleBar({ showSideBar: $showSideBar })

          .height(56)

        Swiper() {

          ForEach(this.cityListWeatherData, (item, index) = > {

            HomeContent({ showSideBar: this.showSideBar, cityListData: item, index: index })

          }, item = > item.city)

        }

        .id('swiper')

        .padding({ left: Style.NORMAL_PADDING, right: Style.NORMAL_PADDING })

        .indicatorStyle({

          selectedColor: Color.White

        })

        .onChange(index = > {

          this.swiperIndex = index;

          AppStorage.SetOrCreate('swiperIndex', this.swiperIndex);

        })

        .indicator(this.curBp !== 'lg')

        .index(this.swiperIndex)

        .loop(false)

        .width('100%')

        .layoutWeight(1)

      }

      .height('100%')

    }

    .height('100%')

    .sideBarWidth('33.3%')

    .minSideBarWidth('33.3%')

    .maxSideBarWidth('33.3%')

    .showControlButton(false)

    .showSideBar(this.showSideBar)

    .backgroundImageSize(ImageSize.Cover)

    .backgroundImage(getBg(this.cityListWeatherData[this.swiperIndex].header.weatherType))

  }



  aboutToAppear() {

    this.smListener = mediaquery.matchMediaSync('(320vp< width<=600vp)');

    this.smListener.on("change", this.isBreakpointSM);

    this.mdListener = mediaquery.matchMediaSync('(600vp< width<=840vp)');

    this.mdListener.on("change", this.isBreakpointMD);

    this.lgListener = mediaquery.matchMediaSync('(840vp< width)');

    this.lgListener.on("change", this.isBreakpointLG);

  }



  aboutToDisappear() {

    this.smListener.off("change", this.isBreakpointSM);

    this.mdListener.off("change", this.isBreakpointMD);

    this.lgListener.off("change", this.isBreakpointLG);

  }



  isBreakpointSM = (mediaQueryResult) = > {

    if (mediaQueryResult.matches) {

      this.curBp = 'sm';

      this.showSideBar = false;

      AppStorage.SetOrCreate('curBp', this.curBp);

    }

    Logger.info(TAG, `this.curBp = ${this.curBp}`);

  }

  isBreakpointMD = (mediaQueryResult) = > {

    if (mediaQueryResult.matches) {

      this.curBp = 'md';

      this.showSideBar = false;

      AppStorage.SetOrCreate('curBp', this.curBp);

    }

    Logger.info(TAG, `this.curBp = ${this.curBp}`);

  }

  isBreakpointLG = (mediaQueryResult) = > {

    if (mediaQueryResult.matches) {

      if (this.curBp !== 'lg') {

        this.showSideBar = true;

      }

      this.curBp = 'lg';

      AppStorage.SetOrCreate('curBp', this.curBp);

    }

    Logger.info(TAG, `this.curBp = ${this.curBp}`);

  }



  refreshChange() {

    Logger.info(TAG, `refreshChange}`);

    if (this.isRefresh) {

      this.cityListWeatherData = getCityListWeatherData();

      AppStorage.SetOrCreate('isRefresh', false);

    }

    Logger.info(TAG, `refreshChange, this.cityListWeatherData.length = ${this.cityListWeatherData.length}`);

  }

}

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

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

4、監(jiān)聽(tīng)到當(dāng)前屏幕大小,調(diào)用this.isBreakpoint斷點(diǎn),對(duì)curBp、showSideBar進(jìn)行賦值,[源碼參考]。

/*

 * Copyright (c) 2022-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 mediaquery from '@ohos.mediaquery';

import HomeContent from './home/HomeContent';

import IndexTitleBar from './home/IndexTitleBar';

import SideContent from './home/SideContent';

import { CityListData, Style, getBg, getCityListWeatherData, Logger } from '@ohos/common';



const TAG: string = 'Home';



@Entry

@Component

struct Home {

  @StorageLink('isRefresh') @Watch('refreshChange') isRefresh: boolean = false;

  @StorageLink('swiperIndex') swiperIndex: number = 0;

  @State curBp: string = 'md';

  @State cityListWeatherData: CityListData[] = getCityListWeatherData();

  @State popupState: boolean = false;

  @State showSideBar: boolean = false;

  private smListener: mediaquery.MediaQueryListener;

  private mdListener: mediaquery.MediaQueryListener;

  private lgListener: mediaquery.MediaQueryListener;



  build() {

    SideBarContainer(SideBarContainerType.Embed) {

      SideContent({ showSideBar: $showSideBar })

        .height('100%')

      Column() {

        IndexTitleBar({ showSideBar: $showSideBar })

          .height(56)

        Swiper() {

          ForEach(this.cityListWeatherData, (item, index) = > {

            HomeContent({ showSideBar: this.showSideBar, cityListData: item, index: index })

          }, item = > item.city)

        }

        .id('swiper')

        .padding({ left: Style.NORMAL_PADDING, right: Style.NORMAL_PADDING })

        .indicatorStyle({

          selectedColor: Color.White

        })

        .onChange(index = > {

          this.swiperIndex = index;

          AppStorage.SetOrCreate('swiperIndex', this.swiperIndex);

        })

        .indicator(this.curBp !== 'lg')

        .index(this.swiperIndex)

        .loop(false)

        .width('100%')

        .layoutWeight(1)

      }

      .height('100%')

    }

    .height('100%')

    .sideBarWidth('33.3%')

    .minSideBarWidth('33.3%')

    .maxSideBarWidth('33.3%')

    .showControlButton(false)

    .showSideBar(this.showSideBar)

    .backgroundImageSize(ImageSize.Cover)

    .backgroundImage(getBg(this.cityListWeatherData[this.swiperIndex].header.weatherType))

  }



  aboutToAppear() {

    this.smListener = mediaquery.matchMediaSync('(320vp< width<=600vp)');

    this.smListener.on("change", this.isBreakpointSM);

    this.mdListener = mediaquery.matchMediaSync('(600vp< width<=840vp)');

    this.mdListener.on("change", this.isBreakpointMD);

    this.lgListener = mediaquery.matchMediaSync('(840vp< width)');

    this.lgListener.on("change", this.isBreakpointLG);

  }



  aboutToDisappear() {

    this.smListener.off("change", this.isBreakpointSM);

    this.mdListener.off("change", this.isBreakpointMD);

    this.lgListener.off("change", this.isBreakpointLG);

  }



  isBreakpointSM = (mediaQueryResult) = > {

    if (mediaQueryResult.matches) {

      this.curBp = 'sm';

      this.showSideBar = false;

      AppStorage.SetOrCreate('curBp', this.curBp);

    }

    Logger.info(TAG, `this.curBp = ${this.curBp}`);

  }

  isBreakpointMD = (mediaQueryResult) = > {

    if (mediaQueryResult.matches) {

      this.curBp = 'md';

      this.showSideBar = false;

      AppStorage.SetOrCreate('curBp', this.curBp);

    }

    Logger.info(TAG, `this.curBp = ${this.curBp}`);

  }

  isBreakpointLG = (mediaQueryResult) = > {

    if (mediaQueryResult.matches) {

      if (this.curBp !== 'lg') {

        this.showSideBar = true;

      }

      this.curBp = 'lg';

      AppStorage.SetOrCreate('curBp', this.curBp);

    }

    Logger.info(TAG, `this.curBp = ${this.curBp}`);

  }



  refreshChange() {

    Logger.info(TAG, `refreshChange}`);

    if (this.isRefresh) {

      this.cityListWeatherData = getCityListWeatherData();

      AppStorage.SetOrCreate('isRefresh', false);

    }

    Logger.info(TAG, `refreshChange, this.cityListWeatherData.length = ${this.cityListWeatherData.length}`);

  }

}

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 柵格
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    11318
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2469

    瀏覽量

    43652
  • 鴻蒙OS
    +關(guān)注

    關(guān)注

    0

    文章

    190

    瀏覽量

    4839
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ?HarmonyOS"一次開(kāi)發(fā)多端部署"優(yōu)秀實(shí)踐——玩機(jī)技巧

    的潛在用戶群體。個(gè)應(yīng)用要在多類設(shè)備上提供統(tǒng)的內(nèi)容,需要適配不同的屏幕尺寸和硬件,開(kāi)發(fā)成本較高。"一次開(kāi)發(fā)
    的頭像 發(fā)表于 08-30 10:25 ?3253次閱讀
    ?HarmonyOS"<b class='flag-5'>一次</b><b class='flag-5'>開(kāi)發(fā)</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>"優(yōu)秀實(shí)踐——玩機(jī)技巧

    HarmonyOS開(kāi)發(fā)案例:【一次開(kāi)發(fā)多端部署(視頻應(yīng)用)】

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

    HarmonyOS開(kāi)發(fā)案例:【一次開(kāi)發(fā),多端部署-音樂(lè)專輯】

    基于自適應(yīng)和響應(yīng)式布局,實(shí)現(xiàn)一次開(kāi)發(fā)、多端部署音樂(lè)專輯頁(yè)面。
    的頭像 發(fā)表于 05-13 16:48 ?899次閱讀
    HarmonyOS<b class='flag-5'>開(kāi)發(fā)</b>案例:【<b class='flag-5'>一次</b><b class='flag-5'>開(kāi)發(fā)</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>-音樂(lè)專輯】

    鴻蒙OS開(kāi)發(fā):【一次開(kāi)發(fā),多端部署】(天氣應(yīng)用)案例

    本章通過(guò)個(gè)天氣應(yīng)用,介紹一多應(yīng)用的整體開(kāi)發(fā)過(guò)程,包括UX設(shè)計(jì)、工程管理及調(diào)試、頁(yè)面開(kāi)發(fā)等。
    的頭像 發(fā)表于 05-15 15:42 ?1327次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開(kāi)發(fā)</b>:【<b class='flag-5'>一次</b><b class='flag-5'>開(kāi)發(fā)</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】(<b class='flag-5'>天氣</b>應(yīng)用)案例

    鴻蒙OS開(kāi)發(fā):【一次開(kāi)發(fā),多端部署】(音樂(lè)專輯主頁(yè))

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

    鴻蒙OS開(kāi)發(fā):【一次開(kāi)發(fā),多端部署】(音樂(lè)專輯頁(yè)面)

    基于自適應(yīng)和響應(yīng)式布局,實(shí)現(xiàn)一次開(kāi)發(fā)、多端部署音樂(lè)專輯頁(yè)面。
    的頭像 發(fā)表于 05-25 16:21 ?1105次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開(kāi)發(fā)</b>:【<b class='flag-5'>一次</b><b class='flag-5'>開(kāi)發(fā)</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】(音樂(lè)專輯頁(yè)面)

    鴻蒙OS開(kāi)發(fā):【一次開(kāi)發(fā),多端部署】(視頻應(yīng)用)

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

    鴻蒙OS開(kāi)發(fā):典型頁(yè)面場(chǎng)景【一次開(kāi)發(fā),多端部署】實(shí)戰(zhàn)(音樂(lè)專輯頁(yè)2)

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

    鴻蒙OS開(kāi)發(fā):典型頁(yè)面場(chǎng)景【一次開(kāi)發(fā),多端部署】實(shí)戰(zhàn)(設(shè)置典型頁(yè)面)

    本示例展示了設(shè)置應(yīng)用的典型頁(yè)面,其在小窗口和大窗口有不同的顯示效果,體現(xiàn)一次開(kāi)發(fā)、多端部署的能力。
    的頭像 發(fā)表于 05-27 09:36 ?1444次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開(kāi)發(fā)</b>:典型頁(yè)面場(chǎng)景【<b class='flag-5'>一次</b><b class='flag-5'>開(kāi)發(fā)</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】實(shí)戰(zhàn)(設(shè)置典型頁(yè)面)

    HarmonyOS\"一次開(kāi)發(fā),多端部署\"優(yōu)秀實(shí)踐——玩機(jī)技巧,碼上起航

    的潛在用戶群體。個(gè)應(yīng)用要在多類設(shè)備上提供統(tǒng)的內(nèi)容,需要適配不同的屏幕尺寸和硬件,開(kāi)發(fā)成本較高。\"一次開(kāi)發(fā)
    發(fā)表于 08-30 18:14

    華為開(kāi)發(fā)者大會(huì)2021:一次開(kāi)發(fā) 多端部署

    一次開(kāi)發(fā) 多端部署使能開(kāi)發(fā)者從單設(shè)備生態(tài)跨入多設(shè)備生態(tài)!
    的頭像 發(fā)表于 10-22 15:09 ?1741次閱讀
    華為<b class='flag-5'>開(kāi)發(fā)</b>者大會(huì)2021:<b class='flag-5'>一次</b><b class='flag-5'>開(kāi)發(fā)</b> <b class='flag-5'>多端</b><b class='flag-5'>部署</b>

    華為開(kāi)發(fā)者大會(huì)2021:軟件部總裁龔體 鴻蒙系統(tǒng) 一次開(kāi)發(fā) 多端部署 萬(wàn)物互連

    華為開(kāi)發(fā)者大會(huì)2021:鴻蒙系統(tǒng) 一次開(kāi)發(fā) 多端部署 萬(wàn)物互連 在華為
    的頭像 發(fā)表于 10-22 15:09 ?4763次閱讀
    華為<b class='flag-5'>開(kāi)發(fā)</b>者大會(huì)2021:軟件部總裁龔體 <b class='flag-5'>鴻蒙</b>系統(tǒng) <b class='flag-5'>一次</b><b class='flag-5'>開(kāi)發(fā)</b> <b class='flag-5'>多端</b><b class='flag-5'>部署</b> 萬(wàn)物互連

    鴻蒙OS開(kāi)發(fā):【一次開(kāi)發(fā)多端部署】(簡(jiǎn)介)

    隨著終端設(shè)備形態(tài)日益多樣化,分布式技術(shù)逐漸打破單硬件邊界,個(gè)應(yīng)用或服務(wù),可以在不同的硬件設(shè)備之間隨意調(diào)用、互助共享,讓用戶享受無(wú)縫的全場(chǎng)景體驗(yàn)。而作為應(yīng)用開(kāi)發(fā)者,廣泛的設(shè)備類型也能為應(yīng)用帶來(lái)廣大
    的頭像 發(fā)表于 05-14 15:20 ?1520次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開(kāi)發(fā)</b>:【<b class='flag-5'>一次</b><b class='flag-5'>開(kāi)發(fā)</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】(簡(jiǎn)介)

    鴻蒙OS開(kāi)發(fā):【一次開(kāi)發(fā),多端部署】(多設(shè)備自適應(yīng)能力)簡(jiǎn)單介紹

    本示例是《一次開(kāi)發(fā)多端部署》的配套示例代碼,展示了[頁(yè)面開(kāi)發(fā)一多能力],包括自適應(yīng)布局、響應(yīng)
    的頭像 發(fā)表于 05-21 14:59 ?2915次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開(kāi)發(fā)</b>:【<b class='flag-5'>一次</b><b class='flag-5'>開(kāi)發(fā)</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】(多設(shè)備自適應(yīng)能力)簡(jiǎn)單介紹

    鴻蒙OS開(kāi)發(fā):【一次開(kāi)發(fā)多端部署】( 設(shè)置app頁(yè)面)

    本示例展示了設(shè)置應(yīng)用的典型頁(yè)面,其在小窗口和大窗口有不同的顯示效果,體現(xiàn)一次開(kāi)發(fā)、多端部署的能力。
    的頭像 發(fā)表于 05-21 14:56 ?1545次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開(kāi)發(fā)</b>:【<b class='flag-5'>一次</b><b class='flag-5'>開(kāi)發(fā)</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】( 設(shè)置app頁(yè)面)