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

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

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

3天內不再提示

鴻蒙上做一個loading加載動畫

OpenHarmony技術社區 ? 來源:OST開源開發者 ? 2023-04-17 10:20 ? 次閱讀

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

作為一個 OpenHarmony 南向開發者,接觸北向應用開發并不多。北向開發 ArkUI 老是改來改去,對筆者這樣的入門選手來說學習成本其實非常大,希望后面可以慢慢穩定下來吧。

最近努力學習了一些,下面將學習經驗分享如下:

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

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

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

開發板:潤和軟件 DAYU200 開發板

OpenHarmony 版本:OpenHarmony3.2 Beta5

IDE:DevEco Studio 3.1.0.200

SDK:API9(3.2.10.6)

效果演示:

30ef34d8-dc25-11ed-bfe3-dac502259ad0.gif

①涉及到的知識點

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

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

代碼如下:

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

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

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

319fb0f6-dc25-11ed-bfe3-dac502259ad0.png

在 entrysrcmainets 新建一個 loading 目錄,將其放在該目錄下:

31b21e76-dc25-11ed-bfe3-dac502259ad0.png

(2)用幀動畫組件將動畫封裝成一個自定義組件

ImageAnimator 幀動畫組件:

https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-imageanimator.md
在 entrysrcmainetspages 下新建 .ets 文件:
//loadingComponent_part1.ets
@Component

exportdefaultstructloadingComponent_part1{
privateimageWidth:number|Resource=0
privateimageHeight: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表示圖片大小與組件大小一致,此時設置圖片的width 、height 、top 和left屬性是無效的。false表示每一張圖片的width 、height 、top和left屬性都要單獨設置。

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

.fillMode(FillMode.None)
//設置動畫開始前和結束后的狀態,可選值參見FillMode說明

.state(AnimationStatus.Running)
//Running表示動畫處于播放狀態
}
}
}

(3)在主頁面實現自定義的 loading 動畫

首先導入自定義的 loading 動畫:

importloading1from'./loadingComponent_part1';

使用 CustomDialogController 自定義彈窗組件自定義一個彈窗用于在主頁面實現 loading 動畫。

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

代碼如下:

structIndex{
//用來繪制loading動畫的
//要打開在點擊事件中添加this.loading1.open();
//要關閉在點擊事件中添加this.loading1.close();
//通過CustomDialogController類顯示自定義彈窗。
privateloading1:CustomDialogController=newCustomDialogController({
builder:loadingProgress_part1(),
alignment:DialogAlignment.Center,
offset:({dx:0,dy:0}),
autoCancel:false,
customStyle:true
});
}

//用來繪制loading動畫的
@CustomDialog
structloadingProgress_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);

})

實現效果:

31c36816-dc25-11ed-bfe3-dac502259ad0.gif

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

Progress 進度條組件:

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

部分代碼如下:

structIndex{
@Statei: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})
...
}

}

審核編輯:湯梓紅

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

    關注

    25

    文章

    4761

    瀏覽量

    96134
  • 開發環境
    +關注

    關注

    1

    文章

    215

    瀏覽量

    16517
  • SDK
    SDK
    +關注

    關注

    3

    文章

    1004

    瀏覽量

    45406
  • 鴻蒙
    +關注

    關注

    56

    文章

    2267

    瀏覽量

    42478
  • OpenHarmony
    +關注

    關注

    25

    文章

    3545

    瀏覽量

    15726

原文標題:鴻蒙上做一個loading加載動畫

文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

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

    - 本篇文章介紹了如何實現簡單的loading加載動畫,并且在提供了
    的頭像 發表于 04-20 11:29 ?1748次閱讀
    [OpenHarmony北向應用開發] <b class='flag-5'>做一個</b> <b class='flag-5'>loading</b><b class='flag-5'>加載</b><b class='flag-5'>動畫</b>

    【HarmonyOS】鴻蒙圖片加載工具匯總

    庫。Glide 的主要重點是使滾動任何類型的圖像列表盡可能平滑和快速,但 Glide 也適用于幾乎所有需要獲取、調整大小和顯示遠程圖像的情況。2、鴻蒙圖片加載工具——frescoFresco 是
    發表于 03-25 13:51

    鴻蒙JS開發接口請求loading怎么解決?

    鴻蒙JS開發接口請求loading?
    發表于 05-10 10:24

    Android中的alpha動畫是這個AlphaAnimation, 鴻蒙的alpha動畫是哪一個

    Android中的alpha動畫是這個AlphaAnimation,鴻蒙的alpha動畫是哪一個
    發表于 06-15 10:29

    請問鴻蒙hap包是否支持插件化開發?

    如題,安卓上可以使用dexclassloader機制動態加載其他apk作為插件使用,鴻蒙上用類似的能力嗎?有什么解決方案呢?
    發表于 06-16 11:34

    鴻蒙上使用Python進行物聯網編程

    炫耀!然而,這卻是非常重要的步:在鴻蒙上用使用 Python 進行物聯網編程是可行的!!! 既然可行,加上 Python 語言天生的優勢(易于掌握,開發效率高),那么真的值得持續打造,將鴻蒙上的 Python 進行到底。 所以
    的頭像 發表于 09-28 09:55 ?4097次閱讀
    在<b class='flag-5'>鴻蒙上</b>使用Python進行物聯網編程

    如何用所學的鴻蒙知識做一個小應用

    ?? 今時今日,不管是大人,還是小孩,都喜歡刷視頻,生活中刷視頻的 APP 也多得是,如:抖音,快手,視頻號,今日頭條,火山…數也不數不清了。 ??? ? 然而華為論壇鴻蒙版塊搞活動,做一個屬于自己
    的頭像 發表于 10-19 09:23 ?1662次閱讀

    鴻蒙上安裝按鈕實現下載、暫停、取消、顯示等操作

    今天給大家分享在鴻蒙上一個按鈕實現下載、暫停、取消、顯示下載進度操作。
    的頭像 發表于 01-04 14:32 ?2120次閱讀

    支持上拉加載和下拉刷新的鴻蒙版基礎控件教程

    介紹 這是支持上拉加載和下拉刷新的鴻蒙版基礎控件,用于頁面數據刷新和加載 軟件架構 軟件架構說明 使用
    發表于 03-29 13:35 ?0次下載

    視圖動畫加載用法案例

    : 《 com 。github 。.jlmd _ 動畫加載視圖。AnimatedCircleLoadingView ohos: id = “$+id:circle_loading_view” ohos
    發表于 03-31 09:06 ?1次下載

    高仿新版的加載動畫控件

    描述 高仿新版58加載動畫控件 集成 allprojects{ repositories{ mavenCentral() } } implementation ‘io.openha
    發表于 03-31 09:17 ?0次下載
    <b class='flag-5'>一</b><b class='flag-5'>個</b>高仿新版的<b class='flag-5'>加載</b><b class='flag-5'>動畫</b>控件

    用于openharmony和動畫加載視圖控件

    描述 簡單的加載視圖,用于openharmony和動畫。簡單的帶有動畫效果的加載控件。 依賴
    發表于 03-31 09:21 ?4次下載

    鴻蒙開發者使用的計數動畫文本視圖

    該三方開源庫從github fork過來,主要將底層接口調用的實現修改成鴻蒙接口的實現,將三方庫鴻蒙化,供開發鴻蒙應用的開發者使用。 計數動畫文本視圖
    發表于 04-02 14:26 ?1次下載

    鴻蒙上實現“數字華容道”小游戲

    本篇文章教大家如何在鴻蒙上實現“數字華容道”小游戲。
    的頭像 發表于 12-26 09:52 ?1087次閱讀

    鴻蒙上開發“小蜜蜂”游戲

    小時候我們有熟悉的游戲叫小蜜蜂。本文教大家在鴻蒙上學做這個小蜜蜂游戲。
    的頭像 發表于 04-03 11:27 ?1497次閱讀