国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

[OpenHarmony北向應用開發] 做一個 loading加載動畫

OpenHarmony開發經驗 ? 來源: OpenHarmony開發經驗 ? 作者: OpenHarmony開發經驗 ? 2023-04-20 11:29 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

  • 本篇文章介紹了如何實現一個簡單的loading加載動畫,并且在提供了一個demo工程供讀者下載學習。

    • loading加載動畫demo下載地址: https://gitee.com/from-north-to-north/open-armony-north/tree/master/loading_animation
  • 作為一個OpenHarmony南向開發者,接觸北向應用開發并不多。北向開發ArkUI老是改來改去,對筆者這樣的入門選手來說學習成本其實非常大,希望后面可以慢慢穩定下來吧。最近努力學習了一些,下面將學習經驗分享如下:

  • 通過本文您將了解:

    1、使用ImageAnimator幀動畫組件實現一個自定義loading加載動畫。

    2、使用 Progress 進度條組件實現 loading加載動畫。


筆者開發環境:(demo ArkUI應用源碼,一定得是以下IDE和SDK版本或者更高版本才能編譯運行,這也是坑點之一!!!)

  • 開發板:潤和軟件DAYU200開發板
  • OpenHarmony版本:OpenHarmony3.2 Beta5
  • IDE:DevEco Studio 3.1.0.200
  • SDK:API9(3.2.10.6)

效果演示

動畫2.gif

1. 涉及到的知識點 (先大概了解一下,知道要用到這些東西就行)

  • 創建自定義組件

    https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/arkts-create-custom-components.md

https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/arkts-page-custom-components-lifecycle.md

  • ImageAnimator幀動畫組件

    https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-imageanimator.md

  • Progress進度條組件

    https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-progress.md

  • CustomDialogController自定義彈窗組件

    https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/arkui-ts/ts-methods-custom-dialog-box.md

  • 定時器API

    https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-timer.md

  • Row組件

    沿水平方向布局容器。https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/arkui-ts/ts-container-row.md

  • OpenHarmony組件導讀

    https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/arkui-ts/ts-components-summary.md

2、使用ImageAnimator幀動畫組件自定義loading動畫開發步驟:

├── ets
│   ├── loading      # loading動畫圖片幀
│   └── pages        # ets代碼
│       ├── Index.ets
│       ├── loadingComponent_part1.ets
│       ├── loadingComponent_part2.ets #ImageAnimator幀動畫組件實現自定義loading加載動畫
│       └── loadingComponent_part3.ets #Progress進度條組件實現的loading加載動畫

2.1 將自定義的loading動畫的圖片幀放在ets目錄下

  • 組成自定義的loading動畫的圖片幀,詳情請見文末提供的demo工程

    image.png

  • 在entry\\src\\main\\ets新建一個loading目錄,將其放在該目錄下

    image.png

2.2 用幀動畫組件將動畫封裝成一個自定義組件

//loadingComponent_part1.ets
 @Component

export default struct loadingComponent_part1 {
  private imageWidth: number | Resource = 0
  private imageHeight: number | Resource = 0

  build() {
    Column() {
      ImageAnimator()
        .images([
          {
            src: '/loading/loading01.png',
            duration: 200, //每一幀圖片的播放時長,單位毫秒
          },
          {
            src: '/loading/loading02.png',
            duration: 200,
          },
          {
            src: '/loading/loading03.png',
            duration: 200,
          },
          {
            src: '/loading/loading04.png',
            duration: 200,
          },
          {
            src: '/loading/loading05.png',
            duration: 200,
          },
          {
            src: '/loading/loading06.png',
            duration: 200,
          }])
        .width(this.imageWidth)
        .height(this.imageHeight)
        .iterations(-1)  
          //	設置播放順序。false表示從第1張圖片播放到最后1張圖片; true表示從最后1張圖片播放到第1張圖片。
        
        .fixedSize(true) 
          //設置圖片大小是否固定為組件大小。 true表示圖片大小與組件大小一致,此時設置圖片的widthheighttopleft屬性是無效的。false表示每一張圖片的widthheighttopleft屬性都要單獨設置。
        
        .reverse(true) 
          //設置播放順序。false表示從第1張圖片播放到最后1張圖片; true表示從最后1張圖片播放到第1張圖片。
        
        .fillMode(FillMode.None)
          //設置動畫開始前和結束后的狀態,可選值參見FillMode說明
        
        .state(AnimationStatus.Running)  
          //Running表示動畫處于播放狀態
    }
  }
}

2.3 在主頁面實現自定義的loading動畫(完整代碼見文末demo工程)

  • 首先導入自定義的loading動畫
import loading1 from './loadingComponent_part1';
struct Index {
  //用來繪制loading動畫的
  // 要打開在點擊事件中添加 this.loading1.open();
  // 要關閉在點擊事件中添加 this.loading1.close();
  // 通過CustomDialogController類顯示自定義彈窗。
  private loading1: CustomDialogController = new CustomDialogController({
    builder: loadingProgress_part1(),
    alignment: DialogAlignment.Center,
    offset: ({ dx: 0, dy: 0 }),
    autoCancel: false,
    customStyle: true
  });
}

//用來繪制loading動畫的
@CustomDialog
struct loadingProgress_part1{
  controller: CustomDialogController;

  build() {
    Column() {
      loading1({ imageWidth: 80,
        imageHeight: 80 }).margin({top:350})

    }
    .width('100%')
    .height('100%')
    .alignItems(HorizontalAlign.Center)
    .backgroundColor(Color.White)
  }

}
  • 使用定時器API控制loading動畫
Button(this.message1)
          .margin({top:100})
          .fontWeight(FontWeight.Normal)
          .backgroundColor(Color.Green) //設置按鈕顏色
          .onClick(() => {

            //開始繪制loading動畫
            this.loading1.open();
            //使用一個setTimeout定時器,setTimeout中第一個參數使用 () => { 要執行的函數 }
            //this.ocrDialog.close();是關閉loading動畫
            setTimeout( () => {this.loading1.close();} , 3000);

          })
  • 實現效果

    動畫2.gif

3、使用 Progress 進度條組件實現 loading加載動畫開發步驟:

Progress進度條組件

(完整代碼見文末demo工程)

struct Index {
  @State i: number = 0

  //aboutToAppear	函數在創建自定義組件的新實例后,在執行其build函數之前執行。
  aboutToAppear(){
    //定時器中的setInterval: 重復調用一個函數,在每次調用之間具有固定的時間延遲。
    setInterval( () => {  this.i = this.i + 10  } , 300);
  }

  build() {
...

        Progress({ value: this.i, type: ProgressType.Linear })
          .width(200)
          .margin({top:30})

        Progress({ value: this.i, total: 150, type: ProgressType.ScaleRing })
          .color(Color.Green).value(this.i).width(50)
          .margin({top:30})
          .style({ strokeWidth: 15, scaleCount: 15, scaleWidth: 5 })
...
}

}
  • 實現效果

    動畫2.gif

審核編輯 黃宇

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

    關注

    26

    文章

    6289

    瀏覽量

    118030
  • OpenHarmony
    +關注

    關注

    33

    文章

    3952

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    基于凌羽派的OpenHarmony向應開發:ArkTS語法-數據類型和變量聲明

    、簡介 ArkTS是種設計用于構建高性能應用的編程語言。它在繼承TypeScript語法的基礎上進行了優化,以提供更高的性能和開發效率。 環境配置如下所示: API:18 SDK
    發表于 02-26 14:24

    基于凌羽派的OpenHarmony向應開發:ArkTS語法-數據類型和變量聲明

    、簡介ArkTS是種設計用于構建高性能應用的編程語言。它在繼承TypeScript語法的基礎上進行了優化,以提供更高的性能和開發效率。環境配置如下所示:API:18SDK:OpenHarm
    的頭像 發表于 02-26 13:55 ?188次閱讀
    基于凌羽派的<b class='flag-5'>OpenHarmony</b><b class='flag-5'>北</b><b class='flag-5'>向應</b>用<b class='flag-5'>開發</b>:ArkTS語法-數據類型和變量聲明

    基于凌羽派的OpenHarmony向應開發:Hello World 示例應用

    本示例是基于 OpenHarmony 開發的第一個簡單應用,用于展示如何創建、構建和部署基本的應用程序。 環境配置如下所示: API:1
    發表于 02-25 11:25

    基于凌羽派的OpenHarmony向應開發:Hello World 示例應用

    本示例是基于OpenHarmony開發的第一個簡單應用,用于展示如何創建、構建和部署基本的應用程序。環境配置如下所示:API:18SDK
    的頭像 發表于 02-25 10:23 ?156次閱讀
    基于凌羽派的<b class='flag-5'>OpenHarmony</b><b class='flag-5'>北</b><b class='flag-5'>向應</b>用<b class='flag-5'>開發</b>:Hello World 示例應用

    “開放原子校源行師資培訓系列——2026年開源鴻蒙向應開發與南向設備研修班”在深圳成功舉辦

    龍崗區深龍高層次人才服務中心、深圳數字人才科技有限公司協辦的“開放原子校園行師資培訓系列——2026年開源鴻蒙向應開發與南向設備開發研修班”,于1月27日在深圳龍
    的頭像 發表于 01-27 20:20 ?500次閱讀
    “開放原子校源行師資培訓系列——2026年開源鴻蒙<b class='flag-5'>北</b><b class='flag-5'>向應</b>用<b class='flag-5'>開發</b>與南向設備研修班”在深圳成功舉辦

    #OpenHarmony 開發環境準備

    OpenHarmony
    視美泰
    發布于 :2026年01月16日 09:44:31

    基于M4-R1開發板的OpenHarmony開發實戰丨創建第一個應用工程

    前言在萬物互聯的時代,設備之間的協同與智能交互已成為技術發展的必然趨勢。作為面向這未來的關鍵基石,OpenHarmony應運而生。它是由開放原子開源基金會孵化及運營的開源項目,旨
    的頭像 發表于 01-13 15:15 ?767次閱讀
    基于M4-R1<b class='flag-5'>開發</b>板的<b class='flag-5'>OpenHarmony</b><b class='flag-5'>開發</b>實戰丨創建第<b class='flag-5'>一個</b>應用工程

    報名開啟!2026年開源鴻蒙“向應用”與“南向設備”開發研修班等你加入!

    為深化校企合作,推動開源鴻蒙(OpenHarmony)技術發展,促進高校教師掌握開源鴻蒙向應開發和南向設備開發的前沿技術與教學實踐方法,
    的頭像 發表于 01-08 17:24 ?1165次閱讀
    報名開啟!2026年開源鴻蒙“<b class='flag-5'>北</b><b class='flag-5'>向應</b>用”與“南向設備”<b class='flag-5'>開發</b>研修班等你加入!

    【M-K1HSE開發板免費體驗】相關源碼之閱讀和分析1-使用XComponent + Vsync 實現自定義動畫

    :收到 Vsync 信號后提交新幀到屏幕,保證流暢性。 主線程無關:即使主線程因復雜布局或邏輯阻塞,動畫仍能持續流暢運行。 先看看這個項目: 這是這個項目的結構,文件。這是非常典型的華為鴻蒙
    發表于 09-03 16:05

    向應變計組是如何工作的,較單向應變計有何優勢

    在水利工程、大壩、橋梁等大型混凝土結構的安全監測中,全面了解結構物內部真實的應力應變狀態至關重要。傳統的單向應變計只能測量單方向上的變形,而南京峟思工程儀器有限公司的VWS-S型振弦式多向應變計組
    的頭像 發表于 07-18 13:32 ?1207次閱讀
    多<b class='flag-5'>向應</b>變計組是如何工作的,較單<b class='flag-5'>向應</b>變計有何優勢

    邀請函|2025校源行“師資培訓”(南京站)暨江蘇省開源鴻蒙向應開發技術師資培訓

    信息系統股份有限公司,茲定于7月6-11日,在南京舉辦“2025開放原子校源行活動(南京站)暨江蘇省開源鴻蒙向應開發技術師資培訓”。我們誠摯邀請您撥冗參與,共同探索
    的頭像 發表于 06-12 17:29 ?890次閱讀
    邀請函|2025校源行“師資培訓”(南京站)暨江蘇省開源鴻蒙<b class='flag-5'>北</b><b class='flag-5'>向應</b>用<b class='flag-5'>開發</b>技術師資培訓

    如何成為名合格的KaihongOS向應開發工程師

    如何成為名合格的向應開發工程師 在快速發展的軟件開發領域,
    發表于 04-23 06:46

    DialogHub上線OpenHarmony開源社區,高效開發鴻蒙應用彈窗

    。 “DialogHub”的推出為開發者提供了開箱即用的彈窗管理解決方案,幫助開發者更高效地實現各種場景下的彈窗功能,顯著降低學習成本與開發
    發表于 04-03 17:30

    鴻蒙開發OpenHarmony5.0 DevEco Studio開發工具安裝與配置

    本文介紹OpenHarmony5.0 DevEco Studio開發工具安裝與配置,鴻蒙開發入門必備!由觸覺智能Purple Pi OH鴻蒙開發
    的頭像 發表于 03-28 18:05 ?1620次閱讀
    鴻蒙<b class='flag-5'>北</b>向<b class='flag-5'>開發</b><b class='flag-5'>OpenHarmony</b>5.0 DevEco Studio<b class='flag-5'>開發</b>工具安裝與配置