From 41305193534ad305ea0f85e4dfff6442f94a6187 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E5=8B=A4=E6=B0=91?= Date: Tue, 22 Oct 2024 19:36:59 +0800 Subject: [PATCH] =?UTF-8?q?list=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Index.ets | 1 + README.md | 40 ++++++++++++---------- src/main/ets/ContextConfig.ets | 2 ++ src/main/ets/view/RefreshView.ets | 56 +++++++++++++++++++++++++++++++ src/main/ets/view/SafeView.ets | 2 +- 5 files changed, 82 insertions(+), 19 deletions(-) create mode 100644 src/main/ets/view/RefreshView.ets diff --git a/Index.ets b/Index.ets index ac40887..13c096e 100644 --- a/Index.ets +++ b/Index.ets @@ -47,6 +47,7 @@ export { WindowHelper } from './src/main/ets/utils/WindowHelper' */ export { LoadingView } from './src/main/ets/view/LoadingView' export { SafeView } from './src/main/ets/view/SafeView' +export { RefreshView } from './src/main/ets/view/RefreshView' /** * 自定义view */ diff --git a/README.md b/README.md index 49e6c58..2afb75c 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,28 @@ ohpm install @szyx/sdk_base ``` +## 0.初始化 +> 在UIAbility的onWindowStageCreate方法中初始化该方法 + +```tsx +// 初始化 +import { WindowHelper } from '@szyx/sdk_base'; +export default class AppAbility extends UIAbility { + onWindowStageCreate(windowStage: window.WindowStage): void { + + windowStage.loadContent('pages/Index', (err) => { + if (err.code) { + hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); + return; + } + WindowHelper.windowClass = windowStage.getMainWindowSync() + }); + // 这行代码 + GlobalContext.setContext(this.context) + } +} +``` + ## 1.[utils](./src/main/ets/utils) ### 1.1.[AppStorageHelper](./src/main/ets/utils/AppStorageHelper.ets) @@ -330,24 +352,6 @@ WindowHelper.close() ### 5.2.设置沉浸式相关 -```tsx -// 初始化 -import { WindowHelper } from '@szyx/sdk_base'; -export default class AppAbility extends UIAbility { - onWindowStageCreate(windowStage: window.WindowStage): void { - - windowStage.loadContent('pages/Index', (err) => { - if (err.code) { - hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); - return; - } - WindowHelper.windowClass = windowStage.getMainWindowSync() - }); - GlobalContext.setContext(this.context) - } -} -``` - ```tsx // 需要的界面 // 设置是否全屏 diff --git a/src/main/ets/ContextConfig.ets b/src/main/ets/ContextConfig.ets index 922646a..a773a71 100644 --- a/src/main/ets/ContextConfig.ets +++ b/src/main/ets/ContextConfig.ets @@ -3,6 +3,7 @@ */ import type common from '@ohos.app.ability.common'; +import { WindowHelper } from './utils/WindowHelper'; declare namespace globalThis { let _brushEngineContext: common.UIAbilityContext; @@ -15,6 +16,7 @@ export class GlobalContext { static setContext(context: common.UIAbilityContext): void { globalThis._brushEngineContext = context; + WindowHelper.windowClass = context.windowStage.getMainWindowSync() } } diff --git a/src/main/ets/view/RefreshView.ets b/src/main/ets/view/RefreshView.ets new file mode 100644 index 0000000..5f80e48 --- /dev/null +++ b/src/main/ets/view/RefreshView.ets @@ -0,0 +1,56 @@ +import { ToolsHelper } from '../utils/ToolsHelper' + +type ItemType = (string | number | Object) + +@Preview +@Component +export struct RefreshView { + @Prop isLoading: boolean + @Prop data: ItemType[] + + @Builder customBuilder() {} + // 使用父组件@Builder装饰的方法初始化子组件@BuilderParam + @BuilderParam customBuilderParam: (item:string) => void = this.customBuilder; + + build() { + + Refresh({ refreshing: $$this.isLoading }) { + List() { + ForEach(this.data ?? [], (item: string) => { + ListItem() { + this.customBuilderParam(item) + } + .backgroundColor('blue') + }, (index: number) => index.toString()) + } + .onScrollStart(() => { + ToolsHelper.log('onScrollStart') + }) + .onScrollStop(() => { + ToolsHelper.log('onScrollStop') + }) + .onTouch((event: TouchEvent) => { + const e1 = event.touches[0] + ToolsHelper.log(`onTouch ${event.type}-${e1.x.toString()}-${e1.y.toString()}`) + }) + .onScrollIndex((first: number, last: number) => { + ToolsHelper.log(`${first.toString()}-${last.toString()}`) + }) + .width('100%') + .height('100%') + .alignListItem(ListItemAlign.Center) + .scrollBar(BarState.Off) + }.width('100%') + .backgroundColor('red') + .height('100%') + .onStateChange((refreshStatus: RefreshStatus) => { + ToolsHelper.log('Refresh onStatueChange state is ' + refreshStatus) + }) + .onRefreshing(() => { + setTimeout(() => { + this.isLoading = false + }, 2000) + ToolsHelper.log('onRefreshing test') + }) + } +} \ No newline at end of file diff --git a/src/main/ets/view/SafeView.ets b/src/main/ets/view/SafeView.ets index c87c5fb..8d03095 100644 --- a/src/main/ets/view/SafeView.ets +++ b/src/main/ets/view/SafeView.ets @@ -80,7 +80,7 @@ export struct SafeView { }).visibility(!this.hideBack ? Visibility.Visible : Visibility.None) }.width(110) - Text(`${this.titleText}`) + Text(this.titleText ?? '') .maxLines(1) .fontColor('#11102C') .fontSize(16)