From ffecc2a34ec852c6c43af26cc324ad6a2eb65183 Mon Sep 17 00:00:00 2001 From: caopan Date: Tue, 6 Jul 2021 19:34:03 +0800 Subject: [PATCH] add sample for custom layout Signed-off-by: caopan --- UI/CustomLayout/README.md | 14 ++ UI/CustomLayout/README_zh.md | 14 ++ UI/CustomLayout/build.gradle | 36 +++++ UI/CustomLayout/entry/build.gradle | 19 +++ UI/CustomLayout/entry/src/main/config.json | 46 +++++++ .../samples/customlayout/MainAbility.java | 33 +++++ .../samples/customlayout/MyApplication.java | 30 ++++ .../customlayout/component/CustomLayout.java | 129 ++++++++++++++++++ .../customlayout/slice/MainAbilitySlice.java | 83 +++++++++++ .../main/resources/base/element/string.json | 72 ++++++++++ .../src/main/resources/base/media/icon.png | Bin 0 -> 6790 bytes .../src/main/resources/en/element/string.json | 12 ++ .../src/main/resources/zh/element/string.json | 12 ++ UI/CustomLayout/screenshots/device/Phone.png | Bin 0 -> 18407 bytes UI/CustomLayout/screenshots/device/Tablet.png | Bin 0 -> 16941 bytes UI/CustomLayout/settings.gradle | 1 + 16 files changed, 501 insertions(+) create mode 100644 UI/CustomLayout/README.md create mode 100644 UI/CustomLayout/README_zh.md create mode 100644 UI/CustomLayout/build.gradle create mode 100644 UI/CustomLayout/entry/build.gradle create mode 100644 UI/CustomLayout/entry/src/main/config.json create mode 100644 UI/CustomLayout/entry/src/main/java/ohos/samples/customlayout/MainAbility.java create mode 100644 UI/CustomLayout/entry/src/main/java/ohos/samples/customlayout/MyApplication.java create mode 100644 UI/CustomLayout/entry/src/main/java/ohos/samples/customlayout/component/CustomLayout.java create mode 100644 UI/CustomLayout/entry/src/main/java/ohos/samples/customlayout/slice/MainAbilitySlice.java create mode 100644 UI/CustomLayout/entry/src/main/resources/base/element/string.json create mode 100644 UI/CustomLayout/entry/src/main/resources/base/media/icon.png create mode 100644 UI/CustomLayout/entry/src/main/resources/en/element/string.json create mode 100644 UI/CustomLayout/entry/src/main/resources/zh/element/string.json create mode 100644 UI/CustomLayout/screenshots/device/Phone.png create mode 100644 UI/CustomLayout/screenshots/device/Tablet.png create mode 100644 UI/CustomLayout/settings.gradle diff --git a/UI/CustomLayout/README.md b/UI/CustomLayout/README.md new file mode 100644 index 0000000000..1b4c7321e8 --- /dev/null +++ b/UI/CustomLayout/README.md @@ -0,0 +1,14 @@ +# CustomLayout + +### Introduction + +This sample demonstrates layout customization of the Java UI framework. Child components are measured at different screen resolutions to determine their size. If the child components cannot be fit into the horizontal space of the screen, they will automatically wrap. + +### Usage + +The custom layout is displayed when you open your application. + +### Constraints + +This sample can only be run on standard-system devices. + diff --git a/UI/CustomLayout/README_zh.md b/UI/CustomLayout/README_zh.md new file mode 100644 index 0000000000..308c7a6cef --- /dev/null +++ b/UI/CustomLayout/README_zh.md @@ -0,0 +1,14 @@ +# 自定义布局 + +### 简介 + +本示例演示了Java UI框架提供的自定义布局能力。在不同屏幕分辨率下对子组件进行测量,确定子组件的大小,在屏幕横向空间不足的情况下,下一个子组件将进行自动换行。 + +### 使用说明 + +打开应用所展示的界面即为自定义的布局。 + +### 约束与限制 + +本示例仅支持在标准系统上运行。 + diff --git a/UI/CustomLayout/build.gradle b/UI/CustomLayout/build.gradle new file mode 100644 index 0000000000..1ce01d8202 --- /dev/null +++ b/UI/CustomLayout/build.gradle @@ -0,0 +1,36 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +apply plugin: 'com.huawei.ohos.app' + +ohos { + compileSdkVersion 5 + defaultConfig { + compatibleSdkVersion 4 + } +} + +buildscript { + repositories { + maven { + url 'https://repo.huaweicloud.com/repository/maven/' + } + maven { + url 'https://developer.huawei.com/repo/' + } + jcenter() + } + dependencies { + classpath 'com.huawei.ohos:hap:2.4.4.2' + } +} + +allprojects { + repositories { + maven { + url 'https://repo.huaweicloud.com/repository/maven/' + } + maven { + url 'https://developer.huawei.com/repo/' + } + jcenter() + } +} diff --git a/UI/CustomLayout/entry/build.gradle b/UI/CustomLayout/entry/build.gradle new file mode 100644 index 0000000000..83f59debbd --- /dev/null +++ b/UI/CustomLayout/entry/build.gradle @@ -0,0 +1,19 @@ +apply plugin: 'com.huawei.ohos.hap' +ohos { + compileSdkVersion 5 + defaultConfig { + compatibleSdkVersion 4 + } + buildTypes { + release { + proguardOpt { + proguardEnabled false + rulesFiles 'proguard-rules.pro' + } + } + } +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar', '*.har']) +} \ No newline at end of file diff --git a/UI/CustomLayout/entry/src/main/config.json b/UI/CustomLayout/entry/src/main/config.json new file mode 100644 index 0000000000..c01cd6bc55 --- /dev/null +++ b/UI/CustomLayout/entry/src/main/config.json @@ -0,0 +1,46 @@ +{ + "app": { + "bundleName": "ohos.samples.customlayout", + "version": { + "code": 1000000, + "name": "1.0" + } + }, + "deviceConfig": {}, + "module": { + "package": "ohos.samples.customlayout", + "name": ".MyApplication", + "reqCapabilities": [ + "video_support" + ], + "deviceType": [ + "default" + ], + "distro": { + "deliveryWithInstall": true, + "moduleName": "entry", + "moduleType": "entry", + "installationFree": false + }, + "abilities": [ + { + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ], + "name": "ohos.samples.customlayout.MainAbility", + "icon": "$media:icon", + "description": "$string:mainability_description", + "label": "$string:entry_MainAbility", + "type": "page", + "launchType": "standard" + } + ] + } +} \ No newline at end of file diff --git a/UI/CustomLayout/entry/src/main/java/ohos/samples/customlayout/MainAbility.java b/UI/CustomLayout/entry/src/main/java/ohos/samples/customlayout/MainAbility.java new file mode 100644 index 0000000000..38f0525d15 --- /dev/null +++ b/UI/CustomLayout/entry/src/main/java/ohos/samples/customlayout/MainAbility.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ohos.samples.customlayout; + +import ohos.aafwk.ability.Ability; +import ohos.aafwk.content.Intent; +import ohos.samples.customlayout.slice.MainAbilitySlice; + +/** + * MainAbility + * + * @since 2021-07-03 + */ +public class MainAbility extends Ability { + @Override + public void onStart(Intent intent) { + super.onStart(intent); + super.setMainRoute(MainAbilitySlice.class.getName()); + } +} diff --git a/UI/CustomLayout/entry/src/main/java/ohos/samples/customlayout/MyApplication.java b/UI/CustomLayout/entry/src/main/java/ohos/samples/customlayout/MyApplication.java new file mode 100644 index 0000000000..6a907bcbc7 --- /dev/null +++ b/UI/CustomLayout/entry/src/main/java/ohos/samples/customlayout/MyApplication.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ohos.samples.customlayout; + +import ohos.aafwk.ability.AbilityPackage; + +/** + * MyApplication + * + * @since 2021-07-03 + */ +public class MyApplication extends AbilityPackage { + @Override + public void onInitialize() { + super.onInitialize(); + } +} diff --git a/UI/CustomLayout/entry/src/main/java/ohos/samples/customlayout/component/CustomLayout.java b/UI/CustomLayout/entry/src/main/java/ohos/samples/customlayout/component/CustomLayout.java new file mode 100644 index 0000000000..7f558cd37b --- /dev/null +++ b/UI/CustomLayout/entry/src/main/java/ohos/samples/customlayout/component/CustomLayout.java @@ -0,0 +1,129 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ohos.samples.customlayout.component; + +import ohos.agp.components.AttrSet; +import ohos.agp.components.Component; +import ohos.agp.components.ComponentContainer; +import ohos.app.Context; + +import java.util.HashMap; +import java.util.Map; + +/** + * Custom layout + * + * @since 2021-07-03 + */ +public class CustomLayout extends ComponentContainer + implements ComponentContainer.EstimateSizeListener, ComponentContainer.ArrangeListener { + private final Map axis = new HashMap<>(); + + private int locationX; + + private int locationY; + + private int maxWidth; + + private int maxHeight; + + private int lastHeight; + + public CustomLayout(Context context, AttrSet attrSet) { + super(context, attrSet); + setEstimateSizeListener(this); + setArrangeListener(this); + } + + @Override + public boolean onEstimateSize(int widthEstimatedConfig, int heightEstimatedConfig) { + measureChildren(widthEstimatedConfig, heightEstimatedConfig); + int width = EstimateSpec.getSize(widthEstimatedConfig); + + for (int idx = 0; idx < getChildCount(); idx++) { + Component childView = getComponentAt(idx); + addChild(childView, idx, width); + } + setEstimatedSize(EstimateSpec.getChildSizeWithMode(maxWidth, widthEstimatedConfig, 0), + EstimateSpec.getChildSizeWithMode(maxHeight, heightEstimatedConfig, 0)); + return true; + } + + private void measureChildren(int widthEstimatedConfig, int heightEstimatedConfig) { + for (int idx = 0; idx < getChildCount(); idx++) { + Component childView = getComponentAt(idx); + if (childView != null) { + measureChild(childView, widthEstimatedConfig, heightEstimatedConfig); + } + } + } + + private void measureChild(Component child, int parentWidthMeasureSpec, int parentHeightMeasureSpec) { + LayoutConfig lc = child.getLayoutConfig(); + int childWidthMeasureSpec = + EstimateSpec.getChildSizeWithMode(lc.width, parentWidthMeasureSpec, EstimateSpec.UNCONSTRAINT); + int childHeightMeasureSpec = + EstimateSpec.getChildSizeWithMode(lc.height, parentHeightMeasureSpec, EstimateSpec.UNCONSTRAINT); + child.estimateSize(childWidthMeasureSpec, childHeightMeasureSpec); + } + + private void addChild(Component component, int id, int layoutWidth) { + Position position = new Position(); + position.positionX = locationX + component.getMarginLeft(); + position.positionY = locationY + component.getMarginTop(); + position.width = component.getEstimatedWidth(); + position.height = component.getEstimatedHeight(); + if ((locationX + position.width) > layoutWidth) { + locationX = 0; + locationY += lastHeight; + lastHeight = 0; + position.positionX = locationX + component.getMarginLeft(); + position.positionY = locationY + component.getMarginTop(); + } + axis.put(id, position); + lastHeight = Math.max(lastHeight, position.height + component.getMarginBottom()); + locationX += position.width + component.getMarginRight(); + maxWidth = Math.max(maxWidth, position.positionX + position.width); + maxHeight = Math.max(maxHeight, position.positionY + position.height); + } + + @Override + public boolean onArrange(int left, int top, int width, int height) { + for (int idx = 0; idx < getChildCount(); idx++) { + Component childView = getComponentAt(idx); + Position position = axis.get(idx); + if (position != null) { + childView.arrange(position.positionX, position.positionY, position.width, position.height); + } + } + return true; + } + + /** + * Layout + * + * @since 2021-05-08 + */ + private static class Position { + int positionX = 0; + + int positionY = 0; + + int width = 0; + + int height = 0; + } +} \ No newline at end of file diff --git a/UI/CustomLayout/entry/src/main/java/ohos/samples/customlayout/slice/MainAbilitySlice.java b/UI/CustomLayout/entry/src/main/java/ohos/samples/customlayout/slice/MainAbilitySlice.java new file mode 100644 index 0000000000..ef076e981f --- /dev/null +++ b/UI/CustomLayout/entry/src/main/java/ohos/samples/customlayout/slice/MainAbilitySlice.java @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ohos.samples.customlayout.slice; + +import ohos.aafwk.ability.AbilitySlice; +import ohos.aafwk.content.Intent; +import ohos.agp.colors.RgbColor; +import ohos.agp.components.Button; +import ohos.agp.components.Component; +import ohos.agp.components.DirectionalLayout; +import ohos.agp.components.element.ShapeElement; +import ohos.agp.utils.Color; +import ohos.samples.customlayout.ResourceTable; +import ohos.samples.customlayout.component.CustomLayout; + +/** + * MainAbilitySlice + * + * @since 2021-07-03 + */ +public class MainAbilitySlice extends AbilitySlice { + private static final int COMPONENT_COUNT = 15; + + @Override + public void onStart(Intent intent) { + super.onStart(intent); + DirectionalLayout directionalLayout = new DirectionalLayout(getContext()); + directionalLayout.setPadding(32, 32, 32, 32); + DirectionalLayout.LayoutConfig config = new DirectionalLayout.LayoutConfig( + DirectionalLayout.LayoutConfig.MATCH_PARENT, DirectionalLayout.LayoutConfig.MATCH_PARENT); + directionalLayout.setLayoutConfig(config); + + CustomLayout customLayout = new CustomLayout(this, null); + for (int index = 0; index < COMPONENT_COUNT; index++) { + customLayout.addComponent(getComponent(index + 1)); + } + ShapeElement shapeElement = new ShapeElement(); + shapeElement.setRgbColor(new RgbColor(100, 100, 100)); + customLayout.setBackground(shapeElement); + DirectionalLayout.LayoutConfig layoutConfig = new DirectionalLayout.LayoutConfig( + DirectionalLayout.LayoutConfig.MATCH_PARENT, DirectionalLayout.LayoutConfig.MATCH_CONTENT); + customLayout.setLayoutConfig(layoutConfig); + directionalLayout.addComponent(customLayout); + super.setUIContent(directionalLayout); + } + + private Component getComponent(int index) { + Button button = new Button(getContext()); + ShapeElement shapeElement = new ShapeElement(); + shapeElement.setRgbColor(new RgbColor(200, 200, 200)); + button.setBackground(shapeElement); + button.setTextColor(Color.WHITE); + DirectionalLayout.LayoutConfig layoutConfig = new DirectionalLayout.LayoutConfig(300, 100); + if (index == 1) { + layoutConfig = new DirectionalLayout.LayoutConfig(1080, 200); + button.setText(ResourceTable.String_size01); + } else if (index == 6) { + layoutConfig = new DirectionalLayout.LayoutConfig(500, 100); + button.setText(ResourceTable.String_size02); + } else if (index == 8) { + layoutConfig = new DirectionalLayout.LayoutConfig(600, 600); + button.setText(ResourceTable.String_size03); + } else { + button.setText("Item" + index); + } + layoutConfig.setMargins(10, 10, 10, 10); + button.setLayoutConfig(layoutConfig); + return button; + } +} \ No newline at end of file diff --git a/UI/CustomLayout/entry/src/main/resources/base/element/string.json b/UI/CustomLayout/entry/src/main/resources/base/element/string.json new file mode 100644 index 0000000000..7ac100b442 --- /dev/null +++ b/UI/CustomLayout/entry/src/main/resources/base/element/string.json @@ -0,0 +1,72 @@ +{ + "string": [ + { + "name": "entry_MainAbility", + "value": "CustomLayout" + }, + { + "name": "mainability_description", + "value": "Custom Layout Example" + }, + { + "name": "size01", + "value": "1080 * 200" + }, + { + "name": "size02", + "value": "500 * 100" + }, + { + "name": "size03", + "value": "600 * 600" + }, + { + "name": "item2", + "value": "Item2" + }, + { + "name": "item3", + "value": "Item3" + }, + { + "name": "item4", + "value": "Item4" + }, + { + "name": "item5", + "value": "Item5" + }, + { + "name": "item7", + "value": "Item7" + }, + { + "name": "item9", + "value": "Item9" + }, + { + "name": "item10", + "value": "Item10" + }, + { + "name": "item11", + "value": "Item11" + }, + { + "name": "item12", + "value": "Item12" + }, + { + "name": "item13", + "value": "Item13" + }, + { + "name": "item14", + "value": "Item14" + }, + { + "name": "item15", + "value": "Item15" + } + ] +} \ No newline at end of file diff --git a/UI/CustomLayout/entry/src/main/resources/base/media/icon.png b/UI/CustomLayout/entry/src/main/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c GIT binary patch literal 6790 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 literal 0 HcmV?d00001 diff --git a/UI/CustomLayout/settings.gradle b/UI/CustomLayout/settings.gradle new file mode 100644 index 0000000000..9aa1d209f7 --- /dev/null +++ b/UI/CustomLayout/settings.gradle @@ -0,0 +1 @@ +include ':entry' \ No newline at end of file -- Gitee