diff --git a/entry/src/main/ets/common/utils/WindowUtils.ets b/entry/src/main/ets/common/utils/WindowUtils.ets index 51ad53b42fc6276a886fe4ee397f28f3380b81f6..8c9bf007453f9fcf2528ded96f88d91588dc2e3e 100644 --- a/entry/src/main/ets/common/utils/WindowUtils.ets +++ b/entry/src/main/ets/common/utils/WindowUtils.ets @@ -43,10 +43,10 @@ export class WindowUtil { }); } - updateWidthBp(): void { + updateWidthBp(context: UIContext): void { let mainWindow: window.WindowProperties = this.mainWindowClass!.getWindowProperties(); let windowWidth: number = mainWindow.windowRect.width; - let windowWidthVp = px2vp(windowWidth); + let windowWidthVp = context.px2vp(windowWidth); if (deviceInfo.deviceType === '2in1') { windowWidthVp -= 2 * 5.4; } diff --git a/entry/src/main/ets/entryability/EntryAbility.ets b/entry/src/main/ets/entryability/EntryAbility.ets index 71fa9b9d1693b5a56778ef44ebc19dd1c00432f9..a361ee5153a3990f69de1ccba8f86061e18e2536 100644 --- a/entry/src/main/ets/entryability/EntryAbility.ets +++ b/entry/src/main/ets/entryability/EntryAbility.ets @@ -21,8 +21,8 @@ import { BusinessError, deviceInfo } from '@kit.BasicServicesKit'; export default class EntryAbility extends UIAbility { private windowUtil?: WindowUtil = WindowUtil.getInstance(); - private onWindowSizeChange: (windowSize: window.Size) => void = () => { - this.windowUtil!.updateWidthBp(); + private onWindowSizeChange: (windowSize: window.Size, context: UIContext) => void = (_, context) => { + this.windowUtil!.updateWidthBp(context); } onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { @@ -44,6 +44,9 @@ export default class EntryAbility extends UIAbility { return; } hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.'); + + let uiContext: UIContext | undefined = windowStage.getMainWindowSync().getUIContext() + AppStorage.setOrCreate('uiContext', uiContext); }); let windowClass: window.Window | undefined = undefined; windowStage.getMainWindow((err: BusinessError, data: window.Window) => { @@ -51,8 +54,9 @@ export default class EntryAbility extends UIAbility { hilog.error(0x0000, 'testTag', 'Failed to get the main window. Cause: %{public}s', JSON.stringify(err) ?? ''); return; } - this.windowUtil!.updateWidthBp(); - data.on('windowSizeChange', this.onWindowSizeChange); + + this.windowUtil!.updateWidthBp(windowStage.getMainWindowSync().getUIContext()); + data.on('windowSizeChange', (windowSize: window.Size) => this.onWindowSizeChange(windowSize, windowStage.getMainWindowSync().getUIContext())); windowClass = data; if (deviceInfo.deviceType === '2in1') { data.setWindowDecorVisible(false); diff --git a/entry/src/main/ets/view/TopTabView.ets b/entry/src/main/ets/view/TopTabView.ets index c1b2558384337deec8e9874ce08db388c70e659e..3f4c41ab17db9de2dc526edd7014d1aa22cfb7a3 100644 --- a/entry/src/main/ets/view/TopTabView.ets +++ b/entry/src/main/ets/view/TopTabView.ets @@ -23,7 +23,7 @@ export struct TopTabView { @State secondLevelIndex: number = 0; @Link firstLevelIndex: number; @Link tabData: TabDataModel; - private firstLevel: string = getContext(this).resourceManager.getStringSync($r('app.string.tab_home').id); + private firstLevel: string = this.getUIContext().getHostContext()!.resourceManager.getStringSync($r('app.string.tab_home').id); build() { Column() { diff --git a/entry/src/main/ets/viewmodel/TabViewModel.ets b/entry/src/main/ets/viewmodel/TabViewModel.ets index 8d78d49ad311539592bb89c924cc4bc8b802aee9..60c4d18c4ec6dca980645751203ff066c219278d 100644 --- a/entry/src/main/ets/viewmodel/TabViewModel.ets +++ b/entry/src/main/ets/viewmodel/TabViewModel.ets @@ -15,20 +15,23 @@ import { TabDataModel } from '../model/TabDataModel'; +const uiContext: UIContext | undefined = AppStorage.get('uiContext'); +let context = uiContext!.getHostContext()!; + export class TabViewModel { private tabMap: TabDataModel; constructor() { let tabMap: Map = new Map(); - tabMap.set(getContext(this).resourceManager.getStringSync($r('app.string.tab_home').id), [ - getContext(this).resourceManager.getStringSync($r('app.string.selected').id), - getContext(this).resourceManager.getStringSync($r('app.string.video').id), - getContext(this).resourceManager.getStringSync($r('app.string.community').id), - getContext(this).resourceManager.getStringSync($r('app.string.news').id) + tabMap.set(context.resourceManager.getStringSync($r('app.string.tab_home').id), [ + context.resourceManager.getStringSync($r('app.string.selected').id), + context.resourceManager.getStringSync($r('app.string.video').id), + context.resourceManager.getStringSync($r('app.string.community').id), + context.resourceManager.getStringSync($r('app.string.news').id) ]); - tabMap.set(getContext(this).resourceManager.getStringSync($r('app.string.tab_moments').id), []); - tabMap.set(getContext(this).resourceManager.getStringSync($r('app.string.tab_shopping').id), []); - tabMap.set(getContext(this).resourceManager.getStringSync($r('app.string.tab_me').id), []); + tabMap.set(context.resourceManager.getStringSync($r('app.string.tab_moments').id), []); + tabMap.set(context.resourceManager.getStringSync($r('app.string.tab_shopping').id), []); + tabMap.set(context.resourceManager.getStringSync($r('app.string.tab_me').id), []); this.tabMap = new TabDataModel(tabMap); }