diff --git a/README.md b/README.md index 8bd19bd776c04129db22d5ed85b3bcec6d33be63..5338df94aafc032faf510eed6fa745601dc98eb1 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ 基于WaterFlow容器,实现瀑布流布局。 -![waterflow](./screenshots/device/waterflow.gif) + ### 相关概念 @@ -24,5 +24,5 @@ 1. 本示例仅支持标准系统上运行,支持设备:华为手机。 2. HarmonyOS系统:HarmonyOS 5.0.5 Release及以上。 -3. DevEco Studio版本:DevEco Studio 5.0.5 Release及以上。 -4. HarmonyOS SDK版本:HarmonyOS 5.0.5 Release SDK及以上。 +3. DevEco Studio版本:DevEco Studio 6.0.0 Release及以上。 +4. HarmonyOS SDK版本:HarmonyOS 6.0.0 Release SDK及以上。 diff --git a/build-profile.json5 b/build-profile.json5 index 69cf13d77e884ca9452a4542f84e6475705b0474..e3d08e8c0605a9fb38009bc1c6de13fe99f6e2fe 100644 --- a/build-profile.json5 +++ b/build-profile.json5 @@ -6,7 +6,7 @@ "name": "default", "signingConfig": "default", "compatibleSdkVersion": "5.0.5(17)", - "targetSdkVersion": "5.0.5(17)", + "targetSdkVersion": "6.0.0(20)", "runtimeOS": "HarmonyOS" } ] diff --git a/entry/src/main/ets/entryability/EntryAbility.ets b/entry/src/main/ets/entryability/EntryAbility.ets index aa93e6564d7b67fab089a87c1b9643a7ad169466..04799554714e8c7e47e39e06e72f52840d5a55e4 100644 --- a/entry/src/main/ets/entryability/EntryAbility.ets +++ b/entry/src/main/ets/entryability/EntryAbility.ets @@ -15,6 +15,7 @@ import { UIAbility } from '@kit.AbilityKit'; import { window } from '@kit.ArkUI'; +import { BusinessError } from '@kit.BasicServicesKit'; import Logger from '../common/utils/Logger'; /** @@ -29,6 +30,30 @@ export default class EntryAbility extends UIAbility { return; } Logger.info('Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? ''); + + try { + let windowClass: window.Window = windowStage.getMainWindowSync(); + let isLayoutFullScreen = true; + windowClass.setWindowLayoutFullScreen(isLayoutFullScreen).then(() => { + Logger.info('EntryAbility', 'Succeeded in setting the window layout to full-screen mode.'); + }).catch((err: BusinessError) => { + Logger.error('EntryAbility', + `Failed to set the window layout to full-screen mode. Code is ${err.code}, message is ${err.message}`); + }); + + let type = window.AvoidAreaType.TYPE_NAVIGATION_INDICATOR; + let avoidArea = windowClass.getWindowAvoidArea(type); + let bottomRectHeight = avoidArea.bottomRect.height; + AppStorage.setOrCreate('bottomRectHeight', bottomRectHeight); + + type = window.AvoidAreaType.TYPE_SYSTEM; + avoidArea = windowClass.getWindowAvoidArea(type); + let topRectHeight = avoidArea.topRect.height; + AppStorage.setOrCreate('topRectHeight', topRectHeight); + } catch (error) { + Logger.error('EntryAbility', + `Failed to set the window layout to full-screen mode. Code is ${err.code}, message is ${err.message}`); + } }); } } \ No newline at end of file diff --git a/entry/src/main/ets/pages/HomePage.ets b/entry/src/main/ets/pages/HomePage.ets index 4152b8b84c777db765c2178ab1731b6d5f007126..37584f578412a5785b7133a87111746de9a076ab 100644 --- a/entry/src/main/ets/pages/HomePage.ets +++ b/entry/src/main/ets/pages/HomePage.ets @@ -27,6 +27,8 @@ import WaterFlowComponent from '../view/WaterFlowComponent'; @Entry @Component struct HomePage { + @StorageLink('topRectHeight') topRectHeight: number = 0; + build() { Stack({ alignContent: Alignment.Top }) { Image($r('app.media.ic_app_background')) @@ -41,7 +43,8 @@ struct HomePage { } .padding({ left: $r('app.float.home_margin_left'), - right: $r('app.float.home_margin_right') + right: $r('app.float.home_margin_right'), + top: this.getUIContext().px2vp(this.topRectHeight) }) } .backgroundColor($r('app.color.home_background_color')) diff --git a/entry/src/main/ets/view/WaterFlowComponent.ets b/entry/src/main/ets/view/WaterFlowComponent.ets index e0ee03d4c971fbedf62f5b7b85d5c50b6975f242..2a7a98f44a80b23eb359fd5b04d5e38091d2d822 100644 --- a/entry/src/main/ets/view/WaterFlowComponent.ets +++ b/entry/src/main/ets/view/WaterFlowComponent.ets @@ -26,6 +26,7 @@ import FlowItemComponent from '../view/FlowItemComponent'; */ @Component export default struct WaterFlowComponent { + @StorageLink('bottomRectHeight') bottomRectHeight: number = 0; private datasource: WaterFlowDataSource = new WaterFlowDataSource(); aboutToAppear() { @@ -37,6 +38,7 @@ export default struct WaterFlowComponent { LazyForEach(this.datasource, (item: ProductItem) => { FlowItem() { FlowItemComponent({ item: item }) + } }, (item: ProductItem) => JSON.stringify(item)) } @@ -57,5 +59,9 @@ export default struct WaterFlowComponent { .height($r('app.float.footer_text_height')) .textAlign(TextAlign.Center) } + .margin({ + top: $r('app.float.water_flow_row_gap'), + bottom: this.getUIContext().px2vp(this.bottomRectHeight) + }) } } \ No newline at end of file diff --git a/hvigor/hvigor-config.json5 b/hvigor/hvigor-config.json5 index f70ecd4112d94f9aa555adf898d53f18bf58f3e9..03377a956ba7a27d9afab0e284166613e7999fcb 100644 --- a/hvigor/hvigor-config.json5 +++ b/hvigor/hvigor-config.json5 @@ -1,5 +1,5 @@ { - "modelVersion": "5.0.0", + "modelVersion": "6.0.0", "dependencies": { } } \ No newline at end of file diff --git a/oh-package.json5 b/oh-package.json5 index 553ccc4a9b777247f96d60823ee14f7673025fca..e70f8dadb78b44a866b73e1a85c30174c8c06cb9 100644 --- a/oh-package.json5 +++ b/oh-package.json5 @@ -1,5 +1,5 @@ { - "modelVersion": "5.0.0", + "modelVersion": "6.0.0", "license": "", "devDependencies": { }, diff --git a/screenshots/device/waterflow.gif b/screenshots/device/waterflow.gif deleted file mode 100644 index 3587a6489ebd13376569bdeefc8e2417e42ae779..0000000000000000000000000000000000000000 Binary files a/screenshots/device/waterflow.gif and /dev/null differ diff --git a/screenshots/device/waterflow.webp b/screenshots/device/waterflow.webp new file mode 100644 index 0000000000000000000000000000000000000000..4b05626d93b4bf74a6942429b01a99fd8abe1f4e Binary files /dev/null and b/screenshots/device/waterflow.webp differ