精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

[OpenHarmony北向應(yīng)用開發(fā)] 做一個(gè) loading加載動(dòng)畫

OpenHarmony開發(fā)經(jīng)驗(yàn) ? 來源: OpenHarmony開發(fā)經(jīng)驗(yàn) ? 作者: OpenHarmony開發(fā)經(jīng)驗(yàn) ? 2023-04-20 11:29 ? 次閱讀
  • 本篇文章介紹了如何實(shí)現(xiàn)一個(gè)簡單的loading加載動(dòng)畫,并且在提供了一個(gè)demo工程供讀者下載學(xué)習(xí)。

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

  • 通過本文您將了解:

    1、使用ImageAnimator幀動(dòng)畫組件實(shí)現(xiàn)一個(gè)自定義loading加載動(dòng)畫。

    2、使用 Progress 進(jìn)度條組件實(shí)現(xiàn) loading加載動(dòng)畫。


筆者開發(fā)環(huán)境:(demo ArkUI應(yīng)用源碼,一定得是以下IDE和SDK版本或者更高版本才能編譯運(yùn)行,這也是坑點(diǎn)之一!!!)

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

效果演示

動(dòng)畫2.gif

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

  • 創(chuàng)建自定義組件

    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幀動(dòng)畫組件

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

  • Progress進(jìn)度條組件

    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

  • 定時(shí)器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組件導(dǎo)讀

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

2、使用ImageAnimator幀動(dòng)畫組件自定義loading動(dòng)畫開發(fā)步驟:

├── ets
│   ├── loading      # loading動(dòng)畫圖片幀
│   └── pages        # ets代碼
│       ├── Index.ets
│       ├── loadingComponent_part1.ets
│       ├── loadingComponent_part2.ets #ImageAnimator幀動(dòng)畫組件實(shí)現(xiàn)自定義loading加載動(dòng)畫
│       └── loadingComponent_part3.ets #Progress進(jìn)度條組件實(shí)現(xiàn)的loading加載動(dòng)畫

2.1 將自定義的loading動(dòng)畫的圖片幀放在ets目錄下

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

    image.png

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

    image.png

2.2 用幀動(dòng)畫組件將動(dòng)畫封裝成一個(gè)自定義組件

//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, //每一幀圖片的播放時(shí)長,單位毫秒
          },
          {
            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)  
          //	設(shè)置播放順序。false表示從第1張圖片播放到最后1張圖片; true表示從最后1張圖片播放到第1張圖片。
        
        .fixedSize(true) 
          //設(shè)置圖片大小是否固定為組件大小。 true表示圖片大小與組件大小一致,此時(shí)設(shè)置圖片的widthheighttopleft屬性是無效的。false表示每一張圖片的widthheighttopleft屬性都要單獨(dú)設(shè)置。
        
        .reverse(true) 
          //設(shè)置播放順序。false表示從第1張圖片播放到最后1張圖片; true表示從最后1張圖片播放到第1張圖片。
        
        .fillMode(FillMode.None)
          //設(shè)置動(dòng)畫開始前和結(jié)束后的狀態(tài),可選值參見FillMode說明
        
        .state(AnimationStatus.Running)  
          //Running表示動(dòng)畫處于播放狀態(tài)
    }
  }
}

2.3 在主頁面實(shí)現(xiàn)自定義的loading動(dòng)畫(完整代碼見文末demo工程)

  • 首先導(dǎo)入自定義的loading動(dòng)畫
import loading1 from './loadingComponent_part1';
struct Index {
  //用來繪制loading動(dòng)畫的
  // 要打開在點(diǎn)擊事件中添加 this.loading1.open();
  // 要關(guān)閉在點(diǎn)擊事件中添加 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動(dòng)畫的
@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)
  }

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

            //開始繪制loading動(dòng)畫
            this.loading1.open();
            //使用一個(gè)setTimeout定時(shí)器,setTimeout中第一個(gè)參數(shù)使用 () => { 要執(zhí)行的函數(shù) }
            //this.ocrDialog.close();是關(guān)閉loading動(dòng)畫
            setTimeout( () => {this.loading1.close();} , 3000);

          })
  • 實(shí)現(xiàn)效果

    動(dòng)畫2.gif

3、使用 Progress 進(jìn)度條組件實(shí)現(xiàn) loading加載動(dòng)畫開發(fā)步驟:

Progress進(jìn)度條組件

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

struct Index {
  @State i: number = 0

  //aboutToAppear	函數(shù)在創(chuàng)建自定義組件的新實(shí)例后,在執(zhí)行其build函數(shù)之前執(zhí)行。
  aboutToAppear(){
    //定時(shí)器中的setInterval: 重復(fù)調(diào)用一個(gè)函數(shù),在每次調(diào)用之間具有固定的時(shí)間延遲。
    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 })
...
}

}
  • 實(shí)現(xiàn)效果

    動(dòng)畫2.gif

審核編輯 黃宇

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

    關(guān)注

    25

    文章

    4761

    瀏覽量

    96135
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3545

    瀏覽量

    15726
收藏 人收藏

    評論

    相關(guān)推薦

    基于ArkTS語言的OpenHarmony APP應(yīng)用開發(fā):HelloOpenharmony

    1、程序簡介該程序是基于OpenHarmony標(biāo)準(zhǔn)系統(tǒng)編寫的UI應(yīng)用類:HelloOpenHarmony。本案例是基于API9接口開發(fā)。本案例已在OpenHarmony凌蒙派-RK35
    的頭像 發(fā)表于 09-15 08:09 ?53次閱讀
    基于ArkTS語言的<b class='flag-5'>OpenHarmony</b> APP應(yīng)用<b class='flag-5'>開發(fā)</b>:Hello<b class='flag-5'>Openharmony</b>

    【迅為RK3568開發(fā)板】OpenHarmony學(xué)習(xí)開發(fā)系列教程(第1期 向基礎(chǔ)篇

    P5P4_OpenHarmony支持設(shè)備類型3:47 P6p5_南向開發(fā)開發(fā)的區(qū)別1:49 P7P6_OpenHarmony應(yīng)用
    發(fā)表于 08-16 15:27

    鴻蒙OpenHarmony南向/向快速開發(fā)教程-迅為RK3568開發(fā)

    4.1學(xué)習(xí)之旅了嗎?快來加入我們,起探索鴻蒙4.1系統(tǒng)的無限魅力吧! 【北京迅為】OpenHarmony學(xué)習(xí)開發(fā)系列教程(第1期 向基礎(chǔ)篇
    發(fā)表于 07-23 10:44

    10萬獎(jiǎng)金池!CCF開源創(chuàng)新大賽-OpenHarmony應(yīng)用開發(fā)大賽,等你來戰(zhàn)!

    生態(tài)建設(shè)的高質(zhì)量發(fā)展。深開鴻發(fā)布“OpenHarmony應(yīng)用開發(fā)-開源項(xiàng)目貢獻(xiàn)賽”賽道,旨在通過開發(fā)開源鴻蒙向應(yīng)用、擴(kuò)展開源鴻蒙
    的頭像 發(fā)表于 07-17 08:33 ?322次閱讀
    10萬獎(jiǎng)金池!CCF開源創(chuàng)新大賽-<b class='flag-5'>OpenHarmony</b>應(yīng)用<b class='flag-5'>開發(fā)</b>大賽,等你來戰(zhàn)!

    OpenHarmony之開機(jī)優(yōu)化

    OpenHarmony已經(jīng)支持了Bootchart工具,我們可以直接使用Bootchart工具,Bootchart工具介紹如下: 概述 Bootchart是個(gè)用于系統(tǒng)啟動(dòng)過程性能分析的開源軟件工具
    發(fā)表于 07-01 16:39

    HarmonyOS開發(fā)案例:【轉(zhuǎn)場動(dòng)畫

    在本教程中,我們將會通過個(gè)簡單的樣例,學(xué)習(xí)如何基于ArkTS的聲明式開發(fā)范式開發(fā)轉(zhuǎn)場動(dòng)畫。其中包含頁面間轉(zhuǎn)場、組件內(nèi)轉(zhuǎn)場以及共享元素轉(zhuǎn)場。
    的頭像 發(fā)表于 05-06 15:42 ?828次閱讀
    HarmonyOS<b class='flag-5'>開發(fā)</b>案例:【轉(zhuǎn)場<b class='flag-5'>動(dòng)畫</b>】

    OpenHarmony實(shí)戰(zhàn)開發(fā)-如何實(shí)現(xiàn)組件動(dòng)畫

    ArkUI為組件提供了通用的屬性動(dòng)畫和轉(zhuǎn)場動(dòng)畫能力的同時(shí),還為些組件提供了默認(rèn)的動(dòng)畫效果。例如,List的滑動(dòng)動(dòng)效,Button的點(diǎn)擊動(dòng)效,是組件自帶的默認(rèn)
    的頭像 發(fā)表于 04-28 15:49 ?445次閱讀
    <b class='flag-5'>OpenHarmony</b>實(shí)戰(zhàn)<b class='flag-5'>開發(fā)</b>-如何實(shí)現(xiàn)組件<b class='flag-5'>動(dòng)畫</b>。

    鴻蒙開發(fā)案例:【圖像加載緩存庫ImageKnife】

    專門為OpenHarmony打造的款圖像加載緩存庫,致力于更高效、更輕便、更簡單。
    的頭像 發(fā)表于 03-23 16:48 ?675次閱讀
    鴻蒙<b class='flag-5'>開發(fā)</b>案例:【圖像<b class='flag-5'>加載</b>緩存庫ImageKnife】

    鴻蒙開發(fā)之發(fā)動(dòng)畫

    動(dòng)畫的原理是在一個(gè)時(shí)間段內(nèi),多次改變UI外觀,由于人眼會產(chǎn)生視覺暫留,所以最終看到的就是個(gè)“連續(xù)”的動(dòng)畫。UI的
    的頭像 發(fā)表于 02-01 15:25 ?510次閱讀
    鴻蒙<b class='flag-5'>開發(fā)</b>之發(fā)<b class='flag-5'>動(dòng)畫</b>篇

    openharmony開發(fā)應(yīng)用

    隨著智能設(shè)備的普及和多樣化,開發(fā)者們對于更加靈活、高效的操作系統(tǒng)需求與日俱增。在這個(gè)背景下,華為推出了OpenHarmony個(gè)全場景智能終端操作系統(tǒng)和生態(tài)平臺。本文將詳細(xì)探討
    的頭像 發(fā)表于 12-19 09:42 ?516次閱讀

    OpenHarmony向-讓更廣泛的應(yīng)用開發(fā)者更容易參與

    開發(fā)板的廠商沒有留其他BUG,才可能裝進(jìn)去的。 這樣對廣泛的OH向應(yīng)開發(fā)者或者團(tuán)隊(duì),是非常不友好的。 在某個(gè)開發(fā)板上
    發(fā)表于 12-06 14:32

    OpenHarmony技術(shù)大會 | 應(yīng)用(向)生態(tài)分論壇嘉賓金句

    點(diǎn)擊藍(lán)字 ╳ 關(guān)注我們 開源項(xiàng)目 OpenHarmony 是每個(gè)人的 OpenHarmony 原文標(biāo)題:OpenHarmony技術(shù)大會 | 應(yīng)用(向)生態(tài)分論壇嘉賓金句 文章出處:【
    的頭像 發(fā)表于 11-14 15:10 ?206次閱讀

    OpenHarmony技術(shù)大會 | 應(yīng)用(向)生態(tài)分論壇圓滿舉辦:眾行遠(yuǎn),攜手打造全場景生態(tài)

    點(diǎn)擊藍(lán)字 ╳ 關(guān)注我們 開源項(xiàng)目 OpenHarmony 是每個(gè)人的 OpenHarmony 全場景時(shí)代下,用戶需求變得越來越多元化。軟件服務(wù)又稱向應(yīng)用,應(yīng)用生態(tài)圍繞著
    的頭像 發(fā)表于 11-11 21:10 ?876次閱讀

    議程直擊 | 第二屆OpenHarmony技術(shù)大會——應(yīng)用(向)生態(tài)分論壇

    點(diǎn)擊藍(lán)字 ╳ 關(guān)注我們 開源項(xiàng)目 OpenHarmony 是每個(gè)人的 OpenHarmony 原文標(biāo)題:議程直擊 | 第二屆OpenHarmony技術(shù)大會——應(yīng)用(向)生態(tài)分論壇 文
    的頭像 發(fā)表于 11-01 16:10 ?341次閱讀

    使用FPGA做一個(gè)ODrive

    核心CPU是XX32FXXX,在工業(yè)控制領(lǐng)域其實(shí)FPGA占比也很大,所以能不能用FPGA做一個(gè)ODrive呢?答案是肯定的。
    的頭像 發(fā)表于 10-20 11:15 ?688次閱讀
    使用FPGA<b class='flag-5'>做一個(gè)</b>ODrive