2020import { HippyMap, HippyValue } from '../common/HippyTypes';
2121import deviceinfo from '@ohos.deviceInfo';
2222import { TextUtils } from './TextUtils';
23- import { display } from '@kit.ArkUI';
23+ import { display, window } from '@kit.ArkUI';
2424import { LogUtils } from './LogUtils';
2525import { PixelUtil } from './PixelUtil';
2626
@@ -33,14 +33,30 @@ export class DimensionsUtil {
3333 private static SHOW_NAV_BAR_RES_NAME = "config_showNavigationBar";
3434 private static NAVIGATE_BAR_HEIGHT = 0;
3535
36+ static async getLastWindowRect(context: Context): Promise<window.Rect> {
37+ const windowObj = await window.getLastWindow(context);
38+ return windowObj.getWindowProperties().windowRect;
39+ }
40+
3641 static async getDimensions(ww: number, wh: number, context: Context): Promise<HippyMap> {
3742 let displayClass: display.Display = display.getDefaultDisplaySync();
3843 await DimensionsUtil.getStatusBarHeight(displayClass);
3944 let dimensionMap = new Map<string, HippyValue | Map<string, HippyValue>>()
4045
46+ let windowRect = await DimensionsUtil.getLastWindowRect(context);
47+ let w = 0;
48+ let h = 0;
49+ if (windowRect.width > 0 && windowRect.height > 0) {
50+ w = windowRect.width;
51+ h = windowRect.height;
52+ } else {
53+ w = displayClass.width;
54+ h = displayClass.height;
55+ }
56+
4157 let windowDisplayMetricsMap = new Map<string, HippyValue>()
42- windowDisplayMetricsMap.set("width", ww >= 0 ? ww : displayClass.width );
43- windowDisplayMetricsMap.set("height", wh >= 0 ? wh : displayClass.height );
58+ windowDisplayMetricsMap.set("width", ww >= 0 ? ww : w );
59+ windowDisplayMetricsMap.set("height", wh >= 0 ? wh : h );
4460 windowDisplayMetricsMap.set("scale", displayClass.densityPixels / PixelUtil.getDensityScale());
4561 windowDisplayMetricsMap.set("fontScale", displayClass.scaledDensity / PixelUtil.getDensityScale());
4662 windowDisplayMetricsMap.set("densityDpi", displayClass.densityDPI / PixelUtil.getDensityScale());
@@ -49,8 +65,8 @@ export class DimensionsUtil {
4965 dimensionMap.set("windowPhysicalPixels", windowDisplayMetricsMap);
5066
5167 let screenDisplayMetricsMap = new Map<string, HippyValue>()
52- screenDisplayMetricsMap.set("width", displayClass.width );
53- screenDisplayMetricsMap.set("height", displayClass.height );
68+ screenDisplayMetricsMap.set("width", w );
69+ screenDisplayMetricsMap.set("height", h );
5470 screenDisplayMetricsMap.set("scale", displayClass.densityPixels / PixelUtil.getDensityScale());
5571 screenDisplayMetricsMap.set("fontScale", displayClass.scaledDensity / PixelUtil.getDensityScale());
5672 screenDisplayMetricsMap.set("densityDpi", displayClass.densityDPI / PixelUtil.getDensityScale());
0 commit comments