91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

HarmonyOS開(kāi)發(fā)案例:【app初始啟動(dòng)】

jf_46214456 ? 來(lái)源:jf_46214456 ? 作者:jf_46214456 ? 2024-04-18 22:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

介紹

本篇Codelab基于自定義彈框、首選項(xiàng)和頁(yè)面路由實(shí)現(xiàn)一個(gè)模擬應(yīng)用首次啟動(dòng)的案例。需要完成以下功能:

  1. 實(shí)現(xiàn)四個(gè)頁(yè)面,啟動(dòng)頁(yè)、隱私協(xié)議頁(yè)、廣告頁(yè)、應(yīng)用首頁(yè)。
  2. 頁(yè)面之間的跳轉(zhuǎn)。
  3. 實(shí)現(xiàn)自定義隱私協(xié)議彈窗,點(diǎn)擊協(xié)議可查看隱私協(xié)議具體內(nèi)容。
  4. 隱私協(xié)議狀態(tài)持久化存儲(chǔ),再次啟動(dòng)時(shí),如果沒(méi)有保存狀態(tài)會(huì)再次彈出,否則不彈出。

效果如圖所示:

相關(guān)概念

  • [首選項(xiàng)] :首選項(xiàng)為應(yīng)用提供Key-Value鍵值型的數(shù)據(jù)處理能力,支持應(yīng)用持久化輕量級(jí)數(shù)據(jù),并對(duì)其修改和查詢。數(shù)據(jù)存儲(chǔ)形式為鍵值對(duì),鍵的類型為字符串型,值的存儲(chǔ)數(shù)據(jù)類型包括數(shù)字型、字符型、布爾型以及這3種類型的數(shù)組類型。
  • [自定義彈窗]: 通過(guò)CustomDialogController類顯示自定義彈窗。
  • [頁(yè)面路由]:提供通過(guò)不同的url訪問(wèn)不同的頁(yè)面,包括跳轉(zhuǎn)到應(yīng)用內(nèi)的指定頁(yè)面、用應(yīng)用內(nèi)的某個(gè)頁(yè)面替換當(dāng)前頁(yè)面、返回上一頁(yè)面或指定的頁(yè)面等。

環(huán)境搭建

軟件要求

  • [DevEco Studio] 版本:DevEco Studio 3.1 Release。
  • OpenHarmony SDK版本:API version 9。

硬件要求

  • 開(kāi)發(fā)板類型:[潤(rùn)和RK3568開(kāi)發(fā)板]。
  • OpenHarmony系統(tǒng):3.2 Release。

環(huán)境搭建

完成本篇Codelab我們首先要完成開(kāi)發(fā)環(huán)境的搭建,本示例以RK3568開(kāi)發(fā)板為例,參照以下步驟進(jìn)行:

  1. [獲取OpenHarmony系統(tǒng)版本] :標(biāo)準(zhǔn)系統(tǒng)解決方案(二進(jìn)制)。以3.2 Release版本為例:
  2. 搭建燒錄環(huán)境。
    1. [完成DevEco Device Tool的安裝]
    2. [完成RK3568開(kāi)發(fā)板的燒錄](méi)
    3. 鴻蒙開(kāi)發(fā)指導(dǎo)文檔:[qr23.cn/AKFP8k]
  3. 搭建開(kāi)發(fā)環(huán)境。
    1. 開(kāi)始前請(qǐng)參考[工具準(zhǔn)備] ,完成DevEco Studio的安裝和開(kāi)發(fā)環(huán)境配置。
    2. 開(kāi)發(fā)環(huán)境配置完成后,創(chuàng)建工程(模板選擇“Empty Ability”)。
    3. 工程創(chuàng)建完成后,選擇使用[真機(jī)進(jìn)行調(diào)測(cè)] 。
      搜狗高速瀏覽器截圖20240326151344.png

代碼結(jié)構(gòu)解讀

本篇Codelab只對(duì)核心代碼進(jìn)行講解,完整代碼可以直接從gitee獲取。

├──entry/src/main/ets               // 代碼區(qū) 
│  ├──common
│  │  ├──constants
│  │  │  └──CommonConstants.ets     // 常量類
│  │  └──utils
│  │     ├──GlobalContext.ets       // 項(xiàng)目工具類
│  │     └──Logger.ets              // 日志打印工具類
│  ├──entryability
│  │  └──EntryAbility.ets           // 程序入口類
│  ├──pages
│  │  ├──AdvertisingPage.ets        // 廣告頁(yè)
│  │  ├──AppHomePage.ets            // 應(yīng)用首頁(yè)
│  │  ├──LauncherPage.ets           // 應(yīng)用啟動(dòng)頁(yè)
│  │  └──PrivacyPage.ets            // 隱私協(xié)議頁(yè)
│  └──view
│     └──CustomDialogComponent.ets  // 自定義彈窗組件
└──entry/src/main/resources         // 資源文件目錄

應(yīng)用啟動(dòng)頁(yè)實(shí)現(xiàn)

打開(kāi)應(yīng)用時(shí)進(jìn)入EntryAbility頁(yè)面,通過(guò)windowStage.loadContent方法加載啟動(dòng)頁(yè)LauncherPage,然后在LauncherPage的build里面構(gòu)建啟動(dòng)頁(yè)組件,效果如圖所示:

// LauncherPage.ets
// 啟動(dòng)頁(yè)組件
build() {
  Stack() {
    // 背景圖
    Image($r('app.media.ic_launcher_background'))
      .width(CommonConstants.FULL_WIDTH)
      .height(CommonConstants.FULL_HEIGHT)
    Column() {
      // 啟動(dòng)頁(yè)logo
      Image($r('app.media.ic_logo'))
        .width($r('app.float.launcher_logo_size'))
        .height($r('app.float.launcher_logo_size'))
        .margin({ top: CommonConstants.LAUNCHER_IMAGE_MARGIN_TOP })
      // 健康生活文字
      Text($r('app.string.healthy_life_text'))
        .width($r('app.float.launcher_life_text_width'))
        .height($r('app.float.launcher_life_text_height'))
        .healthyLifeTextStyle(FontWeight.Bold,
          CommonConstants.LAUNCHER_LIFE_TEXT_SPACING,
          $r('app.float.launcher_text_title_size'),
          $r('app.color.launcher_text_title_color'))
        .margin({ top: CommonConstants.LAUNCHER_TEXT_TITLE_MARGIN_TOP })
      // 健康生活說(shuō)明
      Text($r('app.string.healthy_life_introduce'))
        .height(CommonConstants.LAUNCHER_TEXT_INTRODUCE_HEIGHT)
        .healthyLifeTextStyle(FontWeight.Normal,
          CommonConstants.LAUNCHER_TEXT_INTRODUCE_SPACING,
          $r('app.float.launcher_text_introduce_size'),
          $r('app.color.launcher_text_introduce_color'))
        .opacity($r('app.float.launcher_text_opacity'))
        .margin({ top: CommonConstants.LAUNCHER_TEXT_INTRODUCE_MARGIN_TOP })
    }
.height(CommonConstants.FULL_HEIGHT)
   .width(CommonConstants.FULL_WIDTH)
}
}
// 健康生活字體公共樣式
@Extend(Text) function healthyLifeTextStyle (fontWeight: number, textAttribute: number, fontSize: Resource, fontColor: Resource) {
   .fontWeight(fontWeight)
      .letterSpacing(textAttribute)
      .fontSize(fontSize)
      .fontColor(fontColor)
}

隱私彈窗實(shí)現(xiàn)

啟動(dòng)頁(yè)的隱私協(xié)議內(nèi)容需要用到自定義彈窗,效果如圖所示:

// CustomDialogComponent.ets
// 自定義彈窗
@CustomDialog
export default struct CustomDialogComponent {
  controller: CustomDialogController = new CustomDialogController({'builder': ''});
  // 不同意按鈕回調(diào)
  cancel: Function = () = > {}
  // 同意按鈕回調(diào)
  confirm: Function = () = > {}
  build() {
    Column() {
      // 彈窗標(biāo)題
      Text($r('app.string.dialog_text_title'))
        .width(CommonConstants.DIALOG_COMPONENT_WIDTH_PERCENT)
        .fontColor($r('app.color.dialog_text_color'))
        .fontSize($r('app.float.dialog_text_privacy_size'))
        .textAlign(TextAlign.Center)
        .margin({
          top: $r('app.float.dialog_text_privacy_top'),
          bottom: $r('app.float.dialog_text_privacy_bottom')
        })
      // 彈窗內(nèi)容
      Text($r('app.string.dialog_text_privacy_content'))
        .fontSize($r('app.float.dialog_common_text_size'))
        .width(CommonConstants.DIALOG_COMPONENT_WIDTH_PERCENT)
      // 協(xié)議鏈接
      Text($r('app.string.dialog_text_privacy_statement'))
        .width(CommonConstants.DIALOG_COMPONENT_WIDTH_PERCENT)
        .fontColor($r('app.color.dialog_text_statement_color'))
        .fontSize($r('app.float.dialog_common_text_size'))
        .onClick(() = > {
          router.pushUrl({
            url: CommonConstants.PRIVACY_PAGE_URL
          }).catch((error: Error) = > {
            Logger.error(CommonConstants.CUSTOM_DIALOG_TAG, 'CustomDialog pushUrl error ' + JSON.stringify(error));
          });
        })
      // 協(xié)議聲明
      Text($r('app.string.dialog_text_declaration_prompt'))
        .width(CommonConstants.DIALOG_COMPONENT_WIDTH_PERCENT)
        .fontColor($r('app.color.dialog_text_color'))
        .fontSize($r('app.float.dialog_common_text_size'))
        .opacity($r('app.float.dialog_text_opacity'))
        .margin({ bottom: $r('app.float.dialog_text_declaration_bottom') })
      // 按鈕組件
      Row() {
        // 取消按鈕 
        Text($r('app.string.dialog_button_disagree'))
          .fancy()
          .onClick(() = > {
            this.controller.close();
            this.cancel();
          })
        Blank()
          .backgroundColor($r('app.color.dialog_blank_background_color'))
          .width($r('app.float.dialog_blank_width'))
          .height($r('app.float.dialog_blank_height'))
        // 同意按鈕
        Text($r('app.string.dialog_button_agree'))
          .fancy()
          .onClick(() = > {
            this.controller.close();
            this.confirm();
          })
      }
      .margin({ bottom: CommonConstants.DIALOG_ROW_MARGIN_BOTTOM })
    }
    .width(CommonConstants.DIALOG_WIDTH_PERCENT)
    .borderRadius(CommonConstants.DIALOG_BORDER_RADIUS)
    .backgroundColor(Color.White)
  }
}

// 按鈕公共樣式抽取
@Extend(Text) function fancy () {
  .fontColor($r('app.color.dialog_fancy_text_color'))
  .fontSize($r('app.float.dialog_fancy_text_size'))
  .textAlign(TextAlign.Center)
  .fontWeight(FontWeight.Medium)
  .layoutWeight(CommonConstants.COMMON_LAYOUT_WEIGHT)
}

獲取隱私協(xié)議狀態(tài)

構(gòu)建啟動(dòng)頁(yè)之前,在LauncherPage的生命周期onPageShow方法處,添加一個(gè)命名為“myStore”的首選項(xiàng)表,并在“myStore”首選項(xiàng)表讀取一個(gè)名為“isPrivacy”的字段,獲取隱私協(xié)議狀態(tài)。

// LauncherPage.ets
onPageShow() {
  ...
  // 獲取保存數(shù)據(jù)操作類
  this.getDataPreferences(this).then((preferences: preferences.Preferences) = > {
    preferences.get(CommonConstants.PREFERENCES_KEY_PRIVACY, true).then((value: preferences.ValueType) = > {
      Logger.info(CommonConstants.LAUNCHER_PAGE_TAG, 'onPageShow value: ' + value);
      if (value) {
        // let isJumpPrivacy: boolean = globalThis.isJumpPrivacy ?? false;
        let isJumpPrivacy: boolean = (GlobalContext.getContext().getObject('isJumpPrivacy') as boolean) ?? false;
        if (!isJumpPrivacy) {
          // 自定義協(xié)議彈窗
          this.dialogController.open();          
        }
      } else {
        // 跳至廣告頁(yè)
        this.jumpToAdvertisingPage();
      }
    });
  });
}

// 獲取數(shù)據(jù)首選項(xiàng)操作
getDataPreferences(common: Object) : Promise< preferences.Preferences >{
  return preferences.getPreferences(getContext(common), CommonConstants.PREFERENCES_FILE_NAME);
}

保存隱私協(xié)議狀態(tài)

當(dāng)用戶點(diǎn)擊隱私協(xié)議彈窗同意按鈕時(shí),回調(diào)onConfirm方法,調(diào)用saveIsPrivacy保存隱私協(xié)議狀態(tài)。

// LauncherPage.ets
onConfirm(): void {
  // 保存隱私協(xié)議狀態(tài)
  this.saveIsPrivacy();
  ...
}

saveIsPrivacy(): void {
  let preferences: Promise< preferences.Preferences > = this.getDataPreferences(this);
  preferences.then((result: preferences.Preferences) = > {
    let privacyPut = result.put(CommonConstants.PREFERENCES_KEY_PRIVACY, false);
    result.flush();
    ...
  });
}

頁(yè)面跳轉(zhuǎn)

用戶在啟動(dòng)頁(yè)LauncherPage,點(diǎn)擊隱私協(xié)議彈窗同意按鈕onConfirm,在onConfirm方法內(nèi)開(kāi)啟3秒倒計(jì)時(shí),倒計(jì)時(shí)結(jié)束后跳到廣告頁(yè),當(dāng)啟動(dòng)頁(yè)不可見(jiàn)時(shí),清除定時(shí)器和啟動(dòng)頁(yè),效果如圖所示:

// LauncherPage.ets
private isJumpToAdvertising: boolean = false;
onConfirm() :void{
  ...
  // 跳轉(zhuǎn)到廣告頁(yè)
  this.jumpToAdvertisingPage();
}

jumpToAdvertisingPage() :void{ 
  this.timerId = setTimeout(() = > {
    // 設(shè)置跳轉(zhuǎn)標(biāo)識(shí)
    this.isJumpToAdvertising = true;
    router.pushUrl({
      url: CommonConstants.ADVERTISING_PAGE_URL
    }).catch((error: Error) = > {
      Logger.error(CommonConstants.LAUNCHER_PAGE_TAG, 'LauncherPage pushUrl error ' + JSON.stringify(error));
    });
  }, CommonConstants.LAUNCHER_DELAY_TIME);
}

onPageHide(): void {
  if (this.isJumpToAdvertising) {
    // 清除頁(yè)面
    router.clear();
  }
  GlobalContext.getContext().setObject('isJumpPrivacy', true);
  // 清除定時(shí)器
  clearTimeout(this.timerId);
}

打開(kāi)廣告頁(yè)AdvertisingPage后,進(jìn)行2秒倒計(jì)時(shí)(用戶可手動(dòng)點(diǎn)擊跳過(guò)),倒計(jì)時(shí)結(jié)束跳轉(zhuǎn)到首頁(yè)AppHomePage,當(dāng)廣告頁(yè)不可見(jiàn)時(shí),清除定時(shí)器和廣告頁(yè),效果如圖所示:

// AdvertisingPage.ets
@State countDownSeconds: number = CommonConstants.ADVERTISING_COUNT_DOWN_SECONDS;
private timeId: number = 0;
onPageShow() {
   // 開(kāi)啟2秒倒計(jì)時(shí)
   this.timeId = setInterval(() = > {
      if (this.countDownSeconds == 0) {
         // 跳轉(zhuǎn)到首頁(yè)
         this.jumpToAppHomePage();
      } else {
         this.countDownSeconds--;
      }
   }, CommonConstants.ADVERTISING_INTERVAL_TIME);
}

onPageHide() {
   // 清除頁(yè)面
   router.clear();
   // 清除定時(shí)器
   clearInterval(this.timeId);
}

build() {
  Stack({ alignContent: Alignment.Top }) {
    Image($r('app.media.ic_advertising_background'))
      .width(CommonConstants.FULL_WIDTH)
      .height(CommonConstants.FULL_HEIGHT)
    Text($r('app.string.advertising_text_title', this.countDownSeconds))
    ...
    .onClick(() = > {
      this.jumpToAppHomePage();
    })
    ...
  }
.width(CommonConstants.FULL_WIDTH)
   .height(CommonConstants.FULL_HEIGHT)
}

jumpToAppHomePage(): void {
   router.pushUrl({
      url: CommonConstants.APP_HOME_PAGE_URL
   }).catch((error) = > {
      Logger.error(CommonConstants.ADVERTISING_PAGE_TAG, 'AdvertisingPage pushUrl error ' + JSON.stringify(error));
   });
}

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • 存儲(chǔ)
    +關(guān)注

    關(guān)注

    13

    文章

    4793

    瀏覽量

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

    關(guān)注

    60

    文章

    2963

    瀏覽量

    45923
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2153

    瀏覽量

    36072
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    3562-物聯(lián)網(wǎng)模塊開(kāi)發(fā)案

    3562-物聯(lián)網(wǎng)模塊開(kāi)發(fā)案例 本文檔主要介紹基于 TL3562-EVM 評(píng)估板的物聯(lián)網(wǎng)模塊開(kāi)發(fā)案例,適用開(kāi)發(fā)環(huán)境: Windows 開(kāi)發(fā)環(huán)境:Windows 7 64bit、Wind
    的頭像 發(fā)表于 03-05 10:59 ?1692次閱讀
    3562-物聯(lián)網(wǎng)模塊<b class='flag-5'>開(kāi)發(fā)案</b>例

    HarmonyOS開(kāi)發(fā)案例:【購(gòu)物車app

    OpenHarmony ArkUI框架提供了豐富的動(dòng)畫組件和接口,開(kāi)發(fā)者可以根據(jù)實(shí)際場(chǎng)景和開(kāi)發(fā)需求,選用豐富的動(dòng)畫組件和接口來(lái)實(shí)現(xiàn)不同的動(dòng)畫效果。
    的頭像 發(fā)表于 05-14 18:19 ?1922次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>開(kāi)發(fā)案</b>例:【購(gòu)物車<b class='flag-5'>app</b>】

    HarmonyOS IoT 硬件開(kāi)發(fā)案例分享

    ``許思維老師HiSpark Wi-Fi IoT 開(kāi)發(fā)案例分享:案例一:AHT20溫濕度傳感器開(kāi)發(fā)、調(diào)試;案例二:oled屏驅(qū)動(dòng)庫(kù)移植,調(diào)試;案例三:用OLED屏播放視頻,Wi-Fi 和 TCP/IP 綜合應(yīng)用。 ``
    發(fā)表于 10-27 17:30

    HarmonyOS開(kāi)發(fā)跨設(shè)備的鴻蒙(HarmonyOSApp

    是圓形(如智能手表),這就給開(kāi)發(fā)App帶來(lái)了麻煩。現(xiàn)在幾乎每一個(gè)智能設(shè)備廠商,如Apple、華為都面臨這個(gè)問(wèn)題。這就要求我們開(kāi)發(fā)App盡可能適合更多的智能設(shè)備。當(dāng)然,最簡(jiǎn)單,最直接的
    發(fā)表于 11-02 15:18

    HarmonyOS開(kāi)發(fā)跨設(shè)備的鴻蒙(HarmonyOSApp

    手表),這就給開(kāi)發(fā)App帶來(lái)了麻煩?,F(xiàn)在幾乎每一個(gè)智能設(shè)備廠商,如Apple、華為都面臨這個(gè)問(wèn)題。這就要求我們開(kāi)發(fā)App盡可能適合更多的智能設(shè)備。當(dāng)然,最簡(jiǎn)單,最直接的方式是為每一類
    發(fā)表于 11-03 16:54

    如何優(yōu)雅地開(kāi)發(fā)HarmonyOS APP應(yīng)用

    ` 本帖最后由 軟通動(dòng)力HOS 于 2021-3-10 15:29 編輯 研究HarmonyOS有一段時(shí)間了,今天主要結(jié)合自己多年的項(xiàng)目開(kāi)發(fā)經(jīng)驗(yàn)和各種技術(shù)棧結(jié)合HarmonyOS APP
    發(fā)表于 03-10 15:13

    【潤(rùn)和直播課預(yù)告@華為開(kāi)發(fā)者學(xué)院】HarmonyOS設(shè)備開(kāi)發(fā)基礎(chǔ)課程|HiSpark WiFi-IoT 智能小車套件開(kāi)發(fā)案

    `【潤(rùn)和直播課預(yù)告@華為開(kāi)發(fā)者學(xué)院】HarmonyOS設(shè)備開(kāi)發(fā)基礎(chǔ)課程|HiSparkWiFi-IoT 智能小車套件開(kāi)發(fā)案例,3月18日(周四) 19:00-21:00,讓你的
    發(fā)表于 03-16 15:01

    harmonyOS開(kāi)發(fā)APP如何訪問(wèn)Webservice?

    我接到一個(gè)項(xiàng)目,需要用到HarmonyOS開(kāi)發(fā)APP做為移動(dòng)手機(jī)查詢和收到報(bào)警數(shù)據(jù),具體是這樣的,在C/S加B/S的系統(tǒng)框架下我們有數(shù)據(jù)庫(kù)服務(wù)器和Web服務(wù)器,有widows桌面應(yīng)用和Web瀏覽器
    發(fā)表于 03-28 10:14

    HarmonyOS APP打包運(yùn)行和調(diào)試應(yīng)用開(kāi)發(fā)步驟

    在進(jìn)行HarmonyOS應(yīng)用開(kāi)發(fā)前,您應(yīng)該掌握HarmonyOS應(yīng)用的邏輯結(jié)構(gòu)。HarmonyOS應(yīng)用發(fā)布形態(tài)為APP Pack(Appli
    發(fā)表于 05-24 14:27

    App開(kāi)發(fā)案例教程PDF電子書免費(fèi)下載

    App開(kāi)發(fā)案例教程》通過(guò)一個(gè)實(shí)例,介紹App設(shè)計(jì)、開(kāi)發(fā)直至上線的全過(guò)程,引導(dǎo)讀者在較短時(shí)間內(nèi)熟悉一個(gè)較大規(guī)模的App應(yīng)用系統(tǒng)的
    發(fā)表于 08-05 08:00 ?38次下載
    <b class='flag-5'>App</b><b class='flag-5'>開(kāi)發(fā)案</b>例教程PDF電子書免費(fèi)下載

    許思維老師HarmonyOS IoT硬件開(kāi)發(fā)案例分享

    許思維老師HiSpark Wi-Fi IoT 開(kāi)發(fā)案例分享:案例一:AHT20溫濕度傳感器開(kāi)發(fā)、調(diào)試;案例二:oled屏驅(qū)動(dòng)庫(kù)移植,調(diào)試;案例三:用OLED屏播放視頻,Wi-Fi 和 TCP/IP 綜合應(yīng)用。
    發(fā)表于 10-29 10:39 ?39次下載
    許思維老師<b class='flag-5'>HarmonyOS</b> IoT硬件<b class='flag-5'>開(kāi)發(fā)案</b>例分享

    華為開(kāi)發(fā)者分論壇HarmonyOS學(xué)生公開(kāi)課-OpenHarmony Codelabs開(kāi)發(fā)案

    2021華為開(kāi)發(fā)者分論壇HarmonyOS學(xué)生公開(kāi)課-OpenHarmony Codelabs開(kāi)發(fā)案
    的頭像 發(fā)表于 10-24 11:25 ?2526次閱讀
    華為<b class='flag-5'>開(kāi)發(fā)</b>者分論壇<b class='flag-5'>HarmonyOS</b>學(xué)生公開(kāi)課-OpenHarmony Codelabs<b class='flag-5'>開(kāi)發(fā)案</b>例

    淘寶與華為合作將基于HarmonyOS NEXT啟動(dòng)鴻蒙原生應(yīng)用開(kāi)發(fā)

    1月25日,淘寶與華為舉辦鴻蒙合作簽約儀式,宣布將基于HarmonyOS NEXT啟動(dòng)鴻蒙原生應(yīng)用開(kāi)發(fā)
    的頭像 發(fā)表于 01-26 16:14 ?1991次閱讀

    HarmonyOS 代碼工坊的指尖開(kāi)發(fā),讓 APP 開(kāi)發(fā)所見(jiàn)即所得

    沙盤被直接搬入了移動(dòng)設(shè)備本身。眼尖的開(kāi)發(fā)者應(yīng)該已經(jīng)發(fā)現(xiàn),最近華為應(yīng)用市場(chǎng)“應(yīng)用嘗鮮”專區(qū)里,上架了一款名為“HarmonyOS 代碼工坊”的新應(yīng)用,下載量持續(xù)攀升。 開(kāi)發(fā)者只需要下載“Harm
    的頭像 發(fā)表于 06-24 12:08 ?830次閱讀
    <b class='flag-5'>HarmonyOS</b> 代碼工坊的指尖<b class='flag-5'>開(kāi)發(fā)</b>,讓 <b class='flag-5'>APP</b> <b class='flag-5'>開(kāi)發(fā)</b>所見(jiàn)即所得

    華為正式啟動(dòng)HarmonyOS 6開(kāi)發(fā)者Beta

    在2025年華為開(kāi)發(fā)者大會(huì)(HDC)上,華為正式啟動(dòng)HarmonyOS 6開(kāi)發(fā)者Beta,并全面展示一年多以來(lái)與合作伙伴共建鴻蒙生態(tài)的創(chuàng)新成果。
    的頭像 發(fā)表于 06-24 15:42 ?845次閱讀