From e55bf2535ca63fd03ebdfdc88321a03a73839986 Mon Sep 17 00:00:00 2001 From: DevWiki Date: Fri, 31 May 2024 11:23:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0loading=20=E5=8A=A8=E7=94=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/oh-package.json5 | 2 +- app/src/main/ets/pages/Index.ets | 13 +++--- .../main/ets/pages/animation/LoadingPage.ets | 32 ++++++++++++++ .../main/ets/pages/component/ToastPage.ets | 41 ++++++++++++++++++ .../main/ets/pages/system/SystemEventPage.ets | 42 +++++++++++++++++++ app/src/main/ets/utils/PageRouter.ets | 4 ++ app/src/main/ets/utils/Toast.ets | 5 ++- .../resources/base/profile/main_pages.json | 2 + .../main/resources/base/media/ic_loading.svg | 1 + 9 files changed, 131 insertions(+), 11 deletions(-) create mode 100644 app/src/main/ets/pages/animation/LoadingPage.ets create mode 100644 app/src/main/ets/pages/component/ToastPage.ets create mode 100644 app/src/main/ets/pages/system/SystemEventPage.ets create mode 100644 common_ui/src/main/resources/base/media/ic_loading.svg diff --git a/app/oh-package.json5 b/app/oh-package.json5 index 0ddb33b..ad4d9c1 100644 --- a/app/oh-package.json5 +++ b/app/oh-package.json5 @@ -9,7 +9,7 @@ "@devwiki/common_ui": "file:../common_ui", "@devwiki/base": "file:../base", "@ohos/axios": "^2.2.0", - "@devwiki/hmcalculate": "file:../hmcalculate" +// "@devwiki/hmcalculate": "file:../hmcalculate" }, "devDependencies": {}, "dynamicDependencies": {} diff --git a/app/src/main/ets/pages/Index.ets b/app/src/main/ets/pages/Index.ets index 630288d..a881336 100644 --- a/app/src/main/ets/pages/Index.ets +++ b/app/src/main/ets/pages/Index.ets @@ -1,5 +1,4 @@ import { CommonRes, TitleBar } from '@devwiki/common_ui'; -import web_webview from '@ohos.web.webview'; import { TitleBarMenuType } from '@devwiki/common_ui'; import { router, window } from '@kit.ArkUI'; import promptAction from '@ohos.promptAction'; @@ -7,8 +6,8 @@ import { BusinessError } from '@ohos.base'; import { Log } from '@devwiki/base'; import { BaseLocalStorage, ScreenUtil } from '@devwiki/base'; import { HomeItem, HomeItemGroup } from '../model/Home'; -import { CalculateAdapter } from '@devwiki/hmcalculate'; +import('./animation/LoadingPage') @Entry @Component @@ -28,7 +27,8 @@ struct Index { { name: 'Component', items: [ - {name: 'InputPage', page: 'pages/component/InputPage'} + {name: 'InputPage', page: 'pages/component/InputPage'}, + {name: 'ToastPage', page: 'pages/component/ToastPage'} ] }, // 布局 @@ -44,6 +44,7 @@ struct Index { name: "Animation", items: [ { name: 'CompTransition', page: 'pages/animation/CompTransitionPage'}, + { name: 'Loading', page: 'pages/animation/LoadingPage'}, ] }, // 多媒体 @@ -63,13 +64,9 @@ struct Index { } ]; - adapter?: CalculateAdapter; - aboutToAppear(): void { ScreenUtil.getInstance().initScreenSize(); BaseLocalStorage.getInstance().init(getContext(this)); - this.adapter = new CalculateAdapter(); - let a = this.adapter.add(1,2); } onPageShow(): void { @@ -167,7 +164,7 @@ struct Index { }) } }) - }.width('100%').margin({top: 16, bottom: 48}) + }.width('100%').margin({top: 16}).layoutWeight(1) }.width('100%').height('100%') } } \ No newline at end of file diff --git a/app/src/main/ets/pages/animation/LoadingPage.ets b/app/src/main/ets/pages/animation/LoadingPage.ets new file mode 100644 index 0000000..f81c0a9 --- /dev/null +++ b/app/src/main/ets/pages/animation/LoadingPage.ets @@ -0,0 +1,32 @@ +import { CommonRes } from '@devwiki/common_ui/Index'; +import { PageName } from '../../utils/PageRouter'; +import { curves } from '@kit.ArkUI'; + +@Entry({ routeName: PageName.loadingPage }) +@Component +export struct LoadingPage { + @State animate: boolean = false; + // 第一步: 声明相关状态变量 + @State rotateValue: number = 0; // 组件一旋转角度 + + build() { + Column() { + + Image(CommonRes.getImage('ic_loading')) + .rotate({ angle: this.rotateValue }) + .width(32) + .height(32) + .fillColor('#2196F3') + .animation({ + curve: curves.initCurve(Curve.Linear), + playMode: PlayMode.Normal, + iterations: -1, + }) + .onAppear(() => { + this.animate = !this.animate; + // 组件一的rotate属性发生变化,所以会给组件一添加rotate旋转动画 + this.rotateValue = this.animate ? 360 : 0; + }) + }.width('100%').height('100%').justifyContent(FlexAlign.Center) + } +} \ No newline at end of file diff --git a/app/src/main/ets/pages/component/ToastPage.ets b/app/src/main/ets/pages/component/ToastPage.ets new file mode 100644 index 0000000..3269024 --- /dev/null +++ b/app/src/main/ets/pages/component/ToastPage.ets @@ -0,0 +1,41 @@ +import { Toast } from '../../utils/Toast' + +@Observed +class ToastViewMode { + + showToast?: (msg: ResourceStr) => void; + + showHint(msg: ResourceStr) { + this.showToast?.(msg); + } +} + +@Entry +@Component +export struct ToastPage { + + @Provide toastVM: ToastViewMode = new ToastViewMode(); + + aboutToAppear(): void { + this.toastVM.showToast = (msg: ResourceStr) => { + Toast.showToast(msg, true); + } + } + + build() { + + Column(){ + Button("ShowDefault").width('80%').height(36).onClick(() =>{ + Toast.showToast("Test Default") + }) + + Button("ShowTopmost").width('80%').height(36).onClick(() =>{ + Toast.showToast("Test Topmost", true) + }).margin({ top: 16 }) + + Button("VM Show").width('80%').height(36).onClick(() =>{ + this.toastVM.showHint("test vm Show") + }).margin({ top: 16 }) + }.height('100%').width('100%').justifyContent(FlexAlign.Center) + } +} \ No newline at end of file diff --git a/app/src/main/ets/pages/system/SystemEventPage.ets b/app/src/main/ets/pages/system/SystemEventPage.ets new file mode 100644 index 0000000..4cf72a6 --- /dev/null +++ b/app/src/main/ets/pages/system/SystemEventPage.ets @@ -0,0 +1,42 @@ +import commonEventManager from '@ohos.commonEventManager'; +import Base from '@ohos.base'; + + +@Component +@Entry +export struct SystemEventPage { + // 用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作 + subscriber: commonEventManager.CommonEventSubscriber | null = null; + // 订阅者信息 + subscribeInfo: commonEventManager.CommonEventSubscribeInfo = { + events: ["usual.event.SCREEN_OFF"], // 订阅灭屏公共事件 + } + + aboutToAppear(): void { + // 创建订阅者回调 + commonEventManager.createSubscriber(this.subscribeInfo, (err: Base.BusinessError, data: commonEventManager.CommonEventSubscriber) => { + if (err) { + console.error(`Failed to create subscriber. Code is ${err.code}, message is ${err.message}`); + return; + } + console.info('Succeeded in creating subscriber.'); + this.subscriber = data; + // 订阅公共事件回调 + }) + + // 订阅公共事件回调 + if (this.subscriber !== null) { + commonEventManager.subscribe(this.subscriber, (err: Base.BusinessError, data: commonEventManager.CommonEventData) => { + if (err) { + console.error(`Failed to subscribe common event. Code is ${err.code}, message is ${err.message}`); + return; + } + }) + } else { + console.error(`Need create subscriber`); + } + } + + build() { + } +} \ No newline at end of file diff --git a/app/src/main/ets/utils/PageRouter.ets b/app/src/main/ets/utils/PageRouter.ets index 5b07162..a015753 100644 --- a/app/src/main/ets/utils/PageRouter.ets +++ b/app/src/main/ets/utils/PageRouter.ets @@ -2,3 +2,7 @@ export class PageRouter{ static readonly WebPage: string = "@bundle:net.devwiki.hm4demo/app/ets/pages/web/WebPage" } + +export enum PageName { + loadingPage = 'LoadingPage', +} diff --git a/app/src/main/ets/utils/Toast.ets b/app/src/main/ets/utils/Toast.ets index 6c2fdfe..7aaf125 100644 --- a/app/src/main/ets/utils/Toast.ets +++ b/app/src/main/ets/utils/Toast.ets @@ -1,11 +1,12 @@ import promptAction from '@ohos.promptAction'; export class Toast { - static showToast(message: ResourceStr) { + static showToast(message: ResourceStr, topmost: boolean = false) { promptAction.showToast({ message: message, duration: 2000, - bottom: "50%" + bottom: "50%", + showMode: promptAction.ToastShowMode.TOP_MOST }); } } \ No newline at end of file diff --git a/app/src/main/resources/base/profile/main_pages.json b/app/src/main/resources/base/profile/main_pages.json index 10de73d..14e442c 100644 --- a/app/src/main/resources/base/profile/main_pages.json +++ b/app/src/main/resources/base/profile/main_pages.json @@ -3,10 +3,12 @@ "pages/Index", "pages/animation/CompTransitionPage", + "pages/animation/LoadingPage", "pages/component/InputPage", "pages/component/SVGPage", "pages/component/TextPage", + "pages/component/ToastPage", "pages/layout/LinearLayoutPage", "pages/layout/RelativeContainerPage", diff --git a/common_ui/src/main/resources/base/media/ic_loading.svg b/common_ui/src/main/resources/base/media/ic_loading.svg new file mode 100644 index 0000000..b04d976 --- /dev/null +++ b/common_ui/src/main/resources/base/media/ic_loading.svg @@ -0,0 +1 @@ +loading \ No newline at end of file