自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

OpenHarmony北向應(yīng)用開(kāi)發(fā)—做一個(gè) loading加載動(dòng)畫(huà)

系統(tǒng) OpenHarmony
作為一個(gè)OpenHarmony南向開(kāi)發(fā)者,接觸北向應(yīng)用開(kāi)發(fā)并不多。北向開(kāi)發(fā)ArkUI老是改來(lái)改去,對(duì)筆者這樣的入門(mén)選手來(lái)說(shuō)學(xué)習(xí)成本其實(shí)非常大,希望后面可以慢慢穩(wěn)定下來(lái)吧。最近努力學(xué)習(xí)了一些,下面將學(xué)習(xí)經(jīng)驗(yàn)分享如下。

??想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):??

??51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

  • 本篇文章介紹了如何實(shí)現(xiàn)一個(gè)簡(jiǎn)單的loading加載動(dòng)畫(huà),并且在文末提供了一個(gè)demo工程供讀者下載學(xué)習(xí)。
  • 作為一個(gè)OpenHarmony南向開(kāi)發(fā)者,接觸北向應(yīng)用開(kāi)發(fā)并不多。北向開(kāi)發(fā)ArkUI老是改來(lái)改去,對(duì)筆者這樣的入門(mén)選手來(lái)說(shuō)學(xué)習(xí)成本其實(shí)非常大,希望后面可以慢慢穩(wěn)定下來(lái)吧。最近努力學(xué)習(xí)了一些,下面將學(xué)習(xí)經(jīng)驗(yàn)分享如下:
  • 通過(guò)本文您將了解:
    1、使用ImageAnimator幀動(dòng)畫(huà)組件實(shí)現(xiàn)一個(gè)自定義loading加載動(dòng)畫(huà)。
    2、使用 Progress 進(jìn)度條組件實(shí)現(xiàn) loading加載動(dòng)畫(huà)。

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

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

效果演示

[OpenHarmony北向應(yīng)用開(kāi)發(fā)] 做一個(gè) loading加載動(dòng)畫(huà)-開(kāi)源基礎(chǔ)軟件社區(qū)

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

  • ImageAnimator幀動(dòng)畫(huà)組件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í)器APIhttps://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)畫(huà)組件自定義loading動(dòng)畫(huà)開(kāi)發(fā)步驟:

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

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

組成自定義的loading動(dòng)畫(huà)的圖片幀,詳情請(qǐng)見(jiàn)文末提供的demo工程。

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

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

  • ImageAnimator幀動(dòng)畫(huà)組件。
  • 在entry\src\main\ets\pages下新建.ets文件。
//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í)長(zhǎng),單位毫秒
},
{
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è)置圖片的width 、height 、top 和left屬性是無(wú)效的。false表示每一張圖片的width 、height 、top和left屬性都要單獨(dú)設(shè)置。

.reverse(true)
//設(shè)置播放順序。false表示從第1張圖片播放到最后1張圖片; true表示從最后1張圖片播放到第1張圖片。

.fillMode(FillMode.None)
//設(shè)置動(dòng)畫(huà)開(kāi)始前和結(jié)束后的狀態(tài),可選值參見(jiàn)FillMode說(shuō)明

.state(AnimationStatus.Running)
//Running表示動(dòng)畫(huà)處于播放狀態(tài)
}
}
}

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

  • 首先導(dǎo)入自定義的loading動(dòng)畫(huà)。
import loading1 from './loadingComponent_part1';
  • 使用CustomDialogController自定義彈窗組件自定義一個(gè)彈窗用于在主頁(yè)面實(shí)現(xiàn)loading動(dòng)畫(huà)
struct Index {
//用來(lái)繪制loading動(dòng)畫(huà)的
// 要打開(kāi)在點(diǎn)擊事件中添加 this.loading1.open();
// 要關(guān)閉在點(diǎn)擊事件中添加 this.loading1.close();
// 通過(guò)CustomDialogController類(lèi)顯示自定義彈窗。
private loading1: CustomDialogController = new CustomDialogController({
builder: loadingProgress_part1(),
alignment: DialogAlignment.Center,
offset: ({ dx: 0, dy: 0 }),
autoCancel: false,
customStyle: true
});
}

//用來(lái)繪制loading動(dòng)畫(huà)的
@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)畫(huà)。
Button(this.message1)
.margin({top:100})
.fontWeight(FontWeight.Normal)
.backgroundColor(Color.Green) //設(shè)置按鈕顏色
.onClick(() => {

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

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

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

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

(完整代碼見(jià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)效果

文章相關(guān)附件可以點(diǎn)擊下面的原文鏈接前往下載

 https://ost.51cto.com/resource/2693。

??想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):??

??51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

責(zé)任編輯:jianghua 來(lái)源: 51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)
相關(guān)推薦

2023-07-31 17:35:31

ArkTS鴻蒙

2023-08-04 15:00:43

ArkTS語(yǔ)言鴻蒙

2024-01-03 15:31:16

網(wǎng)格布局ArkTSGrid

2023-05-16 14:45:42

應(yīng)用開(kāi)發(fā)鴻蒙

2018-01-04 16:04:35

圓環(huán)放大動(dòng)畫(huà)

2021-12-17 10:06:42

鴻蒙HarmonyOS應(yīng)用

2016-11-23 18:13:44

javascriptrxjsreactivex

2021-01-18 13:26:06

鴻蒙HarmonyOS應(yīng)用

2021-01-19 12:33:32

鴻蒙HarmonyOS應(yīng)用開(kāi)發(fā)

2021-01-19 10:09:02

鴻蒙HarmonyOS應(yīng)用

2022-02-15 14:45:14

OpenHarmo系統(tǒng)鴻蒙

2012-04-10 16:26:46

2015-07-03 11:27:30

程序員自己神器

2017-10-18 15:28:08

Service WorPWA離線

2023-05-22 09:10:53

CSSloading 效

2017-06-30 15:18:24

對(duì)賬系統(tǒng)互聯(lián)網(wǎng)

2012-12-17 12:58:18

WebjQuery重構(gòu)

2023-08-09 14:43:42

應(yīng)用開(kāi)發(fā)ArkTS

2022-03-02 16:08:31

Harmony應(yīng)用開(kāi)發(fā)鴻蒙
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)