From f51d8f479204112484d7bc8fdeecceea2bfc566b Mon Sep 17 00:00:00 2001 From: tianlongdevcode Date: Tue, 28 Oct 2025 14:27:53 +0800 Subject: [PATCH] =?UTF-8?q?Fixed=20synchronize=20openharmony=20sample=20in?= =?UTF-8?q?clude=20EnvirommentProjet=E3=80=81EventProject=E3=80=81NdkNodeQ?= =?UTF-8?q?ueryOperate?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Issue: https://gitee.com/harmonyos_samples/guide-snippets/issues/ID3T9E Description: isues ID3T9E is synchronize openharmony sample Signed-off-by: chenbosongcode --- ArkUIKit/EnvirommentProjet/AppScope/app.json5 | 24 + .../resources/base/element/string.json | 8 + .../resources/base/media/background.png | Bin 0 -> 91942 bytes .../resources/base/media/foreground.png | Bin 0 -> 15325 bytes .../resources/base/media/layered_image.json | 7 + ArkUIKit/EnvirommentProjet/README_zh.md | 143 ++++ .../EnvirommentProjet/build-profile.json5 | 56 ++ ArkUIKit/EnvirommentProjet/code-linter.json5 | 46 ++ .../entry/build-profile.json5 | 47 ++ .../EnvirommentProjet/entry/hvigorfile.ts | 20 + .../entry/obfuscation-rules.txt | 23 + .../EnvirommentProjet/entry/oh-package.json5 | 24 + .../main/ets/entryability/EntryAbility.ets | 71 ++ .../entrybackupability/EntryBackupAbility.ets | 30 + .../entry/src/main/ets/pages/Index.ets | 39 + .../entry/src/main/module.json5 | 69 ++ .../main/resources/base/element/color.json | 8 + .../main/resources/base/element/float.json | 8 + .../main/resources/base/element/string.json | 19 + .../main/resources/base/media/background.png | Bin 0 -> 91942 bytes .../main/resources/base/media/foreground.png | Bin 0 -> 8805 bytes .../resources/base/media/layered_image.json | 7 + .../main/resources/base/media/startIcon.png | Bin 0 -> 20093 bytes .../resources/base/profile/backup_config.json | 3 + .../resources/base/profile/main_pages.json | 5 + .../main/resources/dark/element/color.json | 8 + .../entry/src/mock/mock-config.json5 | 16 + .../src/ohosTest/ets/test/Ability.test.ets | 49 ++ .../entry/src/ohosTest/ets/test/List.test.ets | 21 + .../src/ohosTest/ets/test/index.test.ets | 69 ++ .../entry/src/ohosTest/module.json5 | 30 + .../entry/src/test/List.test.ets | 19 + .../entry/src/test/LocalUnit.test.ets | 47 ++ .../hvigor/hvigor-config.json5 | 37 + ArkUIKit/EnvirommentProjet/hvigorfile.ts | 20 + ArkUIKit/EnvirommentProjet/oh-package.json5 | 24 + ArkUIKit/EnvirommentProjet/ohosTest.md | 7 + .../screenshots/device/image1.jpeg | Bin 0 -> 20507 bytes ArkUIKit/EventProject/AppScope/app.json5 | 25 + .../resources/base/element/string.json | 8 + .../resources/base/media/app_icon.png | Bin 0 -> 2777 bytes ArkUIKit/EventProject/README_zh.md | 149 ++++ ArkUIKit/EventProject/build-profile.json5 | 59 ++ ArkUIKit/EventProject/code-linter.json5 | 35 + .../EventProject/entry/build-profile.json5 | 43 ++ ArkUIKit/EventProject/entry/hvigorfile.ts | 6 + .../EventProject/entry/obfuscation-rules.txt | 23 + ArkUIKit/EventProject/entry/oh-package.json5 | 25 + ArkUIKit/EventProject/entry/ohosTest.md | 16 + .../entry/src/main/ets/common/Card.ets | 102 +++ .../entry/src/main/ets/common/Route.ets | 21 + .../entry/src/main/ets/common/resource.ets | 25 + .../main/ets/entryability/EntryAbility.ets | 57 ++ .../entrybackupability/EntryBackupAbility.ets | 27 + .../entry/src/main/ets/pages/Index.ets | 159 ++++ .../src/main/ets/pages/Touch/ClickEvent.ets | 53 ++ .../entry/src/main/ets/pages/Touch/Index.ets | 76 ++ .../src/main/ets/pages/Touch/TouchEvent.ets | 75 ++ .../src/main/ets/pages/device/HoverEffect.ets | 52 ++ .../entry/src/main/ets/pages/device/Index.ets | 103 +++ .../src/main/ets/pages/device/OnHover.ets | 51 ++ .../entry/src/main/ets/pages/device/OnKey.ets | 78 ++ .../ets/pages/device/OnKeyDistributeEvent.ets | 72 ++ .../src/main/ets/pages/device/OnKeyPreIme.ets | 55 ++ .../ets/pages/device/OnKeyPreImeCommit.ets | 67 ++ .../ets/pages/device/OnKeyPreventBubble.ets | 84 ++ .../src/main/ets/pages/device/OnMouse.ets | 81 ++ .../src/main/ets/pages/drag/DefaultDrag.ets | 207 +++++ .../entry/src/main/ets/pages/drag/Index.ets | 76 ++ .../src/main/ets/pages/drag/MoreDrag.ets | 132 ++++ .../ets/pages/drop/DropAnimationExample.ets | 103 +++ .../src/main/ets/pages/focus/DefaultFocus.ets | 88 +++ .../src/main/ets/pages/focus/FocusActive.ets | 38 + .../main/ets/pages/focus/FocusAndClick.ets | 56 ++ .../main/ets/pages/focus/FocusController.ets | 102 +++ .../src/main/ets/pages/focus/FocusOnClick.ets | 44 ++ .../main/ets/pages/focus/FocusPriority.ets | 50 ++ .../src/main/ets/pages/focus/FocusScopeId.ets | 76 ++ .../ets/pages/focus/FocusScopePriority.ets | 152 ++++ .../focus/FocusScopePriorityPrevious.ets | 35 + .../src/main/ets/pages/focus/FocusStyle.ets | 55 ++ .../main/ets/pages/focus/FocusTransfer.ets | 83 ++ .../pages/focus/FocusTraversalGuidelines.ets | 57 ++ .../src/main/ets/pages/focus/Focusable.ets | 114 +++ .../ets/pages/focus/FrojectAreaFocusFlex.ets | 44 ++ .../entry/src/main/ets/pages/focus/Index.ets | 246 ++++++ .../src/main/ets/pages/focus/NextFocus.ets | 54 ++ .../ets/pages/focus/OnFocusOnBlurEvents.ets | 70 ++ .../ets/pages/focus/ProjectionBasedFocus.ets | 44 ++ .../src/main/ets/pages/focus/RequestFocus.ets | 47 ++ .../src/main/ets/pages/focus/ScopeFocus.ets | 57 ++ .../src/main/ets/pages/focus/TabIndex.ets | 48 ++ .../main/ets/pages/focus/TabIndexFocus.ets | 45 ++ .../src/main/ets/pages/focus/TabStop.ets | 46 ++ .../src/main/ets/pages/focus/onFocusBlur.ets | 86 +++ .../ets/pages/gesturejudge/GestureJudge.ets | 171 +++++ .../src/main/ets/pages/gesturejudge/Index.ets | 69 ++ .../entry/src/main/ets/pages/grid/GridEts.ets | 198 +++++ .../main/ets/pages/groupgesture/Exclusive.ets | 57 ++ .../src/main/ets/pages/groupgesture/Index.ets | 84 ++ .../main/ets/pages/groupgesture/Parallel.ets | 57 ++ .../main/ets/pages/groupgesture/Sequence.ets | 93 +++ .../main/ets/pages/singlegesture/Index.ets | 129 ++++ .../pages/singlegesture/LongPressGesture.ets | 56 ++ .../pages/singlegesture/OnClickGesture.ets | 67 ++ .../singlegesture/PanCombinationGesture.ets | 95 +++ .../ets/pages/singlegesture/PanGesture.ets | 67 ++ .../ets/pages/singlegesture/PinchGesture.ets | 67 ++ .../pages/singlegesture/RotationGesture.ets | 66 ++ .../ets/pages/singlegesture/SwipeGesture.ets | 58 ++ .../ets/pages/singlegesture/TapGesture.ets | 51 ++ .../ets/pages/springloading/SpringLoading.ets | 151 ++++ .../EventProject/entry/src/main/module.json5 | 65 ++ .../main/resources/base/element/color.json | 8 + .../main/resources/base/element/float.json | 8 + .../main/resources/base/element/string.json | 596 +++++++++++++++ .../main/resources/base/media/background.png | Bin 0 -> 57364 bytes .../main/resources/base/media/foreground.png | Bin 0 -> 12430 bytes .../resources/base/media/layered_image.json | 7 + .../main/resources/base/media/startIcon.png | Bin 0 -> 20093 bytes .../resources/base/profile/backup_config.json | 3 + .../resources/base/profile/main_pages.json | 6 + .../main/resources/dark/element/color.json | 8 + .../EventProject/entry/src/main/syscap.json | 20 + .../entry/src/mock/mock-config.json5 | 17 + .../src/ohosTest/ets/test/Ability.test.ets | 50 ++ .../src/ohosTest/ets/test/Index.test.ets | 721 ++++++++++++++++++ .../entry/src/ohosTest/ets/test/List.test.ets | 22 + .../entry/src/ohosTest/module.json5 | 26 + .../entry/src/ohosTest/syscap.json | 20 + .../EventProject/entry/src/test/List.test.ets | 20 + .../entry/src/test/LocalUnit.test.ets | 48 ++ .../EventProject/hvigor/hvigor-config.json5 | 37 + ArkUIKit/EventProject/hvigorfile.ts | 6 + ArkUIKit/EventProject/oh-package.json5 | 25 + .../screenshots/device/image1.png | Bin 0 -> 50489 bytes .../screenshots/device/image2.png | Bin 0 -> 88462 bytes .../screenshots/device/image3.png | Bin 0 -> 39756 bytes .../NdkNodeQueryOperate/AppScope/app.json5 | 25 + .../resources/base/element/string.json | 8 + .../resources/base/media/background.png | Bin 0 -> 91942 bytes .../resources/base/media/foreground.png | Bin 0 -> 15325 bytes .../resources/base/media/layered_image.json | 7 + ArkUIKit/NdkNodeQueryOperate/README_zh.md | 168 ++++ .../NdkNodeQueryOperate/build-profile.json5 | 58 ++ .../NdkNodeQueryOperate/code-linter.json5 | 47 ++ .../entry/build-profile.json5 | 63 ++ .../NdkNodeQueryOperate/entry/hvigorfile.ts | 21 + .../entry/obfuscation-rules.txt | 23 + .../entry/oh-package-lock.json5 | 19 + .../entry/oh-package.json5 | 26 + .../entry/oh_modules/libentry.so/Index.d.ts | 21 + .../oh_modules/libentry.so/oh-package.json5 | 21 + .../entry/src/main/cpp/ArkUIBaseNode.h | 177 +++++ .../entry/src/main/cpp/ArkUINode.h | 81 ++ .../entry/src/main/cpp/Attribute_util.h | 57 ++ .../entry/src/main/cpp/CMakeLists.txt | 17 + .../entry/src/main/cpp/GetNodeByIdExample.h | 123 +++ .../entry/src/main/cpp/InquireUniqueId.cpp | 65 ++ .../entry/src/main/cpp/InquireUniqueId.h | 33 + .../entry/src/main/cpp/MoveToExample.h | 160 ++++ .../entry/src/main/cpp/NativeEntry.cpp | 98 +++ .../entry/src/main/cpp/NativeEntry.h | 78 ++ .../entry/src/main/cpp/NativeModule.h | 48 ++ .../entry/src/main/cpp/ShowSubcomponentInfo.h | 47 ++ .../entry/src/main/cpp/napi_init.cpp | 122 +++ .../src/main/cpp/types/libentry/Index.d.ts | 21 + .../main/cpp/types/libentry/oh-package.json5 | 21 + .../main/ets/entryability/EntryAbility.ets | 63 ++ .../entrybackupability/EntryBackupAbility.ets | 31 + .../entry/src/main/ets/pages/Attribute.ets | 60 ++ .../entry/src/main/ets/pages/FetchAndLoad.ets | 285 +++++++ .../entry/src/main/ets/pages/GetNodeById.ets | 40 + .../entry/src/main/ets/pages/Index.ets | 79 ++ .../src/main/ets/pages/InquireUniqueId.ets | 38 + .../entry/src/main/ets/pages/MoveTo.ets | 41 + .../entry/src/main/module.json5 | 65 ++ .../main/resources/base/element/color.json | 12 + .../main/resources/base/element/float.json | 8 + .../main/resources/base/element/string.json | 24 + .../main/resources/base/media/background.png | Bin 0 -> 91942 bytes .../main/resources/base/media/foreground.png | Bin 0 -> 8805 bytes .../resources/base/media/layered_image.json | 7 + .../main/resources/base/media/startIcon.png | Bin 0 -> 20093 bytes .../resources/base/profile/backup_config.json | 3 + .../resources/base/profile/main_pages.json | 10 + .../main/resources/dark/element/color.json | 8 + .../entry/src/mock/Libentry.mock.ets | 22 + .../entry/src/mock/mock-config.json5 | 20 + .../src/ohosTest/ets/test/Ability.test.ets | 50 ++ .../entry/src/ohosTest/ets/test/List.test.ets | 22 + .../ohosTest/ets/test/NodeInterface.test.ets | 217 ++++++ .../entry/src/ohosTest/module.json5 | 26 + .../entry/src/test/List.test.ets | 20 + .../entry/src/test/LocalUnit.test.ets | 48 ++ .../hvigor/hvigor-config.json5 | 38 + ArkUIKit/NdkNodeQueryOperate/hvigorfile.ts | 21 + ArkUIKit/NdkNodeQueryOperate/oh-package.json5 | 25 + ArkUIKit/NdkNodeQueryOperate/ohosTest.md | 7 + .../screenshot/Attribute.jpg | Bin 0 -> 41351 bytes .../screenshot/FetchAndLoad.jpg | Bin 0 -> 124549 bytes .../screenshot/GetNodeById.jpg | Bin 0 -> 33763 bytes .../screenshot/InquireUniqueId.jpg | Bin 0 -> 18626 bytes .../NdkNodeQueryOperate/screenshot/MoveTo.jpg | Bin 0 -> 29680 bytes .../NdkNodeQueryOperate/screenshot/index.jpg | Bin 0 -> 60697 bytes 205 files changed, 11080 insertions(+) create mode 100644 ArkUIKit/EnvirommentProjet/AppScope/app.json5 create mode 100644 ArkUIKit/EnvirommentProjet/AppScope/resources/base/element/string.json create mode 100644 ArkUIKit/EnvirommentProjet/AppScope/resources/base/media/background.png create mode 100644 ArkUIKit/EnvirommentProjet/AppScope/resources/base/media/foreground.png create mode 100644 ArkUIKit/EnvirommentProjet/AppScope/resources/base/media/layered_image.json create mode 100644 ArkUIKit/EnvirommentProjet/README_zh.md create mode 100644 ArkUIKit/EnvirommentProjet/build-profile.json5 create mode 100644 ArkUIKit/EnvirommentProjet/code-linter.json5 create mode 100644 ArkUIKit/EnvirommentProjet/entry/build-profile.json5 create mode 100644 ArkUIKit/EnvirommentProjet/entry/hvigorfile.ts create mode 100644 ArkUIKit/EnvirommentProjet/entry/obfuscation-rules.txt create mode 100644 ArkUIKit/EnvirommentProjet/entry/oh-package.json5 create mode 100644 ArkUIKit/EnvirommentProjet/entry/src/main/ets/entryability/EntryAbility.ets create mode 100644 ArkUIKit/EnvirommentProjet/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets create mode 100644 ArkUIKit/EnvirommentProjet/entry/src/main/ets/pages/Index.ets create mode 100644 ArkUIKit/EnvirommentProjet/entry/src/main/module.json5 create mode 100644 ArkUIKit/EnvirommentProjet/entry/src/main/resources/base/element/color.json create mode 100644 ArkUIKit/EnvirommentProjet/entry/src/main/resources/base/element/float.json create mode 100644 ArkUIKit/EnvirommentProjet/entry/src/main/resources/base/element/string.json create mode 100644 ArkUIKit/EnvirommentProjet/entry/src/main/resources/base/media/background.png create mode 100644 ArkUIKit/EnvirommentProjet/entry/src/main/resources/base/media/foreground.png create mode 100644 ArkUIKit/EnvirommentProjet/entry/src/main/resources/base/media/layered_image.json create mode 100644 ArkUIKit/EnvirommentProjet/entry/src/main/resources/base/media/startIcon.png create mode 100644 ArkUIKit/EnvirommentProjet/entry/src/main/resources/base/profile/backup_config.json create mode 100644 ArkUIKit/EnvirommentProjet/entry/src/main/resources/base/profile/main_pages.json create mode 100644 ArkUIKit/EnvirommentProjet/entry/src/main/resources/dark/element/color.json create mode 100644 ArkUIKit/EnvirommentProjet/entry/src/mock/mock-config.json5 create mode 100644 ArkUIKit/EnvirommentProjet/entry/src/ohosTest/ets/test/Ability.test.ets create mode 100644 ArkUIKit/EnvirommentProjet/entry/src/ohosTest/ets/test/List.test.ets create mode 100644 ArkUIKit/EnvirommentProjet/entry/src/ohosTest/ets/test/index.test.ets create mode 100644 ArkUIKit/EnvirommentProjet/entry/src/ohosTest/module.json5 create mode 100644 ArkUIKit/EnvirommentProjet/entry/src/test/List.test.ets create mode 100644 ArkUIKit/EnvirommentProjet/entry/src/test/LocalUnit.test.ets create mode 100644 ArkUIKit/EnvirommentProjet/hvigor/hvigor-config.json5 create mode 100644 ArkUIKit/EnvirommentProjet/hvigorfile.ts create mode 100644 ArkUIKit/EnvirommentProjet/oh-package.json5 create mode 100644 ArkUIKit/EnvirommentProjet/ohosTest.md create mode 100644 ArkUIKit/EnvirommentProjet/screenshots/device/image1.jpeg create mode 100644 ArkUIKit/EventProject/AppScope/app.json5 create mode 100644 ArkUIKit/EventProject/AppScope/resources/base/element/string.json create mode 100644 ArkUIKit/EventProject/AppScope/resources/base/media/app_icon.png create mode 100644 ArkUIKit/EventProject/README_zh.md create mode 100644 ArkUIKit/EventProject/build-profile.json5 create mode 100644 ArkUIKit/EventProject/code-linter.json5 create mode 100644 ArkUIKit/EventProject/entry/build-profile.json5 create mode 100644 ArkUIKit/EventProject/entry/hvigorfile.ts create mode 100644 ArkUIKit/EventProject/entry/obfuscation-rules.txt create mode 100644 ArkUIKit/EventProject/entry/oh-package.json5 create mode 100644 ArkUIKit/EventProject/entry/ohosTest.md create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/common/Card.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/common/Route.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/common/resource.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/entryability/EntryAbility.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/Index.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/Touch/ClickEvent.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/Touch/Index.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/Touch/TouchEvent.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/device/HoverEffect.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/device/Index.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/device/OnHover.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/device/OnKey.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/device/OnKeyDistributeEvent.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/device/OnKeyPreIme.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/device/OnKeyPreImeCommit.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/device/OnKeyPreventBubble.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/device/OnMouse.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/drag/DefaultDrag.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/drag/Index.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/drag/MoreDrag.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/drop/DropAnimationExample.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/focus/DefaultFocus.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusActive.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusAndClick.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusController.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusOnClick.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusPriority.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusScopeId.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusScopePriority.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusScopePriorityPrevious.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusStyle.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusTransfer.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusTraversalGuidelines.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/focus/Focusable.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FrojectAreaFocusFlex.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/focus/Index.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/focus/NextFocus.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/focus/OnFocusOnBlurEvents.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/focus/ProjectionBasedFocus.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/focus/RequestFocus.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/focus/ScopeFocus.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/focus/TabIndex.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/focus/TabIndexFocus.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/focus/TabStop.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/focus/onFocusBlur.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/gesturejudge/GestureJudge.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/gesturejudge/Index.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/grid/GridEts.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/groupgesture/Exclusive.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/groupgesture/Index.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/groupgesture/Parallel.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/groupgesture/Sequence.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/Index.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/LongPressGesture.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/OnClickGesture.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/PanCombinationGesture.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/PanGesture.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/PinchGesture.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/RotationGesture.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/SwipeGesture.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/TapGesture.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/ets/pages/springloading/SpringLoading.ets create mode 100644 ArkUIKit/EventProject/entry/src/main/module.json5 create mode 100644 ArkUIKit/EventProject/entry/src/main/resources/base/element/color.json create mode 100644 ArkUIKit/EventProject/entry/src/main/resources/base/element/float.json create mode 100644 ArkUIKit/EventProject/entry/src/main/resources/base/element/string.json create mode 100644 ArkUIKit/EventProject/entry/src/main/resources/base/media/background.png create mode 100644 ArkUIKit/EventProject/entry/src/main/resources/base/media/foreground.png create mode 100644 ArkUIKit/EventProject/entry/src/main/resources/base/media/layered_image.json create mode 100644 ArkUIKit/EventProject/entry/src/main/resources/base/media/startIcon.png create mode 100644 ArkUIKit/EventProject/entry/src/main/resources/base/profile/backup_config.json create mode 100644 ArkUIKit/EventProject/entry/src/main/resources/base/profile/main_pages.json create mode 100644 ArkUIKit/EventProject/entry/src/main/resources/dark/element/color.json create mode 100644 ArkUIKit/EventProject/entry/src/main/syscap.json create mode 100644 ArkUIKit/EventProject/entry/src/mock/mock-config.json5 create mode 100644 ArkUIKit/EventProject/entry/src/ohosTest/ets/test/Ability.test.ets create mode 100644 ArkUIKit/EventProject/entry/src/ohosTest/ets/test/Index.test.ets create mode 100644 ArkUIKit/EventProject/entry/src/ohosTest/ets/test/List.test.ets create mode 100644 ArkUIKit/EventProject/entry/src/ohosTest/module.json5 create mode 100644 ArkUIKit/EventProject/entry/src/ohosTest/syscap.json create mode 100644 ArkUIKit/EventProject/entry/src/test/List.test.ets create mode 100644 ArkUIKit/EventProject/entry/src/test/LocalUnit.test.ets create mode 100644 ArkUIKit/EventProject/hvigor/hvigor-config.json5 create mode 100644 ArkUIKit/EventProject/hvigorfile.ts create mode 100644 ArkUIKit/EventProject/oh-package.json5 create mode 100644 ArkUIKit/EventProject/screenshots/device/image1.png create mode 100644 ArkUIKit/EventProject/screenshots/device/image2.png create mode 100644 ArkUIKit/EventProject/screenshots/device/image3.png create mode 100644 ArkUIKit/NdkNodeQueryOperate/AppScope/app.json5 create mode 100644 ArkUIKit/NdkNodeQueryOperate/AppScope/resources/base/element/string.json create mode 100644 ArkUIKit/NdkNodeQueryOperate/AppScope/resources/base/media/background.png create mode 100644 ArkUIKit/NdkNodeQueryOperate/AppScope/resources/base/media/foreground.png create mode 100644 ArkUIKit/NdkNodeQueryOperate/AppScope/resources/base/media/layered_image.json create mode 100644 ArkUIKit/NdkNodeQueryOperate/README_zh.md create mode 100644 ArkUIKit/NdkNodeQueryOperate/build-profile.json5 create mode 100644 ArkUIKit/NdkNodeQueryOperate/code-linter.json5 create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/build-profile.json5 create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/hvigorfile.ts create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/obfuscation-rules.txt create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/oh-package-lock.json5 create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/oh-package.json5 create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/oh_modules/libentry.so/Index.d.ts create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/oh_modules/libentry.so/oh-package.json5 create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/ArkUIBaseNode.h create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/ArkUINode.h create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/Attribute_util.h create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/CMakeLists.txt create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/GetNodeByIdExample.h create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/InquireUniqueId.cpp create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/InquireUniqueId.h create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/MoveToExample.h create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/NativeEntry.cpp create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/NativeEntry.h create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/NativeModule.h create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/ShowSubcomponentInfo.h create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/napi_init.cpp create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/types/libentry/Index.d.ts create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/types/libentry/oh-package.json5 create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/entryability/EntryAbility.ets create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/pages/Attribute.ets create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/pages/FetchAndLoad.ets create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/pages/GetNodeById.ets create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/pages/Index.ets create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/pages/InquireUniqueId.ets create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/pages/MoveTo.ets create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/module.json5 create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/base/element/color.json create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/base/element/float.json create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/base/element/string.json create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/base/media/background.png create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/base/media/foreground.png create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/base/media/layered_image.json create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/base/media/startIcon.png create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/base/profile/backup_config.json create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/base/profile/main_pages.json create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/dark/element/color.json create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/mock/Libentry.mock.ets create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/mock/mock-config.json5 create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/ohosTest/ets/test/Ability.test.ets create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/ohosTest/ets/test/List.test.ets create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/ohosTest/ets/test/NodeInterface.test.ets create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/ohosTest/module.json5 create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/test/List.test.ets create mode 100644 ArkUIKit/NdkNodeQueryOperate/entry/src/test/LocalUnit.test.ets create mode 100644 ArkUIKit/NdkNodeQueryOperate/hvigor/hvigor-config.json5 create mode 100644 ArkUIKit/NdkNodeQueryOperate/hvigorfile.ts create mode 100644 ArkUIKit/NdkNodeQueryOperate/oh-package.json5 create mode 100644 ArkUIKit/NdkNodeQueryOperate/ohosTest.md create mode 100644 ArkUIKit/NdkNodeQueryOperate/screenshot/Attribute.jpg create mode 100644 ArkUIKit/NdkNodeQueryOperate/screenshot/FetchAndLoad.jpg create mode 100644 ArkUIKit/NdkNodeQueryOperate/screenshot/GetNodeById.jpg create mode 100644 ArkUIKit/NdkNodeQueryOperate/screenshot/InquireUniqueId.jpg create mode 100644 ArkUIKit/NdkNodeQueryOperate/screenshot/MoveTo.jpg create mode 100644 ArkUIKit/NdkNodeQueryOperate/screenshot/index.jpg diff --git a/ArkUIKit/EnvirommentProjet/AppScope/app.json5 b/ArkUIKit/EnvirommentProjet/AppScope/app.json5 new file mode 100644 index 00000000000..7ab752daeac --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/AppScope/app.json5 @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2025 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. + */ +{ + "app": { + "bundleName": "com.samples.envirommentprojet", + "vendor": "samples", + "versionCode": 1000000, + "versionName": "1.0.0", + "icon": "$media:layered_image", + "label": "$string:app_name" + } +} diff --git a/ArkUIKit/EnvirommentProjet/AppScope/resources/base/element/string.json b/ArkUIKit/EnvirommentProjet/AppScope/resources/base/element/string.json new file mode 100644 index 00000000000..955ec72bb11 --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/AppScope/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "app_name", + "value": "EnvirommentProjet" + } + ] +} diff --git a/ArkUIKit/EnvirommentProjet/AppScope/resources/base/media/background.png b/ArkUIKit/EnvirommentProjet/AppScope/resources/base/media/background.png new file mode 100644 index 0000000000000000000000000000000000000000..923f2b3f27e915d6871871deea0420eb45ce102f GIT binary patch literal 91942 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 M;JyCV_snDe2la%mzyJUM literal 0 HcmV?d00001 diff --git a/ArkUIKit/EnvirommentProjet/AppScope/resources/base/media/layered_image.json b/ArkUIKit/EnvirommentProjet/AppScope/resources/base/media/layered_image.json new file mode 100644 index 00000000000..fb49920440f --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/AppScope/resources/base/media/layered_image.json @@ -0,0 +1,7 @@ +{ + "layered-image": + { + "background" : "$media:background", + "foreground" : "$media:foreground" + } +} \ No newline at end of file diff --git a/ArkUIKit/EnvirommentProjet/README_zh.md b/ArkUIKit/EnvirommentProjet/README_zh.md new file mode 100644 index 00000000000..c6fe2e34a83 --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/README_zh.md @@ -0,0 +1,143 @@ +# ArkUI Environment:设备环境查询指南文档示例 + +### 介绍 + + +本示例通过使用[ArkUI指南文档](https://gitcode.com/openharmony/docs/tree/master/zh-cn/application-dev/ui)中各场景的开发示例,展示在工程中,帮助开发者更好地理解ArkUI提供的组件及组件属性并合理使用。该工程中展示的代码详细描述可查如下链接: + +1.[线性布局 (Column)](https://gitcode.com/openharmony/docs/blob/OpenHarmony-5.0.1-Release/zh-cn/application-dev/ui/arkts-layout-development-linear.md)。 +2.[文本显示 (Text/Span)](https://gitcode.com/openharmony/docs/blob/master/zh-cn/application-dev/ui/arkts-common-components-text-display.md) + +### 效果预览 + +![](screenshots/device/image1.jpeg) + +### 具体实现 +1. 基本功能与原理 + 核心作用:查询设备环境信息,使应用能根据运行环境动态调整行为 + 实现机制: + Environment 是 ArkUI 框架创建的单例对象 + 提供不可变的基本类型属性,反映应用运行时状态 + 通过 AppStorage 访问环境变量 + 主要特性:系统环境变化时自动更新,支持多种设备环境参数 +2. 支持的环境参数 + colorMode:颜色模式(ColorMode.LIGHT/DARK) + languageCode:系统语言代码(如 'zh'、'en') + layoutDirection:布局方向(LayoutDirectionction.LTR/RTL) + fontScale:字体缩放比例 + fontWeightScale:字体粗细比例 + accessibilityEnabled:是否启用屏幕阅读器辅助功能 +3. 使用方式与代码示例 + 将环境变量存储到 AppStorage: + Environment.envProp('languageCode', 'en'); + 在 UI 中访问环境参数: + @StorageProp('languageCode') languageCode: string = 'en'; + +build() { +Column() { +Text(`当前语言: ${this.languageCode}`) +} +} +在应用逻辑中使用: +const lang = AppStorage.prop('languageCode'); +if (lang.get() === 'en') { +console.info('Hello!'); +} + +### 项目结构 +``` +EnvirommentProjet +├─ AppScope +│ ├─ app.json5 +│ └─ resources +│ └─ base +│ ├─ element +│ │ └─ string.json +│ └─ media +│ ├─ background.png +│ ├─ foreground.png +│ └─ layered_image.json +├─ code-linter.json5 +├─ entry +│ ├─ hvigorfile.ts +│ ├─ obfuscation-rules.txt +│ ├─ oh-package.json5 +│ └─ src +│ ├─ main +│ │ ├─ ets +│ │ │ ├─ entryability +│ │ │ │ └─ EntryAbility.ets +│ │ │ ├─ entrybackupability +│ │ │ │ └─ EntryBackupAbility.ets +│ │ │ └─ pages +│ │ │ └─ Index.ets // 主页面 +│ │ ├─ module.json5 +│ │ └─ resources +│ │ ├─ base +│ │ │ ├─ element +│ │ │ │ ├─ color.json +│ │ │ │ ├─ float.json +│ │ │ │ └─ string.json +│ │ │ ├─ media +│ │ │ │ ├─ background.png +│ │ │ │ ├─ foreground.png +│ │ │ │ ├─ layered_image.json +│ │ │ │ └─ startIcon.png +│ │ │ └─ profile +│ │ │ ├─ backup_config.json +│ │ │ └─ main_pages.json +│ │ ├─ dark +│ │ │ └─ element +│ │ │ └─ color.json +│ │ └─ rawfile +│ ├─ mock +│ │ └─ mock-config.json5 +│ ├─ ohosTest +│ │ ├─ ets +│ │ │ └─ test +│ │ │ ├─ Ability.test.ets +│ │ │ └─ List.test.ets +│ │ └─ module.json5 +│ ├─ screenshots // 预览截图 +│ │ └─ device +│ │ └─ image1.jpeg +│ └─ test +│ ├─ List.test.ets +│ └─ LocalUnit.test.ets +├─ hvigor +│ └─ hvigor-config.json5 +├─ hvigorfile.ts +├─ oh-package-lock.json5 +├─ oh-package.json5 +└─ README.md + +``` + + +### 相关权限 + +不涉及。 + +### 依赖 + +不涉及。 + +### 约束与限制 + +.本示例仅支持标准系统上运行, 支持设备:RK3568。 + +2.本示例为Stage模型,支持API20版本SDK,版本号:6.0.0.33,镜像版本号:OpenHarmony_6.0.0.33。 + +3.本示例需要使用DevEco Studio 6.0.0 Canary1 (Build Version: 6.0.0.270, built on May 9, 2025)及以上版本才可编译运行。 + +### 下载 + +如需单独下载本工程,执行如下命令: + +```` +git init +git config core.sparsecheckout true +echo code/DocsSample/ArkUISample/EnvirommentProjet > .git/info/sparse-checkout +git remote add origin https://gitcode.com/openharmony/applications_app_samples.git +git pull origin master +```` diff --git a/ArkUIKit/EnvirommentProjet/build-profile.json5 b/ArkUIKit/EnvirommentProjet/build-profile.json5 new file mode 100644 index 00000000000..cb8429bb2d8 --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/build-profile.json5 @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2025 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. + */ +{ + "app": { + "products": [ + { + "name": "default", + "signingConfig": "default", + "compileSdkVersion": "6.0.0(20)", + "compatibleSdkVersion": "6.0.0(20)", + "targetSdkVersion": "6.0.0(20)", + "runtimeOS": "HarmonyOS", + "buildOption": { + "strictMode": { + "caseSensitiveCheck": true, + "useNormalizedOHMUrl": true + } + } + } + ], + "buildModeSet": [ + { + "name": "debug", + }, + { + "name": "release" + } + ] + }, + "modules": [ + { + "name": "entry", + "srcPath": "./entry", + "targets": [ + { + "name": "default", + "applyToProducts": [ + "default" + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/ArkUIKit/EnvirommentProjet/code-linter.json5 b/ArkUIKit/EnvirommentProjet/code-linter.json5 new file mode 100644 index 00000000000..5c4682f8164 --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/code-linter.json5 @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2025 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. + */ +{ + "files": [ + "**/*.ets" + ], + "ignore": [ + "**/src/ohosTest/**/*", + "**/src/test/**/*", + "**/src/mock/**/*", + "**/node_modules/**/*", + "**/oh_modules/**/*", + "**/build/**/*", + "**/.preview/**/*" + ], + "ruleSet": [ + "plugin:@performance/recommended", + "plugin:@typescript-eslint/recommended" + ], + "rules": { + "@security/no-unsafe-aes": "error", + "@security/no-unsafe-hash": "error", + "@security/no-unsafe-mac": "warn", + "@security/no-unsafe-dh": "error", + "@security/no-unsafe-dsa": "error", + "@security/no-unsafe-ecdsa": "error", + "@security/no-unsafe-rsa-encrypt": "error", + "@security/no-unsafe-rsa-sign": "error", + "@security/no-unsafe-rsa-key": "error", + "@security/no-unsafe-dsa-key": "error", + "@security/no-unsafe-dh-key": "error", + "@security/no-unsafe-3des": "error" + } +} \ No newline at end of file diff --git a/ArkUIKit/EnvirommentProjet/entry/build-profile.json5 b/ArkUIKit/EnvirommentProjet/entry/build-profile.json5 new file mode 100644 index 00000000000..9016faf39f8 --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/entry/build-profile.json5 @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2025 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. + */ +{ + "apiType": "stageMode", + "buildOption": { + "resOptions": { + "copyCodeResource": { + "enable": false + } + } + }, + "buildOptionSet": [ + { + "name": "release", + "arkOptions": { + "obfuscation": { + "ruleOptions": { + "enable": false, + "files": [ + "./obfuscation-rules.txt" + ] + } + } + } + }, + ], + "targets": [ + { + "name": "default" + }, + { + "name": "ohosTest", + } + ] +} \ No newline at end of file diff --git a/ArkUIKit/EnvirommentProjet/entry/hvigorfile.ts b/ArkUIKit/EnvirommentProjet/entry/hvigorfile.ts new file mode 100644 index 00000000000..f8b117a17af --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/entry/hvigorfile.ts @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2025 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. + */ +import { hapTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: hapTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins: [] /* Custom plugin to extend the functionality of Hvigor. */ +} \ No newline at end of file diff --git a/ArkUIKit/EnvirommentProjet/entry/obfuscation-rules.txt b/ArkUIKit/EnvirommentProjet/entry/obfuscation-rules.txt new file mode 100644 index 00000000000..272efb6ca3f --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/entry/obfuscation-rules.txt @@ -0,0 +1,23 @@ +# Define project specific obfuscation rules here. +# You can include the obfuscation configuration files in the current module's build-profile.json5. +# +# For more details, see +# https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5 + +# Obfuscation options: +# -disable-obfuscation: disable all obfuscations +# -enable-property-obfuscation: obfuscate the property names +# -enable-toplevel-obfuscation: obfuscate the names in the global scope +# -compact: remove unnecessary blank spaces and all line feeds +# -remove-log: remove all console.* statements +# -print-namecache: print the name cache that contains the mapping from the old names to new names +# -apply-namecache: reuse the given cache file + +# Keep options: +# -keep-property-name: specifies property names that you want to keep +# -keep-global-name: specifies names that you want to keep in the global scope + +-enable-property-obfuscation +-enable-toplevel-obfuscation +-enable-filename-obfuscation +-enable-export-obfuscation \ No newline at end of file diff --git a/ArkUIKit/EnvirommentProjet/entry/oh-package.json5 b/ArkUIKit/EnvirommentProjet/entry/oh-package.json5 new file mode 100644 index 00000000000..10cda399b0a --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/entry/oh-package.json5 @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2025 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. + */ +{ + "name": "entry", + "version": "1.0.0", + "description": "Please describe the basic information.", + "main": "", + "author": "", + "license": "", + "dependencies": {} +} + diff --git a/ArkUIKit/EnvirommentProjet/entry/src/main/ets/entryability/EntryAbility.ets b/ArkUIKit/EnvirommentProjet/entry/src/main/ets/entryability/EntryAbility.ets new file mode 100644 index 00000000000..c6b16c02a34 --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/entry/src/main/ets/entryability/EntryAbility.ets @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2025 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. + */ +import { AbilityConstant, ConfigurationConstant, UIAbility, Want } from '@kit.AbilityKit'; +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { window } from '@kit.ArkUI'; + +const DOMAIN = 0x0000; + +export default class EntryAbility extends UIAbility { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { + try { + this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET); + } catch (err) { + hilog.error(DOMAIN, 'testTag', 'Failed to set colorMode. Cause: %{public}s', JSON.stringify(err)); + } + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onCreate'); + } + + onDestroy(): void { + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onDestroy'); + } + + onWindowStageCreate(windowStage: window.WindowStage): void { + // Main window is created, set main page for this ability + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onWindowStageCreate'); + + windowStage.loadContent('pages/Index', (err) => { + // [Start Environment和UIContext相关联] + let window = windowStage.getMainWindow(); + window.then(window => { + let uiContext = window.getUIContext(); + uiContext.runScopedTask(() => { + Environment.envProp('languageCode', 'en'); + }); + }); + // [End Environment和UIContext相关联] + if (err.code) { + hilog.error(DOMAIN, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err)); + return; + } + hilog.info(DOMAIN, 'testTag', 'Succeeded in loading the content.'); + }); + } + + onWindowStageDestroy(): void { + // Main window is destroyed, release UI related resources + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onWindowStageDestroy'); + } + + onForeground(): void { + // Ability has brought to foreground + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onForeground'); + } + + onBackground(): void { + // Ability has back to background + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onBackground'); + } +} \ No newline at end of file diff --git a/ArkUIKit/EnvirommentProjet/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets b/ArkUIKit/EnvirommentProjet/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets new file mode 100644 index 00000000000..4ce6449f0e9 --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2025 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. + */ +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { BackupExtensionAbility, BundleVersion } from '@kit.CoreFileKit'; + +const DOMAIN = 0x0000; + +export default class EntryBackupAbility extends BackupExtensionAbility { + async onBackup() { + hilog.info(DOMAIN, 'testTag', 'onBackup ok'); + await Promise.resolve(); + } + + async onRestore(bundleVersion: BundleVersion) { + hilog.info(DOMAIN, 'testTag', 'onRestore ok %{public}s', JSON.stringify(bundleVersion)); + await Promise.resolve(); + } +} \ No newline at end of file diff --git a/ArkUIKit/EnvirommentProjet/entry/src/main/ets/pages/Index.ets b/ArkUIKit/EnvirommentProjet/entry/src/main/ets/pages/Index.ets new file mode 100644 index 00000000000..0a5ad665f45 --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/entry/src/main/ets/pages/Index.ets @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start languageCode] +// 将设备languageCode存入AppStorage中 +Environment.envProp('languageCode', 'en'); + +@Entry +@Component +struct Index { + @StorageProp('languageCode') languageCode: string = 'en'; + + build() { + Row() { + Column() { + // 输出当前设备的languageCode + Text(this.languageCode) + if (this.languageCode === 'zh'){ + Text($r('app.string.EntryAbility_title1')) + }else { + Text('Hello!') + } + } + } + } +} +// [End languageCode] \ No newline at end of file diff --git a/ArkUIKit/EnvirommentProjet/entry/src/main/module.json5 b/ArkUIKit/EnvirommentProjet/entry/src/main/module.json5 new file mode 100644 index 00000000000..d714cc3677d --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/entry/src/main/module.json5 @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2025 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. + */ +{ + "module": { + "name": "entry", + "type": "entry", + "description": "$string:module_desc", + "mainElement": "EntryAbility", + "deviceTypes": [ + "phone", + "tablet", + "2in1", + "car", + "wearable", + "tv" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:main_pages", + "abilities": [ + { + "name": "EntryAbility", + "srcEntry": "./ets/entryability/EntryAbility.ets", + "description": "$string:EntryAbility_desc", + "icon": "$media:layered_image", + "label": "$string:EntryAbility_label", + "startWindowIcon": "$media:startIcon", + "startWindowBackground": "$color:start_window_background", + "exported": true, + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "ohos.want.action.home" + ] + } + ] + } + ], + "extensionAbilities": [ + { + "name": "EntryBackupAbility", + "srcEntry": "./ets/entrybackupability/EntryBackupAbility.ets", + "type": "backup", + "exported": false, + "metadata": [ + { + "name": "ohos.extension.backup", + "resource": "$profile:backup_config" + } + ], + } + ] + } +} \ No newline at end of file diff --git a/ArkUIKit/EnvirommentProjet/entry/src/main/resources/base/element/color.json b/ArkUIKit/EnvirommentProjet/entry/src/main/resources/base/element/color.json new file mode 100644 index 00000000000..3c712962da3 --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/entry/src/main/resources/base/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git a/ArkUIKit/EnvirommentProjet/entry/src/main/resources/base/element/float.json b/ArkUIKit/EnvirommentProjet/entry/src/main/resources/base/element/float.json new file mode 100644 index 00000000000..33ea22304f9 --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/entry/src/main/resources/base/element/float.json @@ -0,0 +1,8 @@ +{ + "float": [ + { + "name": "page_text_font_size", + "value": "50fp" + } + ] +} diff --git a/ArkUIKit/EnvirommentProjet/entry/src/main/resources/base/element/string.json b/ArkUIKit/EnvirommentProjet/entry/src/main/resources/base/element/string.json new file mode 100644 index 00000000000..a68f98d985a --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/entry/src/main/resources/base/element/string.json @@ -0,0 +1,19 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "module description" + }, + { + "name": "EntryAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "label" + },{ + "name": "EntryAbility_title1", + "value": "当前语言是中文" + } + ] +} \ No newline at end of file diff --git a/ArkUIKit/EnvirommentProjet/entry/src/main/resources/base/media/background.png b/ArkUIKit/EnvirommentProjet/entry/src/main/resources/base/media/background.png new file mode 100644 index 0000000000000000000000000000000000000000..923f2b3f27e915d6871871deea0420eb45ce102f GIT binary patch literal 91942 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

c)ijgxDm}8EsRXFt3h@+Ufr7@DN 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 literal 0 HcmV?d00001 diff --git a/ArkUIKit/EnvirommentProjet/entry/src/main/resources/base/profile/backup_config.json b/ArkUIKit/EnvirommentProjet/entry/src/main/resources/base/profile/backup_config.json new file mode 100644 index 00000000000..78f40ae7c49 --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/entry/src/main/resources/base/profile/backup_config.json @@ -0,0 +1,3 @@ +{ + "allowToBackupRestore": true +} \ No newline at end of file diff --git a/ArkUIKit/EnvirommentProjet/entry/src/main/resources/base/profile/main_pages.json b/ArkUIKit/EnvirommentProjet/entry/src/main/resources/base/profile/main_pages.json new file mode 100644 index 00000000000..1898d94f58d --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/entry/src/main/resources/base/profile/main_pages.json @@ -0,0 +1,5 @@ +{ + "src": [ + "pages/Index" + ] +} diff --git a/ArkUIKit/EnvirommentProjet/entry/src/main/resources/dark/element/color.json b/ArkUIKit/EnvirommentProjet/entry/src/main/resources/dark/element/color.json new file mode 100644 index 00000000000..79b11c2747a --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/entry/src/main/resources/dark/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#000000" + } + ] +} \ No newline at end of file diff --git a/ArkUIKit/EnvirommentProjet/entry/src/mock/mock-config.json5 b/ArkUIKit/EnvirommentProjet/entry/src/mock/mock-config.json5 new file mode 100644 index 00000000000..323d1d611fe --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/entry/src/mock/mock-config.json5 @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2025 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. + */ +{ +} \ No newline at end of file diff --git a/ArkUIKit/EnvirommentProjet/entry/src/ohosTest/ets/test/Ability.test.ets b/ArkUIKit/EnvirommentProjet/entry/src/ohosTest/ets/test/Ability.test.ets new file mode 100644 index 00000000000..7f30942b815 --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/entry/src/ohosTest/ets/test/Ability.test.ets @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2025 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. + */ +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; + +export default function abilityTest() { + describe('ActsAbilityTest', () => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }) + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }) + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }) + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }) + it('assertContain', 0, () => { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + hilog.info(0x0000, 'testTag', '%{public}s', 'it begin'); + let a = 'abc'; + let b = 'b'; + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. + expect(a).assertContain(b); + expect(a).assertEqual(a); + }) + }) +} \ No newline at end of file diff --git a/ArkUIKit/EnvirommentProjet/entry/src/ohosTest/ets/test/List.test.ets b/ArkUIKit/EnvirommentProjet/entry/src/ohosTest/ets/test/List.test.ets new file mode 100644 index 00000000000..d95118bb8d1 --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/entry/src/ohosTest/ets/test/List.test.ets @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2025 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. + */ +import abilityTest from './Ability.test'; +import IndexTest from './index.test'; + +export default function testsuite() { + abilityTest(); + IndexTest() +} \ No newline at end of file diff --git a/ArkUIKit/EnvirommentProjet/entry/src/ohosTest/ets/test/index.test.ets b/ArkUIKit/EnvirommentProjet/entry/src/ohosTest/ets/test/index.test.ets new file mode 100644 index 00000000000..36bf1fa04c9 --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/entry/src/ohosTest/ets/test/index.test.ets @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2025 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. + */ +import { beforeAll, describe, expect, it } from "@ohos/hypium"; +import { abilityDelegatorRegistry, Driver, MatchPattern, ON } from "@kit.TestKit"; +import { UIAbility, Want } from "@kit.AbilityKit"; + +const delegator: abilityDelegatorRegistry.AbilityDelegator = abilityDelegatorRegistry.getAbilityDelegator(); +const bundleName = abilityDelegatorRegistry.getArguments().bundleName; +let abilityDelegator: abilityDelegatorRegistry.AbilityDelegator; +abilityDelegator = abilityDelegatorRegistry.getAbilityDelegator(); +let want: Want; + + + +export default function IndexTest(){ + describe('IndexTest', () => { + + beforeAll(async () => { + want = { + bundleName: bundleName, + abilityName: 'EntryAbility' + }; + await delegator.startAbility(want); + await sleep(2000); + const ability: UIAbility = await delegator.getCurrentTopAbility(); + expect(ability.context.abilityInfo.name).assertEqual('EntryAbility'); + }) + it("Index_Start", 0, async (done: Function) => { + try { + const want: Want = { + bundleName: bundleName, + abilityName: 'IndexAbility' + }; + + // 启动 IndexAbility + await delegator.startAbility(want); + await sleep(2000); + + const ability: UIAbility = await delegator.getCurrentTopAbility(); + expect(ability.context.abilityInfo.name).assertEqual('IndexAbility'); + + done(); + } catch (error) { + console.error("Index test failed:", error); + done(); + } + }); + }) +} + +function getResourceString(arg0: Resource) { + throw new Error("Function not implemented."); +} + +function sleep(ms: number): Promise { + return new Promise(resolve => setTimeout(resolve, ms)); +} diff --git a/ArkUIKit/EnvirommentProjet/entry/src/ohosTest/module.json5 b/ArkUIKit/EnvirommentProjet/entry/src/ohosTest/module.json5 new file mode 100644 index 00000000000..240f81ea646 --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/entry/src/ohosTest/module.json5 @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2025 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. + */ +{ + "module": { + "name": "entry_test", + "type": "feature", + "deviceTypes": [ + "phone", + "tablet", + "2in1", + "car", + "wearable", + "tv" + ], + "deliveryWithInstall": true, + "installationFree": false + } +} diff --git a/ArkUIKit/EnvirommentProjet/entry/src/test/List.test.ets b/ArkUIKit/EnvirommentProjet/entry/src/test/List.test.ets new file mode 100644 index 00000000000..a60c87c5cbb --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/entry/src/test/List.test.ets @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2025 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. + */ +import localUnitTest from './LocalUnit.test'; + +export default function testsuite() { + localUnitTest(); +} \ No newline at end of file diff --git a/ArkUIKit/EnvirommentProjet/entry/src/test/LocalUnit.test.ets b/ArkUIKit/EnvirommentProjet/entry/src/test/LocalUnit.test.ets new file mode 100644 index 00000000000..841bfd77e56 --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/entry/src/test/LocalUnit.test.ets @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2025 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. + */ +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; + +export default function localUnitTest() { + describe('localUnitTest', () => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }); + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }); + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }); + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }); + it('assertContain', 0, () => { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + let a = 'abc'; + let b = 'b'; + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. + expect(a).assertContain(b); + expect(a).assertEqual(a); + }); + }); +} \ No newline at end of file diff --git a/ArkUIKit/EnvirommentProjet/hvigor/hvigor-config.json5 b/ArkUIKit/EnvirommentProjet/hvigor/hvigor-config.json5 new file mode 100644 index 00000000000..3b057578a1b --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/hvigor/hvigor-config.json5 @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2025 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. + */ +{ + "modelVersion": "6.0.0", + "dependencies": { + }, + "execution": { + // "analyze": "normal", /* Define the build analyze mode. Value: [ "normal" | "advanced" | "ultrafine" | false ]. Default: "normal" */ + // "daemon": true, /* Enable daemon compilation. Value: [ true | false ]. Default: true */ + // "incremental": true, /* Enable incremental compilation. Value: [ true | false ]. Default: true */ + // "parallel": true, /* Enable parallel compilation. Value: [ true | false ]. Default: true */ + // "typeCheck": false, /* Enable typeCheck. Value: [ true | false ]. Default: false */ + // "optimizationStrategy": "memory" /* Define the optimization strategy. Value: [ "memory" | "performance" ]. Default: "memory" */ + }, + "logging": { + // "level": "info" /* Define the log level. Value: [ "debug" | "info" | "warn" | "error" ]. Default: "info" */ + }, + "debugging": { + // "stacktrace": false /* Disable stacktrace compilation. Value: [ true | false ]. Default: false */ + }, + "nodeOptions": { + // "maxOldSpaceSize": 8192 /* Enable nodeOptions maxOldSpaceSize compilation. Unit M. Used for the daemon process. Default: 8192*/ + // "exposeGC": true /* Enable to trigger garbage collection explicitly. Default: true*/ + } +} diff --git a/ArkUIKit/EnvirommentProjet/hvigorfile.ts b/ArkUIKit/EnvirommentProjet/hvigorfile.ts new file mode 100644 index 00000000000..ae9086af358 --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/hvigorfile.ts @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2025 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. + */ +import { appTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: appTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins: [] /* Custom plugin to extend the functionality of Hvigor. */ +} \ No newline at end of file diff --git a/ArkUIKit/EnvirommentProjet/oh-package.json5 b/ArkUIKit/EnvirommentProjet/oh-package.json5 new file mode 100644 index 00000000000..837c0ff9f35 --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/oh-package.json5 @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2025 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. + */ +{ + "modelVersion": "6.0.0", + "description": "Please describe the basic information.", + "dependencies": { + }, + "devDependencies": { + "@ohos/hypium": "1.0.24", + "@ohos/hamock": "1.0.0" + } +} diff --git a/ArkUIKit/EnvirommentProjet/ohosTest.md b/ArkUIKit/EnvirommentProjet/ohosTest.md new file mode 100644 index 00000000000..d3b4aca2aa6 --- /dev/null +++ b/ArkUIKit/EnvirommentProjet/ohosTest.md @@ -0,0 +1,7 @@ +# FormHost 测试用例归档 +## 用例表 + + +| 测试功能 | 预置条件 | 输入 | 预期输出 |是否自动 | 测试结果 +|------|----|------|-----|------|------ +| 拉起应用 | 设备正常运行 | | 成功拉起应用 | 是 | Pass | \ No newline at end of file diff --git a/ArkUIKit/EnvirommentProjet/screenshots/device/image1.jpeg b/ArkUIKit/EnvirommentProjet/screenshots/device/image1.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..2e28aa1908ce180de49a25a79b53bb6797d8426e GIT binary patch literal 20507 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 Pw;}(YNd7a|#!dVa=1L?+ literal 0 HcmV?d00001 diff --git a/ArkUIKit/EventProject/AppScope/app.json5 b/ArkUIKit/EventProject/AppScope/app.json5 new file mode 100644 index 00000000000..a3ecaff149f --- /dev/null +++ b/ArkUIKit/EventProject/AppScope/app.json5 @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2025 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. + */ + +{ + "app": { + "bundleName": "com.samples.eventproject", + "vendor": "example", + "versionCode": 1000000, + "versionName": "1.0.0", + "icon": "$media:app_icon", + "label": "$string:app_name" + } +} diff --git a/ArkUIKit/EventProject/AppScope/resources/base/element/string.json b/ArkUIKit/EventProject/AppScope/resources/base/element/string.json new file mode 100644 index 00000000000..583c3a07c4c --- /dev/null +++ b/ArkUIKit/EventProject/AppScope/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "app_name", + "value": "EventProject" + } + ] +} diff --git a/ArkUIKit/EventProject/AppScope/resources/base/media/app_icon.png b/ArkUIKit/EventProject/AppScope/resources/base/media/app_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a39445dc87828b76fed6d2ec470dd455c45319e3 GIT binary patch literal 2777 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 literal 0 HcmV?d00001 diff --git a/ArkUIKit/EventProject/README_zh.md b/ArkUIKit/EventProject/README_zh.md new file mode 100644 index 00000000000..71cebf53fbe --- /dev/null +++ b/ArkUIKit/EventProject/README_zh.md @@ -0,0 +1,149 @@ +# ArkUI使用支持交互事件指南文档示例 + +### 介绍 + +本示例通过使用[ArkUI指南文档](https://gitCode.com/openharmony/docs/tree/master/zh-cn/application-dev/ui)中各场景的开发示例,展示在工程中,帮助开发者更好地理解ArkUI提供的组件及组件属性并合理使用。该工程中展示的代码详细描述可查如下链接: + +1. [触屏事件](https://gitee.com/openharmony/docs/blob/OpenHarmony-5.0.1-Release/zh-cn/application-dev/ui/arkts-common-events-touch-screen-event.md) +2. [键鼠事件](https://gitee.com/openharmony/docs/blob/OpenHarmony-5.0.1-Release/zh-cn/application-dev/ui/arkts-common-events-device-input-event.md) +3. [焦点事件](https://gitee.com/openharmony/docs/blob/OpenHarmony-5.0.1-Release/zh-cn/application-dev/ui/arkts-common-events-focus-event.md) +4. [拖拽事件](https://gitee.com/openharmony/docs/blob/OpenHarmony-5.0.1-Release/zh-cn/application-dev/ui/arkts-common-events-drag-event.md) +5. [单一手势](https://gitee.com/openharmony/docs/blob/OpenHarmony-5.0.1-Release/zh-cn/application-dev/ui/arkts-gesture-events-single-gesture.md) +6. [组合手势](https://gitee.com/openharmony/docs/blob/OpenHarmony-5.0.1-Release/zh-cn/application-dev/ui/arkts-gesture-events-combined-gestures.md) +7. [手势拦截](https://gitee.com/openharmony/docs/blob/OpenHarmony-5.0.1-Release/zh-cn/application-dev/ui/arkts-gesture-events-gesture-judge.md) +8. [统一拖拽](https://gitcode.com/openharmony/applications_app_samples/tree/master/code/DocsSample/ArkUISample/EventProject) +### 效果预览 + +| 首页 | 交互类组件目录 | 单一手势示例 | +|------------------------------------|------------------------------------|------------------------------------| +| ![](screenshots/device/image1.png) | ![](screenshots/device/image2.png) | ![](screenshots/device/image3.png) | + +### 使用说明 + +1. 在主界面,可以点击对应卡片,选择需要参考的组件示例。 + +2. 在组件目录选择详细的示例参考。 + +3. 进入示例界面,查看参考示例。 + +4. 通过自动测试框架可进行测试及维护。 + +### 工程目录 + +``` +entry/src/main/ets/ +|---entryability +|---pages +| |---device //键鼠事件 +| | |---HoverEffect.ets +| | |---OnHover.ets +| | |---OnKey.ets +| | |---OnKeyPreIme.ets +| | |---OnMouse.ets +| | |---Index.ets +| |---focus //焦点事件 +| | |---DefaultFocus.ets +| | |---Focusable.ets +| | |---FocusActive.ets +| | |---FocusAndClick.ets +| | |---FocusController.ets +| | |---FocusOnClick.ets +| | |---FocusPriority.ets +| | |---FocusScopeId.ets +| | |---FocusScopePriority.ets +| | |---FocusScopePriorityPrevious.ets +| | |---FocusStyle.ets +| | |---FocusTransfer.ets +| | |---FocusTraversalGuidelines.ets +| | |---FrojectAreaFocusFlex.ets +| | |---Index.ets +| | |---NextFocus.ets +| | |---onFocusBlur.ets +| | |---OnFocusOnBlurEvents.ets +| | |---ProjectionBasedFocus.ets +| | |---RequestFocus.ets +| | |---ScopeFocus.ets +| | |---TabIndex.ets +| | |---TabIndexFocus.ets +| | |---TabStop.ets +| |---drag //拖拽事件 +| | |---DefaultDrag.ets +| | |---Index.ets +| | |---MoreDrag.ets +| |---gesturejudge //手势拦截 +| | |---Index.ets +| | |---GestureJudge.ets +| |---singlegesture //单一手势 +| | |---LongPressGesture.ets +| | |---PanGesture.ets +| | |---Index.ets +| | |---PinchGesture.ets +| | |---RotationGesture.ets +| | |---SwipeGesture.ets +| | |---TapGesture.ets +| | |---OnClickGesture.ets +| | |---PanCombinationGesture.ets +| |---Touch //触屏事件 +| | |---ClickEvent.ets +| | |---Index.ets +| | |---TouchEvent.ets +| |---groupgesture //组合手势 +| | |---Exclusive.ets +| | |---Index.ets +| | |---Parallel.ets +| | |---Sequence.ets +|---pages +| |---Index.ets // 应用主页面 +entry/src/ohosTest/ +|---ets +| |---index.test.ets // 示例代码测试代码 +``` + +### 具体实现 +<<<<<<< TJS + +1、选择目标组件 +确定要在哪个 UI 组件上绑定手势(如 Column、Text、Image 等)。 +调用 .gesture() 方法 +使用 .gesture(Gesture) 方法将手势绑定到组件上。 +2、创建手势对象 +调用对应的手势构造函数,如 TapGesture()、PanGesture() 等,可传入参数配置行为。 +注册事件回调 +通过 .onAction()、.onActionStart()、.onActionUpdate()、.onActionEnd() 等方法监听手势状态变化。 +3、更新状态或执行逻辑 +在回调中修改 @State 变量、触发动画、调用函数等。 + +======= +焦点:指向当前应用界面上唯一的一个可交互元素,当用户使用键盘、电视遥控器、车机摇杆/旋钮等非指向性输入设备与应用程序进行间接交互时,基于焦点的导航和交互是重要的输入手段。 +焦点链:在应用的组件树形结构中,当一个组件获得焦点时,从根节点到该组件节点的整条路径上的所有节点都会处于焦点状态,形成一条连续的焦点链。 +走焦:指焦点在应用内的组件之间转移的行为。这一过程对用户是透明的,但开发者可以通过监听onFocus(焦点获取)和onBlur(焦点失去)事件来捕捉这些变化。关于走焦的具体方式和规则,详见走焦规范。 +焦点激活态:焦点激活是用来显示当前获焦组件焦点框的视觉样式。 +焦点传递规则:焦点传递是指当用户激活应用焦点系统时,焦点如何从根节点逐级向下传递到具体组件的过程。 +>>>>>>> master +### 相关权限 + +不涉及。 + +### 依赖 + +不涉及。 + +### 约束与限制 + +1.本示例仅支持标准系统上运行, 支持设备:RK3568。 + +2.本示例为Stage模型,支持API20版本SDK,版本号:6.0.0.33,镜像版本号:OpenHarmony_6.0.0.33。 + +3.本示例需要使用DevEco Studio 6.0.0 Canary1 (Build Version: 6.0.0.270, built on May 9, 2025)及以上版本才可编译运行。 + +### 下载 + +如需单独下载本工程,执行如下命令: + +```` +git init +git config core.sparsecheckout true +echo code/DocsSample/ArkUISample/EventProject > .git/info/sparse-checkout +git remote add origin https://gitcode.com/openharmony/applications_app_samples.git +git pull origin master +```` \ No newline at end of file diff --git a/ArkUIKit/EventProject/build-profile.json5 b/ArkUIKit/EventProject/build-profile.json5 new file mode 100644 index 00000000000..9daac2c8f9e --- /dev/null +++ b/ArkUIKit/EventProject/build-profile.json5 @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2025 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. + */ + +{ + "app": { + "signingConfigs": [ + ], + "products": [ + { + "name": "default", + "signingConfig": "default", + "compileSdkVersion": "6.0.0(20)", + "compatibleSdkVersion": "6.0.0(20)", + "targetSdkVersion": "6.0.0(20)", + "runtimeOS": "HarmonyOS", + "buildOption": { + "strictMode": { + "caseSensitiveCheck": true, + "useNormalizedOHMUrl": true + } + } + } + ], + "buildModeSet": [ + { + "name": "debug", + }, + { + "name": "release" + } + ] + }, + "modules": [ + { + "name": "entry", + "srcPath": "./entry", + "targets": [ + { + "name": "default", + "applyToProducts": [ + "default" + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/code-linter.json5 b/ArkUIKit/EventProject/code-linter.json5 new file mode 100644 index 00000000000..28586467ee7 --- /dev/null +++ b/ArkUIKit/EventProject/code-linter.json5 @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2025 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. + */ + +{ + "files": [ + "**/*.ets" + ], + "ignore": [ + "**/src/ohosTest/**/*", + "**/src/test/**/*", + "**/src/mock/**/*", + "**/node_modules/**/*", + "**/oh_modules/**/*", + "**/build/**/*", + "**/.preview/**/*" + ], + "ruleSet": [ + "plugin:@performance/recommended", + "plugin:@typescript-eslint/recommended" + ], + "rules": { + } +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/build-profile.json5 b/ArkUIKit/EventProject/entry/build-profile.json5 new file mode 100644 index 00000000000..e7569e3056e --- /dev/null +++ b/ArkUIKit/EventProject/entry/build-profile.json5 @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2025 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. + */ + +{ + "apiType": "stageMode", + "buildOption": { + }, + "buildOptionSet": [ + { + "name": "release", + "arkOptions": { + "obfuscation": { + "ruleOptions": { + "enable": false, + "files": [ + "./obfuscation-rules.txt" + ] + } + } + } + }, + ], + "targets": [ + { + "name": "default" + }, + { + "name": "ohosTest", + } + ] +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/hvigorfile.ts b/ArkUIKit/EventProject/entry/hvigorfile.ts new file mode 100644 index 00000000000..c6edcd90486 --- /dev/null +++ b/ArkUIKit/EventProject/entry/hvigorfile.ts @@ -0,0 +1,6 @@ +import { hapTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: hapTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} diff --git a/ArkUIKit/EventProject/entry/obfuscation-rules.txt b/ArkUIKit/EventProject/entry/obfuscation-rules.txt new file mode 100644 index 00000000000..272efb6ca3f --- /dev/null +++ b/ArkUIKit/EventProject/entry/obfuscation-rules.txt @@ -0,0 +1,23 @@ +# Define project specific obfuscation rules here. +# You can include the obfuscation configuration files in the current module's build-profile.json5. +# +# For more details, see +# https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5 + +# Obfuscation options: +# -disable-obfuscation: disable all obfuscations +# -enable-property-obfuscation: obfuscate the property names +# -enable-toplevel-obfuscation: obfuscate the names in the global scope +# -compact: remove unnecessary blank spaces and all line feeds +# -remove-log: remove all console.* statements +# -print-namecache: print the name cache that contains the mapping from the old names to new names +# -apply-namecache: reuse the given cache file + +# Keep options: +# -keep-property-name: specifies property names that you want to keep +# -keep-global-name: specifies names that you want to keep in the global scope + +-enable-property-obfuscation +-enable-toplevel-obfuscation +-enable-filename-obfuscation +-enable-export-obfuscation \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/oh-package.json5 b/ArkUIKit/EventProject/entry/oh-package.json5 new file mode 100644 index 00000000000..c9cb6c81748 --- /dev/null +++ b/ArkUIKit/EventProject/entry/oh-package.json5 @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2025 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. + */ + +{ + "name": "entry", + "version": "1.0.0", + "description": "Please describe the basic information.", + "main": "", + "author": "", + "license": "", + "dependencies": {} +} + diff --git a/ArkUIKit/EventProject/entry/ohosTest.md b/ArkUIKit/EventProject/entry/ohosTest.md new file mode 100644 index 00000000000..d904766793b --- /dev/null +++ b/ArkUIKit/EventProject/entry/ohosTest.md @@ -0,0 +1,16 @@ +| 测试功能 | 预置条件 | 输入 | 预期输出 | 测试结果 | +| | ------------ | ---------------------- | --------------------------- | -------- | +| 首页加载测试 | 设备正常运行 | 验证基础元素渲染 | 检查标题和列表组件 | Pass | +| 子组件点击事件测试 | 设备正常运行 | 点击灰色区域六次 | 前五次子组件响应第六次父组件响应 | Pass | +| 双击手势测试 | 设备正常运行 | 双击"Click twice" | 展示相关信息 | Pass | +| 长按手势测试 | 设备正常运行 | 长按LongPress | 长按期间从0递加 | Pass | +| 滑动手势测试 | 设备正常运行 | 滑动白色方框区域 | 音量值随滑动而变化 | Pass | +| 捏合手势测试 | 设备正常运行 | 三指捏合黑色方框区域 | 方框内值随捏合而变化 | Pass | +| 旋转手势测试 | 设备正常运行 | 旋转黑色方框区域 | 方框内值随旋转而变化 | Pass | +| 快滑手势测试 | 设备正常运行 | 快速滑动黑色方框达到100vp/s | 方框内值随滑动而变化 | Pass | +| tab键切换焦点 | 设备正常运行 | 按下tab键 | 按下tab键聚焦再次按下切换焦点 | Pass | +| 点击切换焦点| 设备正常运行 | 点击button1 | button2获焦 | Pass | +| tab走焦顺序测试 | 设备正常运行 | 连续按下tab键 | 循环走焦 | Pass | +| 左右键走焦测试 | 设备正常运行 | 按下左右键 | 左右走焦 | Pass | + + diff --git a/ArkUIKit/EventProject/entry/src/main/ets/common/Card.ets b/ArkUIKit/EventProject/entry/src/main/ets/common/Card.ets new file mode 100644 index 00000000000..bbddb561a11 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/common/Card.ets @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2025 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. + */ + +@Component +export struct CompletedRoutableCard { + @Prop + symbol: Resource = $r('sys.symbol.label'); + @Prop + @Require + title: string; + @Prop + @Require + description: string; + + build() { + Card({ verticalAlign: VerticalAlign.Top }) { + Button({ type: ButtonType.Circle }) { + SymbolGlyph(this.symbol) + .fontColor(['#fff']) + .fontSize(16) + } + .borderRadius(14) + + Column({ space: 8 }) { + Text(this.title) + .fontColor($r('sys.color.font_primary')) + + Text(this.description) + .fontColor($r('sys.color.font_secondary')) + .fontSize($r('sys.float.Body_S')) + } + .alignItems(HorizontalAlign.Start) + .layoutWeight(1) + } + } +} + +@Component +export struct Card { + @Prop + verticalAlign: VerticalAlign = VerticalAlign.Center; + @BuilderParam + content: () => void; + + build() { + Row({ space: 12 }) { + this.content() + } + .alignItems(this.verticalAlign) + .backgroundColor('#fff') + .borderRadius(12) + .padding(12) + .width('100%') + } +} + +@Component +export struct RoutableCard { + @Prop + icon: Resource = $r('sys.symbol.label'); + @Prop + @Require + title: ResourceStr; + + build() { + Card() { + Button({ type: ButtonType.Circle }) { + SymbolGlyph(this.icon) + .fontColor(['#fff']) + .fontSize(16) + } + .borderRadius(14) + + Text(this.title) + .fontColor($r('sys.color.font_primary')) + .minFontSize(12) + .maxFontSize(16) + .maxLines(1) + .textOverflow({ overflow: TextOverflow.Ellipsis }) + + Blank() + + Button({ type: ButtonType.Normal, buttonStyle: ButtonStyleMode.TEXTUAL }) { + SymbolGlyph($r('sys.symbol.chevron_right')) + .fontSize(18) + .fontColor([$r('sys.color.font_secondary')]) + } + } + } +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/common/Route.ets b/ArkUIKit/EventProject/entry/src/main/ets/common/Route.ets new file mode 100644 index 00000000000..a74522e3505 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/common/Route.ets @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2025 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. + */ + +export interface Route { + title: string; + name: string; + items?: Route[]; + description?: string; +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/common/resource.ets b/ArkUIKit/EventProject/entry/src/main/ets/common/resource.ets new file mode 100644 index 00000000000..f0adea122eb --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/common/resource.ets @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2025 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. + */ + +export class P2PManager { + public resourceToString(resource: Resource):string { + return getContext(this).resourceManager.getStringSync(resource) + } +} + +// 默认导出let +let p2pManager = new P2PManager(); + +export default p2pManager as P2PManager; \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/entryability/EntryAbility.ets b/ArkUIKit/EventProject/entry/src/main/ets/entryability/EntryAbility.ets new file mode 100644 index 00000000000..edc2839f203 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/entryability/EntryAbility.ets @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2025 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. + */ + +import { AbilityConstant, ConfigurationConstant, UIAbility, Want } from '@kit.AbilityKit'; +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { window } from '@kit.ArkUI'; + +export default class EntryAbility extends UIAbility { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { + this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET); + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate'); + } + + onDestroy(): void { + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy'); + } + + onWindowStageCreate(windowStage: window.WindowStage): void { + // Main window is created, set main page for this ability + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate'); + + windowStage.loadContent('pages/Index', (err) => { + if (err.code) { + hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); + return; + } + hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.'); + }); + } + + onWindowStageDestroy(): void { + // Main window is destroyed, release UI related resources + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageDestroy'); + } + + onForeground(): void { + // Ability has brought to foreground + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground'); + } + + onBackground(): void { + // Ability has back to background + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground'); + } +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets b/ArkUIKit/EventProject/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets new file mode 100644 index 00000000000..b1e21294725 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2025 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. + */ + +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { BackupExtensionAbility, BundleVersion } from '@kit.CoreFileKit'; + +export default class EntryBackupAbility extends BackupExtensionAbility { + async onBackup() { + hilog.info(0x0000, 'testTag', 'onBackup ok'); + } + + async onRestore(bundleVersion: BundleVersion) { + hilog.info(0x0000, 'testTag', 'onRestore ok %{public}s', JSON.stringify(bundleVersion)); + } +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/Index.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/Index.ets new file mode 100644 index 00000000000..9e03949b1d0 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/Index.ets @@ -0,0 +1,159 @@ +/* + * Copyright (c) 2025 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. + */ + + +import { LengthMetrics } from '@kit.ArkUI'; +import { RoutableCard } from '../common/Card'; +import { Route } from '../common/Route'; +import { DeviceDestination, Device_ROUTE_PREFIX } from './device/Index'; +import { DragGestureDestination, Drag_ROUTE_PREFIX } from './drag/Index'; +import { FocusDestination, Focus_ROUTE_PREFIX } from './focus/Index'; +import { GestureJudgeDestination, GestureJudge_ROUTE_PREFIX } from './gesturejudge/Index'; +import { GroupGestureDestination, GroupGesture_ROUTE_PREFIX } from './groupgesture/Index'; +import { Gesture_ROUTE_PREFIX, GestureDestination } from './singlegesture/Index'; +import { TouchDestination, Touch_ROUTE_PREFIX } from './Touch/Index'; +import { DropAnimationExample, dropAnimationRoutePrefix} from './drop/DropAnimationExample'; +import resource from '../common/resource'; +import { GridEts, gridRoutePrefix } from './grid/GridEts'; +import { springLoadingRoutePrefix, SpringLoadingPage} from './springloading/SpringLoading'; + +// [Start route_push] +const routes: Route[] = [ + // $r('app.string.Pages_Index_gesture')、$r('app.string.Pages_Index_GroupGesture')、 + // $r('app.string.Pages_Index_GestureJudge')、$r('app.string.Pages_Index_TouchEvent')、 + // $r('app.string.Pages_Index_DeviceEvent')、$r('app.string.Pages_Index_FocusEvent')、 + // $r('app.string.Pages_Index_DragEvent')需要替换为开发者所需的字符串资源文件 + { + title: resource.resourceToString($r('app.string.Pages_Index_gesture')), + name: Gesture_ROUTE_PREFIX + }, + { + title: resource.resourceToString($r('app.string.Pages_Index_GroupGesture')), + name: GroupGesture_ROUTE_PREFIX + }, + { + title: resource.resourceToString($r('app.string.Pages_Index_GestureJudge')), + name: GestureJudge_ROUTE_PREFIX + }, + { + title: resource.resourceToString($r('app.string.Pages_Index_TouchEvent')), + name: Touch_ROUTE_PREFIX + }, + { + title: resource.resourceToString($r('app.string.Pages_Index_DeviceEvent')), + name: Device_ROUTE_PREFIX + }, + { + title: resource.resourceToString($r('app.string.Pages_Index_FocusEvent')), + name: Focus_ROUTE_PREFIX + }, + { + title: resource.resourceToString($r('app.string.Pages_Index_DragEvent')), + name: Drag_ROUTE_PREFIX + }, + { + title: resource.resourceToString($r('app.string.Pages_Index_DropAnimation')), + name: dropAnimationRoutePrefix + }, + { + title: resource.resourceToString($r('app.string.Pages_Index_GridExample')), + name: gridRoutePrefix + }, + { + title: resource.resourceToString($r('app.string.Pages_Index_SpringLoading')), // 需添加字符串资源 + name: springLoadingRoutePrefix + } +]; +// [End route_push] + +@Builder +function Destination(name: string) { + if (name.startsWith(Gesture_ROUTE_PREFIX)) { + GestureDestination(name); + } else if (name.startsWith(GroupGesture_ROUTE_PREFIX)) { + GroupGestureDestination(name); + } else if (name.startsWith(GestureJudge_ROUTE_PREFIX)) { + GestureJudgeDestination(name); + } else if (name.startsWith(Touch_ROUTE_PREFIX)) { + TouchDestination(name); + } else if (name.startsWith(Device_ROUTE_PREFIX)) { + DeviceDestination(name); + } else if (name.startsWith(Focus_ROUTE_PREFIX)) { + FocusDestination(name); + } else if (name.startsWith(Drag_ROUTE_PREFIX)) { + DragGestureDestination(name); + } else if (name.startsWith(dropAnimationRoutePrefix)) { + DropAnimationExample(); + } else if (name.startsWith(gridRoutePrefix)) { + GridEts(); + } else if (name.startsWith(springLoadingRoutePrefix)) { + SpringLoadingPage(); + } +} + +@Entry +@Component +struct Index { + @State condition: string = ''; + @Provide pathStack: NavPathStack = new NavPathStack(); + + getFilteredRoutes(): Route[] { + if (!this.condition) { + return routes; + } + return routes.filter((route: Route) => { + return route.title.includes(this.condition); + }) + } + + @LocalBuilder + Title() { + Column() { + Search({ value: this.condition }) + .onChange(value => { + this.condition = value; + }) + .margin({ start: LengthMetrics.vp(16), end: LengthMetrics.vp(16) }) + } + .justifyContent(FlexAlign.Center) + .height('100%') + } + + build() { + Navigation(this.pathStack) { + List({ space: 12 }) { + ForEach(this.getFilteredRoutes(), (route: Route) => { + ListItem() { + RoutableCard({ title: route.title }) + } + .width('100%') + .onClick(() => { + this.pathStack.pushPath({ name: route.name }); + }) + }) + } + .padding({ start: LengthMetrics.vp(16), end: LengthMetrics.vp(16) }) + .contentStartOffset(56) + .height('100%') + .width('100%') + } + .backgroundColor('#f1f3f5') + .title({ builder: this.Title, height: 56 }, { + backgroundBlurStyle: BlurStyle.COMPONENT_THICK, + barStyle: BarStyle.STACK + }) + .navDestination(Destination) + } +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/Touch/ClickEvent.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/Touch/ClickEvent.ets new file mode 100644 index 00000000000..84555db100b --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/Touch/ClickEvent.ets @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start click_event_handle] +@Entry +@Component +export struct Click { + @State flag: boolean = true; + @State btnMsg: string = 'show'; + + build() { + NavDestination() { + Column({ space: 12 }) { + Text($r('app.string.Touch_ClickEvent_text')) + .fontSize(14) + .fontColor('#666') + Column() { + Button(this.btnMsg).width(80).height(30).margin(30) + .onClick(() => { + if (this.flag) { + this.btnMsg = 'hide'; + } else { + this.btnMsg = 'show'; + } + // 点击Button控制Image的显示和消失 + this.flag = !this.flag; + }) + if (this.flag) { + Image($r('app.media.app_icon')).width(200).height(200) + } + }.height('100%').width('100%') + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + .backgroundColor('#f1f2f3') + .title($r('app.string.Touch_ClickEvent_title')) + } +} +// [End click_event_handle] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/Touch/Index.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/Touch/Index.ets new file mode 100644 index 00000000000..4830e9f24dd --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/Touch/Index.ets @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2025 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. + */ + +import { CompletedRoutableCard } from '../../common/Card'; +import { Route } from '../../common/Route'; +import { Click } from './ClickEvent'; +import { Touch } from './TouchEvent'; +import resource from '../../common/resource'; + +export const Touch_ROUTE_PREFIX: string = 'Touch_ROUTE_PREFIX'; + +const routes: Route[] = [ + { + name: `${Touch_ROUTE_PREFIX}/ClickEvent`, + title: resource.resourceToString($r('app.string.Touch_Index_ClickEvent_title')), + description: resource.resourceToString($r('app.string.Touch_Index_ClickEvent_description')) + }, + { + name: `${Touch_ROUTE_PREFIX}/TouchEvent`, + title: resource.resourceToString($r('app.string.Touch_Index_TouchEvent_title')), + description: resource.resourceToString($r('app.string.Touch_Index_TouchEvent_description')), + } +] + +@Builder +export function TouchDestination(name: string) { + if (name === Touch_ROUTE_PREFIX) { + TouchExample(); + } else if (name === routes[0].name) { + Click(); + } else if (name === routes[1].name) { + Touch(); + } +} + +@Entry +@Component +struct TouchExample { + @Consume pathStack: NavPathStack; + + build() { + NavDestination() { + List({ space: 12 }) { + ForEach(routes, (route: Route) => { + ListItem() { + CompletedRoutableCard({ title: route.title, description: route.description }) + } + .width('100%') + .onClick(() => { + this.pathStack.pushPath({ name: route.name }); + }) + }) + } + .contentStartOffset(20) + .padding({ left: 16, right: 16 }) + } + .backgroundColor('#f1f3f5') + .title('', { + backgroundBlurStyle: BlurStyle.COMPONENT_THICK, + barStyle: BarStyle.STACK + }) + .title($r('app.string.Touch_Index_title')) + } +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/Touch/TouchEvent.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/Touch/TouchEvent.ets new file mode 100644 index 00000000000..d423f073d40 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/Touch/TouchEvent.ets @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start touch_event_handle] +@Entry +@Component +export struct Touch { + @State text: string = ''; + @State eventType: string = ''; + + build() { + NavDestination() { + Column({ space: 12 }) { + + Column() { + Button('Touch').height(40).width(100) + .onTouch((event?: TouchEvent) => { + if (event) { + if (event.type === TouchType.Down) { + this.eventType = 'Down'; + } + if (event.type === TouchType.Up) { + this.eventType = 'Up'; + } + if (event.type === TouchType.Move) { + this.eventType = 'Move'; + } + this.text = 'TouchType:' + this.eventType + '\nDistance between touch point and touch element:\nx: ' + + event.touches[0].x + '\n' + 'y: ' + event.touches[0].y + '\nComponent globalPos:(' + + event.target.area.globalPosition.x + ',' + event.target.area.globalPosition.y + ')\nwidth:' + + event.target.area.width + '\nheight:' + event.target.area.height + } + }) + Button('Touch').height(50).width(200).margin(20) + .onTouch((event?: TouchEvent) => { + if (event) { + if (event.type === TouchType.Down) { + this.eventType = 'Down'; + } + if (event.type === TouchType.Up) { + this.eventType = 'Up'; + } + if (event.type === TouchType.Move) { + this.eventType = 'Move'; + } + this.text = 'TouchType:' + this.eventType + '\nDistance between touch point and touch element:\nx: ' + + event.touches[0].x + '\n' + 'y: ' + event.touches[0].y + '\nComponent globalPos:(' + + event.target.area.globalPosition.x + ',' + event.target.area.globalPosition.y + ')\nwidth:' + + event.target.area.width + '\nheight:' + event.target.area.height + } + }) + Text(this.text) + }.width('100%').padding(30) + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + .backgroundColor('#f1f2f3') + .title($r('app.string.Touch_TouchEvent_title')) + } +} +// [End touch_event_handle] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/device/HoverEffect.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/device/HoverEffect.ets new file mode 100644 index 00000000000..198de86e063 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/device/HoverEffect.ets @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start mouse_hover_effect] +@Entry +@Component +export struct HoverEffectSample { + @State buttonText: string = ''; + @State columnText: string = ''; + @State hoverText: string = 'Not Hover'; + @State color: Color = Color.Gray; + + build() { + NavDestination() { + Column({ space: 12 }) { + + Column({ space: 10 }) { + Button('Auto') + .width(170).height(70) + Button('Scale') + .width(170).height(70) + .hoverEffect(HoverEffect.Scale) + Button('Highlight') + .width(170).height(70) + .hoverEffect(HoverEffect.Highlight) + Button('None') + .width(170).height(70) + .hoverEffect(HoverEffect.None) + }.width('100%').height('100%').justifyContent(FlexAlign.Center) + + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + .backgroundColor('#f1f2f3') + .title($r('app.string.HoverEffectSample_title')) + } +} +// [End mouse_hover_effect] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/device/Index.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/device/Index.ets new file mode 100644 index 00000000000..6038ec2267f --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/device/Index.ets @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2025 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. + */ + +import { CompletedRoutableCard } from '../../common/Card'; +import { Route } from '../../common/Route'; +import { HoverEffectSample } from './HoverEffect'; +import { Hover } from './OnHover'; +import { OnKey } from './OnKey'; +import { PreIme } from './OnKeyPreIme'; +import { Mouse } from './OnMouse'; +import resource from '../../common/resource'; + + +export const Device_ROUTE_PREFIX: string = 'Device_ROUTE_PREFIX'; + +const routes: Route[] = [ + { + name: `${Device_ROUTE_PREFIX}/OnHover`, + title: resource.resourceToString($r('app.string.Hover_Event')), + description: resource.resourceToString($r('app.string.Hover_Description')), + }, + { + name: `${Device_ROUTE_PREFIX}/OnMouse`, + title: resource.resourceToString($r('app.string.Mouse_Event')), + description: resource.resourceToString($r('app.string.Mouse_Description')) + }, + { + name: `${Device_ROUTE_PREFIX}/HoverEffect`, + title: resource.resourceToString($r('app.string.Hover_Effect')), + description: resource.resourceToString($r('app.string.Hover_Effect_Description')), + }, + { + name: `${Device_ROUTE_PREFIX}/onKeyEvent `, + title: resource.resourceToString($r('app.string.Key_Event')), + description: resource.resourceToString($r('app.string.Key_Description')), + }, + { + name: `${Device_ROUTE_PREFIX}/OnKeyPreIme `, + title: resource.resourceToString($r('app.string.Key_PreIme')), + description: resource.resourceToString($r('app.string.Key_PreIme_Description')), + } + + +] + +@Builder +export function DeviceDestination(name: string) { + if (name === Device_ROUTE_PREFIX) { + DeviceExample(); + } else if (name === routes[0].name) { + Hover(); + } else if (name === routes[1].name) { + Mouse(); + } else if (name === routes[2].name) { + HoverEffectSample(); + } else if (name === routes[3].name) { + OnKey(); + } else if (name === routes[4].name) { + PreIme(); + } +} + +@Entry +@Component +struct DeviceExample { + @Consume pathStack: NavPathStack; + + build() { + NavDestination() { + List({ space: 12 }) { + ForEach(routes, (route: Route) => { + ListItem() { + CompletedRoutableCard({ title: route.title, description: route.description }) + } + .width('100%') + .onClick(() => { + this.pathStack.pushPath({ name: route.name }); + }) + }) + } + .contentStartOffset(20) + .padding({ left: 16, right: 16 }) + } + .backgroundColor('#f1f3f5') + .title('', { + backgroundBlurStyle: BlurStyle.COMPONENT_THICK, + barStyle: BarStyle.STACK + }) + .title($r('app.string.Device_index_title')) + } +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/device/OnHover.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/device/OnHover.ets new file mode 100644 index 00000000000..6992c005cee --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/device/OnHover.ets @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start dynamic_response_mouse_hover] +@Entry +@Component +export struct Hover { + @State hoverText: string = 'Not Hover'; + @State color: Color = Color.Gray; + + build() { + NavDestination() { + Column({ space: 12 }) { + + Column() { + Button(this.hoverText) + .width(200).height(100) + .backgroundColor(this.color) + .onHover((isHover?: boolean) => { // 使用onHover接口监听鼠标是否悬浮在Button组件上 + if (isHover) { + this.hoverText = 'Hovered!'; + this.color = Color.Green; + } else { + this.hoverText = 'Not Hover'; + this.color = Color.Gray; + } + }) + }.width('100%').height('100%').justifyContent(FlexAlign.Center) + + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + .backgroundColor('#f1f2f3') + .title($r('app.string.Device_OnHover_title')) + } +} +// [End dynamic_response_mouse_hover] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/device/OnKey.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/device/OnKey.ets new file mode 100644 index 00000000000..eaa8bc571e5 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/device/OnKey.ets @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start listen_response_key_event] +@Entry +@Component +export struct OnKey { + @State buttonText: string = ''; + @State buttonType: string = ''; + @State columnText: string = ''; + @State columnType: string = ''; + + build() { + NavDestination() { + Column({ space: 12 }) { + + Column() { + Button('onKeyEvent') + .defaultFocus(true) + .width(140).height(70) + .onKeyEvent((event?: KeyEvent) => { // 给Button设置onKeyEvent事件 + if(event){ + if (event.type === KeyType.Down) { + this.buttonType = 'Down'; + } + if (event.type === KeyType.Up) { + this.buttonType = 'Up'; + } + this.buttonText = 'Button: \n' + + 'KeyType:' + this.buttonType + '\n' + + 'KeyCode:' + event.keyCode + '\n' + + 'KeyText:' + event.keyText; + } + }) + + Divider() + Text(this.buttonText).fontColor(Color.Green) + + Divider() + Text(this.columnText).fontColor(Color.Red) + }.width('100%').height('100%').justifyContent(FlexAlign.Center) + .onKeyEvent((event?: KeyEvent) => { // 给父组件Column设置onKeyEvent事件 + if(event){ + if (event.type === KeyType.Down) { + this.columnType = 'Down'; + } + if (event.type === KeyType.Up) { + this.columnType = 'Up'; + } + this.columnText = 'Column: \n' + + 'KeyType:' + this.buttonType + '\n' + + 'KeyCode:' + event.keyCode + '\n' + + 'KeyText:' + event.keyText; + } + }) + + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + .backgroundColor('#f1f2f3') + .title($r('app.string.Device_OnKey_title')) + } +} +// [End listen_response_key_event] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/device/OnKeyDistributeEvent.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/device/OnKeyDistributeEvent.ets new file mode 100644 index 00000000000..c684d1fa55e --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/device/OnKeyDistributeEvent.ets @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2025 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. + */ + +import { hilog } from '@kit.PerformanceAnalysisKit'; + +const TAG = '[Sample_Eventproject]'; +const DOMAIN = 0xF811; +const BUNDLE = 'Eventproject_'; +// [Start OnKeyPreImeCommit] +@Entry +@Component +export struct OnKeyDistributeEvent { + build() { + // [StartExclude key_event_intercept] + NavDestination() { + Column({ space: 12 }) { + // [EndExclude key_event_intercept] + Row() { + Row() { + Button('button1').id('button1').onKeyEvent((event) => { + hilog.info(DOMAIN, TAG, BUNDLE + 'button1'); + return true + }) + Button('button2').id('button2').onKeyEvent((event) => { + hilog.info(DOMAIN, TAG, BUNDLE + 'button2'); + return true + }) + } + .width('100%') + .height('100%') + .id('Row1') + .onKeyEventDispatch((event) => { + let context = this.getUIContext(); + context.getFocusController().requestFocus('button1'); + return context.dispatchKeyEvent('button1', event); + }) + + } + .height('100%') + .width('100%') + .onKeyEventDispatch((event) => { + if (event.type == KeyType.Down) { + let context = this.getUIContext(); + context.getFocusController().requestFocus('Row1'); + return context.dispatchKeyEvent('Row1', event); + } + return true; + }) + // [StartExclude key_event_intercept] + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + .backgroundColor('#f1f2f3') + .title($r('app.string.OnKeyDistributeEvent_title')) + // [EndExclude key_event_intercept] + } +} +// [End OnKeyPreImeCommit] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/device/OnKeyPreIme.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/device/OnKeyPreIme.ets new file mode 100644 index 00000000000..32edef1b979 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/device/OnKeyPreIme.ets @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start key_event_intercept] +import { KeyCode } from '@kit.InputKit'; + +@Entry +@Component +export struct PreIme { + @State buttonText: string = ''; + @State buttonType: string = ''; + @State columnText: string = ''; + @State columnType: string = ''; + + build() { + NavDestination() { + Column({ space: 12 }) { + + Column() { + Search({ + placeholder: 'Search...' + }) + .width('80%') + .height('40vp') + .border({ radius:'20vp' }) + .onKeyPreIme((event:KeyEvent) => { + if (event.keyCode == KeyCode.KEYCODE_DPAD_LEFT) { + return true; + } + return false; + }) + } + + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + .backgroundColor('#f1f2f3') + .title($r('app.string.Device_OnKeyPreIme_title')) + } +} +// [End key_event_intercept] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/device/OnKeyPreImeCommit.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/device/OnKeyPreImeCommit.ets new file mode 100644 index 00000000000..284ac7f347d --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/device/OnKeyPreImeCommit.ets @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2025 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. + */ +import { hilog } from '@kit.PerformanceAnalysisKit'; + +const TAG = '[Sample_Eventproject]'; +const DOMAIN = 0xF811; +const BUNDLE = 'Eventproject_'; +// [Start key_event_intercept] +@Entry +@Component +export struct OnKeyPreImeCommit { + @State content: string = ''; + @State text: string = ''; + controller: TextAreaController = new TextAreaController(); + + build() { + // [StartExclude key_event_intercept] + NavDestination() { + Column({ space: 12 }) { + // [EndExclude key_event_intercept] + Column() { + Text('Submissions: ' + this.content) + TextArea({ controller: this.controller, text: this.text }) + .onKeyPreIme((event: KeyEvent) => { + hilog.info(DOMAIN, TAG, BUNDLE + JSON.stringify(event)); + if (event.keyCode === 2054 && event.type === KeyType.Down) { // 回车键物理码 + const hasCtrl = event?.getModifierKeyState?.(['Ctrl']); + if (hasCtrl) { + hilog.info(DOMAIN, TAG, BUNDLE + 'Line break'); + } else { + hilog.info(DOMAIN, TAG, BUNDLE + 'Submissions:' + this.text); + this.content = this.text; + this.text = ''; + event.stopPropagation(); + } + return true; + } + return false; + }) + .onChange((value: string) => { + this.text = value + }) + } + // [StartExclude key_event_intercept] + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + .backgroundColor('#f1f2f3') + .title($r('app.string.OnKeyPreImeCommit_title')) + // [EndExclude key_event_intercept] + } +} +// [End key_event_intercept] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/device/OnKeyPreventBubble.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/device/OnKeyPreventBubble.ets new file mode 100644 index 00000000000..bf44a55faeb --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/device/OnKeyPreventBubble.ets @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start OnKeyPreventBubble] +@Entry +@Component +export struct OnKeyPreventBubble { + @State buttonText: string = ''; + @State buttonType: string = ''; + @State columnText: string = ''; + @State columnType: string = ''; + + build() { + // [StartExclude listen_response_key_event] + NavDestination() { + Column({ space: 12 }) { + // [EndExclude listen_response_key_event] + Column() { + Button('onKeyEvent') + .defaultFocus(true) + .width(140).height(70) + .onKeyEvent((event?: KeyEvent) => { + // 通过stopPropagation阻止事件冒泡 + if(event){ + if(event.stopPropagation){ + event.stopPropagation(); + } + if (event.type === KeyType.Down) { + this.buttonType = 'Down'; + } + if (event.type === KeyType.Up) { + this.buttonType = 'Up'; + } + this.buttonText = 'Button: \n' + + 'KeyType:' + this.buttonType + '\n' + + 'KeyCode:' + event.keyCode + '\n' + + 'KeyText:' + event.keyText; + } + }) + + Divider() + Text(this.buttonText).fontColor(Color.Green) + + Divider() + Text(this.columnText).fontColor(Color.Red) + }.width('100%').height('100%').justifyContent(FlexAlign.Center) + .onKeyEvent((event?: KeyEvent) => { // 给父组件Column设置onKeyEvent事件 + if(event){ + if (event.type === KeyType.Down) { + this.columnType = 'Down'; + } + if (event.type === KeyType.Up) { + this.columnType = 'Up'; + } + this.columnText = 'Column: \n' + + 'KeyType:' + this.columnType + '\n' + + 'KeyCode:' + event.keyCode + '\n' + + 'KeyText:' + event.keyText; + } + }) + // [StartExclude listen_response_key_event] + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + .backgroundColor('#f1f2f3') + .title($r('app.string.Device_OnKey_title')) + // [EndExclude listen_response_key_event] + } +} +// [End OnKeyPreventBubble] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/device/OnMouse.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/device/OnMouse.ets new file mode 100644 index 00000000000..baab41e24e7 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/device/OnMouse.ets @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start listen_response_mouse_event] +@Entry +@Component +export struct Mouse { + @State buttonText: string = ''; + @State columnText: string = ''; + @State hoverText: string = 'Not Hover'; + @State color: Color = Color.Gray; + + build() { + NavDestination() { + Column({ space: 12 }) { + + Column() { + Button(this.hoverText) + .width(200) + .height(100) + .backgroundColor(this.color) + .onHover((isHover?: boolean) => { + if (isHover) { + this.hoverText = 'Hovered!'; + this.color = Color.Green; + } else { + this.hoverText = 'Not Hover'; + this.color = Color.Gray; + } + }) + .onMouse((event?: MouseEvent) => { // 设置Button的onMouse回调 + if (event) { + this.buttonText = 'Button onMouse:\n' + '' + + 'button = ' + event.button + '\n' + + 'action = ' + event.action + '\n' + + 'x,y = (' + event.x + ',' + event.y + ')' + '\n' + + 'windowXY=(' + event.windowX + ',' + event.windowY + ')'; + } + }) + Divider() + Text(this.buttonText).fontColor(Color.Green) + Divider() + Text(this.columnText).fontColor(Color.Red) + } + .width('100%') + .height('100%') + .justifyContent(FlexAlign.Center) + .borderWidth(2) + .borderColor(Color.Red) + .onMouse((event?: MouseEvent) => { // Set the onMouse callback for the column. + if (event) { + this.columnText = 'Column onMouse:\n' + '' + + 'button = ' + event.button + '\n' + + 'action = ' + event.action + '\n' + + 'x,y = (' + event.x + ',' + event.y + ')' + '\n' + + 'windowXY=(' + event.windowX + ',' + event.windowY + ')'; + } + }) + + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + .backgroundColor('#f1f2f3') + .title($r('app.string.Device_OnMouse_title')) + } +} +// [End listen_response_mouse_event] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/drag/DefaultDrag.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/drag/DefaultDrag.ets new file mode 100644 index 00000000000..ad23de3c804 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/drag/DefaultDrag.ets @@ -0,0 +1,207 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start default_drag] +import { unifiedDataChannel, uniformTypeDescriptor } from '@kit.ArkData'; +import { promptAction } from '@kit.ArkUI'; +import { BusinessError } from '@kit.BasicServicesKit'; +import { image } from '@kit.ImageKit'; + +@Entry +@Component +export struct DefaultDrag { + @State targetImage: string = ''; + @State imageWidth: number = 100; + @State imageHeight: number = 100; + @State imgState: Visibility = Visibility.Visible; + @State pixmap: image.PixelMap | undefined = undefined; + + // [Start generate_pix_map] + @Builder + pixelMapBuilder() { + Column() { + Image($r('app.media.startIcon')) + .width(120) + .height(120) + .backgroundColor(Color.Yellow) + } + } + + // [StartExclude generate_pix_map] + // [Start data_delayed_retry] + getDataFromUdmfRetry(event: DragEvent, callback: (data: DragEvent) => void) { + try { + let data: UnifiedData = event.getData(); + if (!data) { + return false; + } + let records: unifiedDataChannel.UnifiedRecord[] = data.getRecords(); + if (!records || records.length <= 0) { + return false; + } + callback(event); + return true; + } catch (e) { + console.log('getData failed, code: ' + (e as BusinessError).code + ', message: ' + (e as BusinessError).message); + return false; + } + } + + // 获取UDMF数据,首次获取失败后添加1500ms延迟重试机制 + getDataFromUdmf(event: DragEvent, callback: (data: DragEvent) => void) { + if (this.getDataFromUdmfRetry(event, callback)) { + return; + } + setTimeout(() => { + this.getDataFromUdmfRetry(event, callback); + }, 1500); + } + // [End data_delayed_retry] + // [EndExclude generate_pix_map] + + // 调用componentSnapshot中的createFromBuilder接口截取自定义builder的截图 + private getComponentSnapshot(): void { + this.getUIContext().getComponentSnapshot().createFromBuilder(() => { + this.pixelMapBuilder() + }, + (error: Error, pixmap: image.PixelMap) => { + if (error) { + console.log('error: ' + JSON.stringify(error)); + return; + } + this.pixmap = pixmap; + }) + } + // [End generate_pix_map] + + // 长按50ms时提前准备自定义截图的pixmap + private PreDragChange(preDragStatus: PreDragStatus): void { + if (preDragStatus == PreDragStatus.ACTION_DETECTING_STATUS) { + this.getComponentSnapshot(); + } + } + + build() { + NavDestination() { + Column({ space: 12 }) { + + Row() { + Column() { + Text('start Drag') + .fontSize(18) + .width('100%') + .height(40) + .margin(10) + .backgroundColor('#008888') + Row() { + // [Start module_draggable] + Image($r('app.media.app_icon')) + .width(100) + .height(100) + .draggable(true) + .margin({ left: 15 }) + // [StartExclude module_draggable] + .visibility(this.imgState)// 绑定平行手势,可同时触发应用自定义长按手势 + // [Start bind_parallel_gesture] + .parallelGesture(LongPressGesture().onAction(() => { + promptAction.showToast({ duration: 100, message: 'Long press gesture trigger' }); + })) + // [End bind_parallel_gesture] + // [EndExclude module_draggable] + .onDragStart((event) => { + let data: unifiedDataChannel.Image = new unifiedDataChannel.Image(); + data.imageUri = 'common/pic/img.png'; + let unifiedData = new unifiedDataChannel.UnifiedData(data); + event.setData(unifiedData); + + let dragItemInfo: DragItemInfo = { + pixelMap: this.pixmap, + extraInfo: 'this is extraInfo', + }; + return dragItemInfo; + }) + // [End module_draggable] + // 提前准备拖拽自定义背板图 + // [Start set_custom_drag_status] + .onPreDrag((status: PreDragStatus) => { + this.PreDragChange(status); + }) + // [End set_custom_drag_status] + // [Start set_on_drag_end] + .onDragEnd((event) => { + // onDragEnd里取到的result值在接收方onDrop设置 + if (event.getResult() === DragResult.DRAG_SUCCESSFUL) { + promptAction.showToast({ duration: 100, message: 'Drag Success' }); + } else if (event.getResult() === DragResult.DRAG_FAILED) { + promptAction.showToast({ duration: 100, message: 'Drag failed' }); + } + }) + // [End set_on_drag_end] + } + + Text('Drag Target Area') + .fontSize(20) + .width('100%') + .height(40) + .margin(10) + .backgroundColor('#008888') + Row() { + Image(this.targetImage) + .width(this.imageWidth) + .height(this.imageHeight) + .draggable(true) + .margin({ left: 15 }) + .border({ color: Color.Black, width: 1 })// 控制角标显示类型为MOVE,即不显示角标 + // [Start set_drag_behavior_move] + .onDragMove((event) => { + event.setResult(DragResult.DROP_ENABLED) + event.dragBehavior = DragBehavior.MOVE + // [End set_drag_behavior_move] + }) + // [Start allow_drag_type] + .allowDrop([uniformTypeDescriptor.UniformDataType.IMAGE]) + // [End allow_drag_type] + // [Start set_on_drop_call] + .onDrop((dragEvent?: DragEvent) => { + // 获取拖拽数据 + this.getDataFromUdmf((dragEvent as DragEvent), (event: DragEvent) => { + let records: unifiedDataChannel.UnifiedRecord[] = event.getData().getRecords(); + let rect: Rectangle = event.getPreviewRect(); + this.imageWidth = Number(rect.width); + this.imageHeight = Number(rect.height); + this.targetImage = (records[0] as unifiedDataChannel.Image).imageUri; + this.imgState = Visibility.None; + // 显式设置result为successful,则将该值传递给拖出方的onDragEnd + event.setResult(DragResult.DRAG_SUCCESSFUL); + }) + }) + // [End set_on_drop_call] + } + } + .width('100%') + .height('100%') + } + .height('100%') + + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + .backgroundColor('#f1f2f3') + .title($r('app.string.Drag_DefaultDrag_title')) + } +} +// [End default_drag] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/drag/Index.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/drag/Index.ets new file mode 100644 index 00000000000..f1794489965 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/drag/Index.ets @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2025 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. + */ + +import { CompletedRoutableCard } from '../../common/Card'; +import { Route } from '../../common/Route'; +import { DefaultDrag } from './DefaultDrag'; +import { MoreDrag } from './MoreDrag'; +import resource from '../../common/resource'; + +export const Drag_ROUTE_PREFIX: string = 'Drag_ROUTE_PREFIX'; + +const routes: Route[] = [ + { + name: `${Drag_ROUTE_PREFIX}/Defaultdrag`, + title: resource.resourceToString($r('app.string.Drag_Index_DefaultDrag_title')), + description: resource.resourceToString($r('app.string.Drag_Index_DefaultDrag_description')), + }, + { + name: `${Drag_ROUTE_PREFIX}/MoreDrag`, + title: resource.resourceToString($r('app.string.Drag_Index_MoreDrag_title')), + description: resource.resourceToString($r('app.string.Drag_Index_MoreDrag_description')), + } +] + +@Builder +export function DragGestureDestination(name: string) { + if (name === Drag_ROUTE_PREFIX) { + DragGestureExample(); + } else if (name === routes[0].name) { + DefaultDrag(); + } else if (name === routes[1].name) { + MoreDrag(); + } +} + +@Entry +@Component +struct DragGestureExample { + @Consume pathStack: NavPathStack; + + build() { + NavDestination() { + List({ space: 12 }) { + ForEach(routes, (route: Route) => { + ListItem() { + CompletedRoutableCard({ title: route.title, description: route.description }) + } + .width('100%') + .onClick(() => { + this.pathStack.pushPath({ name: route.name }); + }) + }) + } + .contentStartOffset(20) + .padding({ left: 16, right: 16 }) + } + .backgroundColor('#f1f3f5') + .title('', { + backgroundBlurStyle: BlurStyle.COMPONENT_THICK, + barStyle: BarStyle.STACK + }) + .title($r('app.string.Drag_Index_title')) + } +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/drag/MoreDrag.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/drag/MoreDrag.ets new file mode 100644 index 00000000000..85b1a0ed979 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/drag/MoreDrag.ets @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start more_drag] +import { KeyCode } from '@kit.InputKit'; +import { image } from '@kit.ImageKit'; + +@Entry +@Component +export struct MoreDrag { + @State pixmap: image.PixelMap | undefined = undefined; + @State numbers: number[] = []; + @State isSelectedGrid: boolean[] = []; + @State previewData: DragItemInfo[] = []; + @State colors: Color[] = + [Color.Red, Color.Blue, Color.Brown, Color.Gray, Color.Green, Color.Grey, Color.Orange, Color.Pink, Color.Yellow]; + @State numberBadge: number = 0; + + @Styles + normalStyles(): void { + .opacity(1.0); + } + + @Styles + selectStyles(): void { + .opacity(0.4); + } + + onPageShow(): void { + let i: number = 0 + for (i = 0; i < 100; i++) { + this.numbers.push(i); + this.isSelectedGrid.push(false); + this.previewData.push({}); + } + } + + @Builder + RandomBuilder(idx: number) { + Column() + .backgroundColor(this.colors[idx % 9]) + .width(50) + .height(50) + .opacity(1.0) + } + + build() { + NavDestination() { + Column({ space: 12 }) { + + Column({ space: 5 }) { + // [Start create_grid_item_module] + Grid() { + ForEach(this.numbers, (idx: number) => { + GridItem() { + Column() + .backgroundColor(this.colors[idx % 9]) + .width(50) + .height(50) + .opacity(1.0) + .id('grid' + idx) + } + // [StartExclude create_grid_item_module] + .dragPreview(this.previewData[idx]) + .selectable(true) + .selected(this.isSelectedGrid[idx]) + // 设置多选显示效果 + .stateStyles({ + normal: this.normalStyles, + selected: this.selectStyles + }) + // [Start grid_item_module_selected_true] + .onClick(() => { + this.isSelectedGrid[idx] = !this.isSelectedGrid[idx]; + // [StartExclude grid_item_module_selected_true] + if (this.isSelectedGrid[idx]) { + this.numberBadge++; + let gridItemName = 'grid' + idx; + // 选中状态下提前调用componentSnapshot中的get接口获取pixmap + this.getUIContext() + .getComponentSnapshot() + .get(gridItemName, (error: Error, pixmap: image.PixelMap) => { + this.pixmap = pixmap; + this.previewData[idx] = { + pixelMap: this.pixmap + }; + }) + } else { + this.numberBadge--; + } + // [EndExclude grid_item_module_selected_true] + }) + // [End grid_item_module_selected_true] + // 使能多选拖拽,右上角数量角标需要应用设置numberBadge参数 + // [EndExclude create_grid_item_module] + // [Start drag_preview_options] + .dragPreviewOptions({ numberBadge: this.numberBadge }, + { isMultiSelectionEnabled: true, defaultAnimationBeforeLifting: true }) + // [End drag_preview_options] + .onDragStart(() => { + }) + }, (idx: string) => idx) + } + // [End create_grid_item_module] + .columnsTemplate('1fr 1fr 1fr 1fr 1fr') + .columnsGap(5) + .rowsGap(10) + .backgroundColor(0xFAEEE0) + }.width('100%').margin({ top: 5 }) + + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + .backgroundColor('#f1f2f3') + .title($r('app.string.Drag_MoreDrag_title')) + } +} +// [End more_drag] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/drop/DropAnimationExample.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/drop/DropAnimationExample.ets new file mode 100644 index 00000000000..34f5fd8551c --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/drop/DropAnimationExample.ets @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2025 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. + */ + +//[Start dropAnimationExample_start] +import { unifiedDataChannel, uniformTypeDescriptor } from '@kit.ArkData'; +export const dropAnimationRoutePrefix: string = 'dropAnimation'; + +@Entry +@Component +export struct DropAnimationExample { + @Consume pathStack: NavPathStack; + @State targetImage: string = ''; + @State imageWidth: number = 100; + @State imageHeight: number = 100; + @State imgState: Visibility = Visibility.Visible; + + customDropAnimation = + () => { + this.getUIContext().animateTo({ duration: 1000, curve: Curve.EaseOut, playMode: PlayMode.Normal }, () => { + this.imageWidth = 200; + this.imageHeight = 200; + this.imgState = Visibility.None; + }) + } + build() { + NavDestination() { + Row() { + Column() { + // $r('app.media.app_icon')需要替换为开发者所需的图像资源文件 + Image($r('app.media.app_icon')) + .width(100) + .height(100) + .draggable(true) + .margin({ left: 15, top: 40 }) + .visibility(this.imgState) + .onDragStart((event) => { + }) + .onDragEnd((event) => { + if (event.getResult() === DragResult.DRAG_SUCCESSFUL) { + console.info('Drag Success'); + } else if (event.getResult() === DragResult.DRAG_FAILED) { + console.info('Drag failed'); + } + }) + }.width('45%') + .height('100%') + + Column() { + Text('Drag Target Area') + .fontSize(20) + .width(180) + .height(40) + .textAlign(TextAlign.Center) + .margin(10) + .backgroundColor('rgb(240,250,255)') + Column() { + Image(this.targetImage) + .width(this.imageWidth) + .height(this.imageHeight) + } + .draggable(true) + .margin({ left: 15 }) + .border({ color: Color.Black, width: 1 }) + .allowDrop([uniformTypeDescriptor.UniformDataType.IMAGE]) + .onDrop((dragEvent: DragEvent) => { + let records: Array = dragEvent.getData().getRecords(); + let rect: Rectangle = dragEvent.getPreviewRect(); + this.imageWidth = Number(rect.width); + this.imageHeight = Number(rect.height); + this.targetImage = (records[0] as unifiedDataChannel.Image).imageUri; + dragEvent.useCustomDropAnimation = true; + dragEvent.executeDropAnimation(this.customDropAnimation) + }) + .width(this.imageWidth) + .height(this.imageHeight) + }.width('45%') + .height('100%') + .margin({ left: '5%' }) + } + .height('100%') + .width('100%') + } + .backgroundColor('#f1f3f5') + .title('', { + backgroundBlurStyle: BlurStyle.COMPONENT_THICK, + barStyle: BarStyle.STACK + }) + .title($r('app.string.Pages_Index_DropAnimation')) + } +} +//[End dropAnimationExample_start] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/DefaultFocus.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/DefaultFocus.ets new file mode 100644 index 00000000000..20d6ee4346a --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/DefaultFocus.ets @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2025 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. + */ + +import { KeyCode } from '@kit.InputKit'; + +// [Start focus_visualization_manage] +@Entry +@Component +export struct DefaultFocus { + @State oneButtonColor: Color = Color.Gray; + @State twoButtonColor: Color = Color.Gray; + @State threeButtonColor: Color = Color.Gray; + + build() { + NavDestination() { + Column({ space: 12 }) { + + Column({ space: 20 }) { + // 通过外接键盘的上下键可以让焦点在三个按钮间移动,按钮获焦时颜色变化,失焦时变回原背景色 + Button('First Button') + .width(260) + .height(70) + .backgroundColor(this.oneButtonColor) + .fontColor(Color.Black) + // 监听第一个组件的获焦事件,获焦后改变颜色 + .onFocus(() => { + this.oneButtonColor = Color.Green; + }) + // 监听第一个组件的失焦事件,失焦后改变颜色 + .onBlur(() => { + this.oneButtonColor = Color.Gray; + }) + + Button('Second Button') + .width(260) + .height(70) + .backgroundColor(this.twoButtonColor) + .fontColor(Color.Black) + // 监听第二个组件的获焦事件,获焦后改变颜色 + .onFocus(() => { + this.twoButtonColor = Color.Green; + }) + // 监听第二个组件的失焦事件,失焦后改变颜色 + .onBlur(() => { + this.twoButtonColor = Color.Grey; + }) + + Button('Third Button') + .width(260) + .height(70) + .backgroundColor(this.threeButtonColor) + .fontColor(Color.Black) + // 设置默认焦点 + .defaultFocus(true) + // 监听第三个组件的获焦事件,获焦后改变颜色 + .onFocus(() => { + this.threeButtonColor = Color.Green; + }) + // 监听第三个组件的失焦事件,失焦后改变颜色 + .onBlur(() => { + this.threeButtonColor = Color.Gray; + }) + }.width('100%').margin({ top: 20 }) + + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + // [StartExclude focus_visualization_manage] + .backgroundColor('#f1f2f3') + .title($r('app.string.Focus_DefaultFocus_title')) + // [EndExclude focus_visualization_manage] + } +} +// [End focus_visualization_manage] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusActive.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusActive.ets new file mode 100644 index 00000000000..8064da89c05 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusActive.ets @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start dynamic_focus_active] +@Entry +@Component +export struct FocusActiveExample { + build() { + NavDestination() { + Column() { + Button('Set Active').width(140).height(45).margin(5).onClick(() => { + this.getUIContext().getFocusController().activate(true, true); + }) + Button('Set Not Active').width(140).height(45).margin(5).onClick(() => { + this.getUIContext().getFocusController().activate(false, true); + }) + }.width('100%') + } + // [StartExclude dynamic_focus_active] + .backgroundColor('#f1f2f3') + .title($r('app.string.Pages_Index_Focus_Active_title')) + // [EndExclude dynamic_focus_active] + } +} + +// [End dynamic_focus_active] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusAndClick.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusAndClick.ets new file mode 100644 index 00000000000..83c2d642df2 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusAndClick.ets @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2025 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. + */ + +import { KeyCode } from '@kit.InputKit'; +import { ColorMetrics, LengthMetrics } from '@kit.ArkUI'; + +// [Start dynamic_focus_click_count] +@Entry +@Component +export struct FocusAndClick { + @State count: number = 0; + @State name: string = 'Button'; + + build() { + NavDestination() { + Column({ space: 12 }) { + + Column() { + Button(this.name) + .fontSize(30) + .onClick(() => { + this.count++; + if (this.count <= 0) { + this.name = 'count is negative number'; + } else if (this.count % 2 === 0) { + this.name = 'count is even number'; + } else { + this.name = 'count is odd number'; + } + }).height(60) + }.height('100%').width('100%').justifyContent(FlexAlign.Center) + + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + // [StartExclude dynamic_focus_click_count] + .backgroundColor('#f1f2f3') + .title($r('app.string.Focus_FocusAndClick_title')) + // [EndExclude dynamic_focus_click_count] + } +} +// [End dynamic_focus_click_count] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusController.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusController.ets new file mode 100644 index 00000000000..71a8160163e --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusController.ets @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2025 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. + */ + +import { KeyCode } from '@kit.InputKit'; +import { ColorMetrics, LengthMetrics } from '@kit.ArkUI'; + +// [Start dynamic_focus_control_demo] +@Entry +@Component +export struct FocusControl { + @State btColor: string = '#ff2787d9'; + @State btColor2: string = '#ff2787d9'; + + build() { + NavDestination() { + Column({ space: 12 }) { + + Column({ space: 20 }) { + Column({ space: 5 }) { + Button('Button') + .width(200) + .height(70) + .fontColor(Color.White) + .focusOnTouch(true) + .backgroundColor(this.btColor) + .onFocus(() => { + this.btColor = '#ffd5d5d5'; + }) + .onBlur(() => { + this.btColor = '#ff2787d9'; + }) + .id('testButton') + + Button('Button') + .width(200) + .height(70) + .fontColor(Color.White) + .focusOnTouch(true) + .backgroundColor(this.btColor2) + .onFocus(() => { + this.btColor2 = '#ffd5d5d5'; + }) + .onBlur(() => { + this.btColor2 = '#ff2787d9'; + }) + .id('testButton2') + + Divider() + .vertical(false) + .width('80%') + .backgroundColor('#ff707070') + .height(10) + + Button('FocusController.requestFocus') + .width(200).height(70).fontColor(Color.White) + .onClick(() => { + this.getUIContext().getFocusController().requestFocus('testButton'); + }) + .backgroundColor('#ff2787d9') + + Button('focusControl.requestFocus') + .width(200).height(70).fontColor(Color.White) + .onClick(() => { + focusControl.requestFocus('testButton2'); + }) + .backgroundColor('#ff2787d9') + + Button('clearFocus') + .width(200).height(70).fontColor(Color.White) + .onClick(() => { + this.getUIContext().getFocusController().clearFocus(); + }) + .backgroundColor('#ff2787d9') + } + } + .width('100%') + .height('100%') + + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + // [StartExclude dynamic_focus_control_demo] + .backgroundColor('#f1f2f3') + .title($r('app.string.Focus_FocusController_title')) + // [EndExclude dynamic_focus_control_demo] + } +} +// [End dynamic_focus_control_demo] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusOnClick.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusOnClick.ets new file mode 100644 index 00000000000..fe8315bee87 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusOnClick.ets @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start dynamic_focus_on_click] +@Entry +@Component +export struct FocusOnclickExample { + @State count: number = 0; + @State name: string = 'Button'; + + build() { + NavDestination() { + Column() { + Button(this.name) + .fontSize(30) + .onClick(() => { + this.count++ + if (this.count % 2 === 0) { + this.name = 'count is even number'; + } else { + this.name = 'count is odd number'; + } + }).height(60) + }.height('100%').width('100%').justifyContent(FlexAlign.Center) + } + // [StartExclude dynamic_focus_on_click] + .backgroundColor('#f1f2f3') + .title($r('app.string.Focus_Index_FocusOnClick_title')) + // [EndExclude dynamic_focus_on_click] + } +} +// [End dynamic_focus_on_click] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusPriority.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusPriority.ets new file mode 100644 index 00000000000..c52c6c1fd58 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusPriority.ets @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2025 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. + */ + +import { KeyCode } from '@kit.InputKit'; + +// [Start focus_priority_manage] +@Entry +@Component +export struct FocusPrioritySample { + + build() { + NavDestination() { + Column({ space: 12 }) { + Column({ space: 8 }) { + Row() { + Button('Button1') + .defaultFocus(true) + Button('Button2') + .focusScopePriority('RowScope', FocusPriority.PREVIOUS) + }.focusScopeId('RowScope') + } + .alignItems(HorizontalAlign.Start) + .backgroundColor('#fff') + .borderRadius(12) + .padding(12) + .width('100%') + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + // [StartExclude focus_priority_manage] + .backgroundColor('#f1f2f3') + .title($r('app.string.Focus_FocusPriority_title')) + // [EndExclude focus_priority_manage] + } +} +// [End focus_priority_manage] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusScopeId.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusScopeId.ets new file mode 100644 index 00000000000..485fb72aa78 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusScopeId.ets @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start dynamic_focus_scope_id] +@Entry +@Component +export struct FocusScopeIdExample { + build() { + NavDestination() { + Column({ space: 20 }) { + Column() { + Button('Group1') + .width(165) + .height(40) + .margin(5) + .fontColor(Color.White) + Row({ space: 5 }) { + Button('Button1') + .width(80) + .height(40) + .margin(5) + .fontColor(Color.White) + Button('Button2') + .width(80) + .height(40) + .margin(5) + .fontColor(Color.White) + } + }.focusScopeId('1', true, true) + .borderWidth(2).borderColor(Color.Red).borderStyle(BorderStyle.Dashed) + + TextInput() + Column() { + Button('Group2') + .width(165) + .height(40) + .margin(5) + .fontColor(Color.White) + Row({ space: 5 }) { + Button('Button3') + .width(80) + .height(40) + .margin(5) + .fontColor(Color.White) + Button('Button4') + .width(80) + .height(40) + .margin(5) + .fontColor(Color.White) + } + }.focusScopeId('2', true, false) + .borderWidth(2).borderColor(Color.Green).borderStyle(BorderStyle.Dashed) + + TextInput() + }.width('100%') + } + // [StartExclude dynamic_focus_scope_id] + .backgroundColor('#f1f2f3') + .title($r('app.string.Focus_Index_FocusScopeId_title')) + // [EndExclude dynamic_focus_scope_id] + } +} + +// [End dynamic_focus_scope_id] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusScopePriority.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusScopePriority.ets new file mode 100644 index 00000000000..8780e562d03 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusScopePriority.ets @@ -0,0 +1,152 @@ +/* + * Copyright (c) 2025 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. + */ + +import { KeyCode } from '@kit.InputKit'; +import { ColorMetrics, LengthMetrics } from '@kit.ArkUI'; + +// [Start focus_scope_navigation] +@Entry +@Component +export struct FocusScopePriority { + @State inputValue: string = ''; + + build() { + NavDestination() { + Column({ space: 12 }) { + + Scroll() { + Row({ space: 20 }) { + Column({ space: 20 }) { // 标记为Column1 + Column({ space: 5 }) { + Button('Group1') + .width(165) + .height(40) + .fontColor(Color.White) + Row({ space: 5 }) { + Button() + .width(80) + .height(40) + .fontColor(Color.White) + Button() + .width(80) + .height(40) + .fontColor(Color.White) + } + Row({ space: 5 }) { + Button() + .width(80) + .height(40) + .fontColor(Color.White) + Button() + .width(80) + .height(40) + .fontColor(Color.White) + } + }.borderWidth(2).borderColor(Color.Red).borderStyle(BorderStyle.Dashed) + Column({ space: 5 }) { + Button('Group2') + .width(165) + .height(40) + .fontColor(Color.White) + Row({ space: 5 }) { + Button() + .width(80) + .height(40) + .fontColor(Color.White) + Button() + .width(80) + .height(40) + .fontColor(Color.White) + .focusScopePriority('ColumnScope1', FocusPriority.PRIOR) // Column1首次获焦时获焦 + } + Row({ space: 5 }) { + Button() + .width(80) + .height(40) + .fontColor(Color.White) + Button() + .width(80) + .height(40) + .fontColor(Color.White) + } + }.borderWidth(2).borderColor(Color.Green).borderStyle(BorderStyle.Dashed) + } + .focusScopeId('ColumnScope1') + Column({ space: 5 }) { // 标记为Column2 + TextInput({placeholder: 'input', text: this.inputValue}) + .onChange((value: string) => { + this.inputValue = value; + }) + .width(156) + Button('Group3') + .width(165) + .height(40) + .fontColor(Color.White) + Row({ space: 5 }) { + Button() + .width(80) + .height(40) + .fontColor(Color.White) + Button() + .width(80) + .height(40) + .fontColor(Color.White) + } + Button() + .width(165) + .height(40) + .fontColor(Color.White) + .focusScopePriority('ColumnScope2', FocusPriority.PREVIOUS) // Column2获焦时获焦 + Row({ space: 5 }) { + Button() + .width(80) + .height(40) + .fontColor(Color.White) + Button() + .width(80) + .height(40) + .fontColor(Color.White) + } + Button() + .width(165) + .height(40) + .fontColor(Color.White) + Row({ space: 5 }) { + Button() + .width(80) + .height(40) + .fontColor(Color.White) + Button() + .width(80) + .height(40) + .fontColor(Color.White) + } + }.borderWidth(2).borderColor(Color.Orange).borderStyle(BorderStyle.Dashed) + .focusScopeId('ColumnScope2', true) // Column2为焦点组 + }.alignItems(VerticalAlign.Top) + } + + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + // [StartExclude focus_scope_navigation] + .backgroundColor('#f1f2f3') + .title($r('app.string.Focus_FocusScopePriority_title')) + // [EndExclude focus_scope_navigation] + } +} +// [End focus_scope_navigation] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusScopePriorityPrevious.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusScopePriorityPrevious.ets new file mode 100644 index 00000000000..d4e6987fbc4 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusScopePriorityPrevious.ets @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start dynamic_focus_scope_priority_previous] +@Entry +@Component +export struct FocusScopePriorityPrevious { + build() { + NavDestination() { + Row() { + Button('Button1') + .defaultFocus(true) + Button('Button2') + .focusScopePriority('RowScope', FocusPriority.PREVIOUS) + }.focusScopeId('RowScope') + } + // [StartExclude dynamic_focus_scope_priority_previous] + .backgroundColor('#f1f2f3') + .title($r('app.string.Focus_Index_FocusScopePriorityPrevious_title')) + // [EndExclude dynamic_focus_scope_priority_previous] + } +} +// [End dynamic_focus_scope_priority_previous] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusStyle.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusStyle.ets new file mode 100644 index 00000000000..41b211e9cd9 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusStyle.ets @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2025 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. + */ + +import { KeyCode } from '@kit.InputKit'; +import { ColorMetrics, LengthMetrics } from '@kit.ArkUI'; + +// [Start focus_style_manage] +@Entry +@Component +export struct FocusStyle { + + build() { + NavDestination() { + Column({ space: 12 }) { + + Column({ space: 30 }) { + Button('small black focus box') + .focusBox({ + margin: new LengthMetrics(0), + strokeColor: ColorMetrics.rgba(0, 0, 0), + }) + Button('large red focus box') + .focusBox({ + margin: LengthMetrics.px(20), + strokeColor: ColorMetrics.rgba(255, 0, 0), + strokeWidth: LengthMetrics.px(10) + }) + } + .alignItems(HorizontalAlign.Center) + .width('100%') + + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + // [StartExclude focus_style_manage] + .backgroundColor('#f1f2f3') + .title($r('app.string.Focus_FocusStyle_title')) + // [EndExclude focus_style_manage] + } +} +// [End focus_style_manage] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusTransfer.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusTransfer.ets new file mode 100644 index 00000000000..1185e332000 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusTransfer.ets @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start dynamic_focus_transfer] +@Entry +export struct FocusTransferExample { + @State logText: string = '\n'; + context = this.getUIContext().getHostContext(); + + addText(message: string) { + this.logText += `${message}\n`; + } + + build() { + NavDestination() { + Column() { + Row() { + Column() { + Button('button 1') + .margin(20) + .onClick(() => { + this.logText = this.context!.resourceManager.getStringSync($r('app.string.Focus_Event').id) + ':\n'; + this.getUIContext().getFocusController().requestFocus('Row 2') + }) + } + } + + Column() { + Row() { + Button('button 2') + .margin(20) + .onFocus(() => { + this.addText('Button 2' + this.context!.resourceManager.getStringSync($r('app.string.Get_Focus').id)); + }) + Button('button 3') + .margin(20) + .onFocus(() => { + this.addText('Button 3' + this.context!.resourceManager.getStringSync($r('app.string.Get_Focus').id)); + }) + } + .id('Row 2') + .onFocus(() => { + this.addText('Row 2' + this.context!.resourceManager.getStringSync($r('app.string.Get_Focus').id)); + }) + } + .onFocus(() => { + this.addText('Column 2' + this.context!.resourceManager.getStringSync($r('app.string.Get_Focus').id)); + }) + + Scroll() { + Text(this.logText) + .fontSize(14) + .textAlign(TextAlign.Start) + .padding(10) + } + .height('40%') + .width('100%') + .border({ width: 1, color: '#ccc' }) + .margin(10) + } + .height('100%') + .padding(20) + } + // [StartExclude dynamic_focus_transfer] + .backgroundColor('#f1f2f3') + .title($r('app.string.Focus_Index_FocusTransfer_title')) + // [EndExclude dynamic_focus_transfer] + } +} + +// [End dynamic_focus_transfer] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusTraversalGuidelines.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusTraversalGuidelines.ets new file mode 100644 index 00000000000..83c3c221877 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FocusTraversalGuidelines.ets @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start dynamic_focus_liner] +@Entry +@Component +export struct FocusLinerExample { + build() { + NavDestination() { + Column() { + Column() { + Button('Column Button1') + .width(150) + .height(45) + .fontColor(Color.White) + .margin(10) + Button('Column Button2') + .width(150) + .height(45) + .fontColor(Color.White) + .margin(10) + } + .margin(10) + + Row() { + Button('Row Button1') + .width(150) + .height(45) + .fontColor(Color.White) + .margin(10) + Button('Row Button2') + .width(150) + .height(45) + .fontColor(Color.White) + .margin(10) + } + } + } + // [StartExclude dynamic_focus_liner] + .backgroundColor('#f1f2f3') + .title($r('app.string.Focus_Index_FocusTraversalGuidelines_title')) + // [EndExclude dynamic_focus_liner] + } +} +// [End dynamic_focus_liner] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/Focusable.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/Focusable.ets new file mode 100644 index 00000000000..867020bf96c --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/Focusable.ets @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2025 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. + */ + +import { KeyCode } from '@kit.InputKit'; + +// [Start dynamic_focus_control_manage] +@Entry +@Component +export struct FocusableExample { + @State textFocusable: boolean = true; + @State textEnabled: boolean = true; + @State color1: Color = Color.Yellow; + @State color2: Color = Color.Yellow; + @State color3: Color = Color.Yellow; + + build() { + NavDestination() { + Column({ space: 12 }) { + // $r('app.string.Focus_Focusable_text')需要替换为开发者需要的字符串资源文件 + Text($r('app.string.Focus_Focusable_text')) + .fontSize(14) + .fontColor('#666') + Column({ space: 5 }) { + Text('Default Text') // 第一个Text组件未设置focusable属性,默认不可获焦 + .borderColor(this.color1) + .borderWidth(2) + .width(300) + .height(70) + .onFocus(() => { + this.color1 = Color.Blue; + }) + .onBlur(() => { + this.color1 = Color.Yellow; + }) + Divider() + + Text('focusable: ' + this.textFocusable) // 第二个Text设置了focusable初始为true,focusableOnTouch为true + .borderColor(this.color2) + .borderWidth(2) + .width(300) + .height(70) + .focusable(this.textFocusable) + .focusOnTouch(true) + .onFocus(() => { + this.color2 = Color.Blue; + }) + .onBlur(() => { + this.color2 = Color.Yellow; + }) + + Text('enabled: ' + this.textEnabled) // 第三个Text设置了focusable为true,enabled初始为true + .borderColor(this.color3) + .borderWidth(2) + .width(300) + .height(70) + .focusable(true) + .enabled(this.textEnabled) + .focusOnTouch(true) + .onFocus(() => { + this.color3 = Color.Blue; + }) + .onBlur(() => { + this.color3 = Color.Yellow; + }) + + Divider() + + Row() { + Button('Button1') + .width(140).height(70) + Button('Button2') + .width(160).height(70) + } + + Divider() + Button('Button3') + .width(300).height(70) + + Divider() + }.width('100%').justifyContent(FlexAlign.Center) + .onKeyEvent((e) => { + // 绑定onKeyEvent,在该Column组件获焦时,按下'F'键,可将第二个Text的focusable置反 + if (e.keyCode === 2022 && e.type === KeyType.Down) { + this.textFocusable = !this.textFocusable; + } + // 绑定onKeyEvent,在该Column组件获焦时,按下'G'键,可将第三个Text的enabled置反 + if (e.keyCode === 2023 && e.type === KeyType.Down) { + this.textEnabled = !this.textEnabled; + } + }) + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + // [StartExclude dynamic_focus_control_manage] + .backgroundColor('#f1f2f3') + .title($r('app.string.Focus_Focusable_title')) + // [EndExclude dynamic_focus_control_manage] + } +} +// [End dynamic_focus_control_manage] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FrojectAreaFocusFlex.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FrojectAreaFocusFlex.ets new file mode 100644 index 00000000000..7befbf0dc3e --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/FrojectAreaFocusFlex.ets @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start dynamic_focus_project_area_flex] +@Entry +@Component +export struct ProjectAreaFocusFlexExample { + build() { + NavDestination() { + Column() { + Column({ space: 5 }) { + Text('Wrap').fontSize(12).width('90%') + // 子组件多行布局 + Flex({ wrap: FlexWrap.Wrap }) { + Button('1').width(145).height(50).margin(5) + Button('2').width(145).height(50).margin(5) + Button('3').width(150).height(50).margin(5) + Button('4').width(160).height(50).margin(5) + Button('5').width(170).height(50).margin(5) + } + .width('90%') + .padding(10) + }.width('100%').margin({ top: 5 }) + }.width('100%') + } + // [StartExclude dynamic_focus_project_area_flex] + .backgroundColor('#f1f2f3') + .title($r('app.string.Focus_Index_FrojectAreaFocusFlex_title')) + // [EndExclude dynamic_focus_project_area_flex] + } +} +// [End dynamic_focus_project_area_flex] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/Index.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/Index.ets new file mode 100644 index 00000000000..20ac2bee42f --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/Index.ets @@ -0,0 +1,246 @@ +/* + * Copyright (c) 2025 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. + */ + +import { CompletedRoutableCard } from '../../common/Card'; +import { Route } from '../../common/Route'; +import { DefaultFocus } from './DefaultFocus'; +import { FocusableExample } from './Focusable'; +import { FocusAndClick } from './FocusAndClick'; +import { FocusControl } from './FocusController'; +import { FocusPrioritySample } from './FocusPriority'; +import { FocusScopePriority } from './FocusScopePriority'; +import { FocusStyle } from './FocusStyle'; +import { OnFocusBlur } from './onFocusBlur'; +import resource from '../../common/resource'; +import { FocusActiveExample } from './FocusActive'; +import { FocusOnclickExample } from './FocusOnClick'; +import { FocusScopeIdExample } from './FocusScopeId'; +import { FocusScopePriorityPrevious } from './FocusScopePriorityPrevious'; +import { FocusTransferExample } from './FocusTransfer'; +import { FocusLinerExample } from './FocusTraversalGuidelines'; +import { ProjectAreaFocusFlexExample } from './FrojectAreaFocusFlex'; +import { NextFocusExample } from './NextFocus'; +import { FocusAndBlurExample } from './OnFocusOnBlurEvents'; +import { ProjectAreaFocusExample } from './ProjectionBasedFocus'; +import { RequestFocusExample } from './RequestFocus'; +import { ScopeFocusExample } from './ScopeFocus'; +import { TabIndexExample } from './TabIndex'; +import { TabIndexFocusExample } from './TabIndexFocus'; +import { TabStopExample } from './TabStop'; + +export const Focus_ROUTE_PREFIX: string = 'Focus_ROUTE_PREFIX'; + +// [Start route_push] +const routes: Route[] = [ + { + name: `${Focus_ROUTE_PREFIX}/onFocusBlur`, + title: resource.resourceToString($r('app.string.Focus_Index_onFocusBlur_title')), + description: resource.resourceToString($r('app.string.Focus_Index_onFocusBlur_description')), + }, + { + name: `${Focus_ROUTE_PREFIX}/FocusableExample`, + title: resource.resourceToString($r('app.string.Focus_Index_FocusableExample_title1')), + description: resource.resourceToString($r('app.string.Focus_Index_FocusableExample_description1')), + }, + { + name: `${Focus_ROUTE_PREFIX}/FocusableExample`, + title: resource.resourceToString($r('app.string.Focus_Index_FocusableExample_title2')), + description: resource.resourceToString($r('app.string.Focus_Index_FocusableExample_description2')), + }, + { + name: `${Focus_ROUTE_PREFIX}/FocusableExample`, + title: resource.resourceToString($r('app.string.Focus_Index_FocusableExample_title3')), + description: resource.resourceToString($r('app.string.Focus_Index_FocusableExample_description3')), + }, + { + name: `${Focus_ROUTE_PREFIX}/FocusStyle`, + title: resource.resourceToString($r('app.string.Focus_Index_FocusStyle_title')), + description: resource.resourceToString($r('app.string.Focus_Index_FocusStyle_description')), + }, + { + name: `${Focus_ROUTE_PREFIX}/FocusControl`, + title: resource.resourceToString($r('app.string.Focus_Index_FocusControl_title')), + description: resource.resourceToString($r('app.string.Focus_Index_FocusControl_description')), + }, + { + name: `${Focus_ROUTE_PREFIX}/FocusScopePriority`, + title: resource.resourceToString($r('app.string.Focus_Index_FocusScopePriority_title')), + description: resource.resourceToString($r('app.string.Focus_Index_FocusScopePriority_description')), + }, + { + name: `${Focus_ROUTE_PREFIX}/FocusAndClick`, + title: resource.resourceToString($r('app.string.Focus_Index_FocusAndClick_title')), + description: resource.resourceToString($r('app.string.Focus_Index_FocusAndClick_description')), + }, + { + name: `${Focus_ROUTE_PREFIX}/FocusActive`, + title: resource.resourceToString($r('app.string.Pages_Index_Focus_Active_title')), + description: resource.resourceToString($r('app.string.Focus_Index_Focus_Active_description')), + }, + { + name: `${Focus_ROUTE_PREFIX}/FocusOnClick`, + title: resource.resourceToString($r('app.string.Focus_Index_FocusOnClick_title')), + description: resource.resourceToString($r('app.string.Focus_Index_FocusOnClick_description')), + }, + { + name: `${Focus_ROUTE_PREFIX}/FocusScopeId`, + title: resource.resourceToString($r('app.string.Focus_Index_FocusScopeId_title')), + description: resource.resourceToString($r('app.string.Focus_Index_FocusScopeId_description')), + }, + { + name: `${Focus_ROUTE_PREFIX}/ FocusScopePriorityPrevious`, + title: resource.resourceToString($r('app.string.Focus_Index_FocusScopePriorityPrevious_title')), + description: resource.resourceToString($r('app.string.Focus_Index_FocusScopePriorityPrevious_description')), + }, + { + name: `${Focus_ROUTE_PREFIX}/ FocusTransfer`, + title: resource.resourceToString($r('app.string.Focus_Index_FocusTransfer_title')), + description: resource.resourceToString($r('app.string.Focus_Index_FocusTransfer_description')), + }, + { + name: `${Focus_ROUTE_PREFIX}/ FocusTraversalGuidelines`, + title: resource.resourceToString($r('app.string.Focus_Index_FocusTraversalGuidelines_title')), + description: resource.resourceToString($r('app.string.Focus_Index_FocusTransfer_desFocus_Index_FocusTraver_descriptioncription')), + }, + { + name: `${Focus_ROUTE_PREFIX}/ FrojectAreaFocusFlex`, + title: resource.resourceToString($r('app.string.Focus_Index_FrojectAreaFocusFlex_title')), + description: resource.resourceToString($r('app.string.Focus_Index_FrojectAreaFocusFlex_description')), + }, + { + name: `${Focus_ROUTE_PREFIX}/ NextFocus`, + title: resource.resourceToString($r('app.string.Focus_Index_NextFocus_title')), + description: resource.resourceToString($r('app.string.Focus_Index_NextFocus_description')), + }, + { + name: `${Focus_ROUTE_PREFIX}/ OnFocusOnBlurEvents`, + title: resource.resourceToString($r('app.string.Focus_Index_OnFocusOnBlurEvents_title')), + description: resource.resourceToString($r('app.string.Focus_Index_OnFocusOnBlurEvents_description')), + }, + { + name: `${Focus_ROUTE_PREFIX}/ ProjectionBasedFocus`, + title: resource.resourceToString($r('app.string.Focus_Index_ProjectionBasedFocus_title')), + description: resource.resourceToString($r('app.string.Focus_Index_ProjectionBasedFocus_description')), + }, + { + name: `${Focus_ROUTE_PREFIX}/ RequestFocus`, + title: resource.resourceToString($r('app.string.Focus_Index_RequestFocus_title')), + description: resource.resourceToString($r('app.string.Focus_Index_RequestFocus_description')), + }, + { + name: `${Focus_ROUTE_PREFIX}/ ScopeFocus`, + title: resource.resourceToString($r('app.string.Focus_Index_ScopeFocus_title')), + description: resource.resourceToString($r('app.string.Focus_Index_ScopeFocus_description')), + }, + { + name: `${Focus_ROUTE_PREFIX}/ TabIndex`, + title: resource.resourceToString($r('app.string.Tab_Index_TabIndex_title')), + description: resource.resourceToString($r('app.string.Tab_Index_TabIndex_description')), + }, + { + name: `${Focus_ROUTE_PREFIX}/ TabIndexFocus`, + title: resource.resourceToString($r('app.string.Tab_Index_TabIndexFocus_title')), + description: resource.resourceToString($r('app.string.Tab_Index_TabIndexFocus_description')), + }, + { + name: `${Focus_ROUTE_PREFIX}/ TabStop`, + title: resource.resourceToString($r('app.string.Tab_Index_TabStop_title')), + description: resource.resourceToString($r('app.string.Tab_Index_TabStop_description')), + } +] +// [End route_push] +@Builder +export function FocusDestination(name: string) { + if (name === Focus_ROUTE_PREFIX) { + FocusExample(); + } else if (name === routes[0].name) { + OnFocusBlur(); + } else if (name === routes[1].name) { + FocusableExample(); + } else if (name === routes[2].name) { + DefaultFocus(); + } else if (name === routes[3].name) { + FocusPrioritySample(); + } else if (name === routes[4].name) { + FocusStyle(); + } else if (name === routes[5].name) { + FocusControl(); + } else if (name === routes[6].name) { + FocusScopePriority(); + } else if (name === routes[7].name) { + FocusAndClick(); + } else if (name === routes[8].name) { + FocusActiveExample(); + } else if (name === routes[9].name) { + FocusOnclickExample(); + } else if (name === routes[10].name) { + FocusScopeIdExample(); + } else if (name === routes[11].name) { + FocusScopePriorityPrevious(); + } else if (name === routes[12].name) { + FocusTransferExample(); + } else if (name === routes[13].name) { + FocusLinerExample(); + } else if (name === routes[14].name) { + ProjectAreaFocusFlexExample(); + } else if (name === routes[15].name) { + NextFocusExample(); + } else if (name === routes[16].name) { + FocusAndBlurExample(); + } else if (name === routes[17].name) { + ProjectAreaFocusExample(); + } else if (name === routes[18].name) { + RequestFocusExample(); + } else if (name === routes[19].name) { + ScopeFocusExample(); + } else if (name === routes[20].name) { + TabIndexExample(); + } else if (name === routes[21].name) { + TabIndexFocusExample(); + } else if (name === routes[22].name) { + TabStopExample(); + } +} + +@Entry +@Component +struct FocusExample { + @Consume pathStack: NavPathStack; + + build() { + NavDestination() { + List({ space: 12 }) { + ForEach(routes, (route: Route) => { + ListItem() { + CompletedRoutableCard({ title: route.title, description: route.description }) + } + .width('100%') + .onClick(() => { + this.pathStack.pushPath({ name: route.name }) + }) + }) + } + .contentStartOffset(20) + .padding({ left: 16, right: 16 }) + } + .backgroundColor('#f1f3f5') + .title('', { + backgroundBlurStyle: BlurStyle.COMPONENT_THICK, + barStyle: BarStyle.STACK + }) + //$r('app.string.Focus_Index_title')需要替换为开发者所需的字符串资源文件 + .title($r('app.string.Focus_Index_title')) + } +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/NextFocus.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/NextFocus.ets new file mode 100644 index 00000000000..a6a5ba72af5 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/NextFocus.ets @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start dynamic_focus_next] +@Entry +@Component +export struct NextFocusExample { + build() { + NavDestination() { + Column({space: 30}) { + Row().height('30%') + Row({space: 10}) { + Button('A') + .id('A') + .nextFocus({forward: 'F', backward: 'C', down: 'B'}) + Button('B') + .id('B') + .nextFocus({ down: 'C'}) + Button('C') + .id('C') + } + Column({space: 10}) { + Button('D') + .id('D') + Button('E') + .id('E') + .nextFocus({forward: 'A', backward: 'M', up: 'E', right: 'F'}) + } + Row({space: 10}) { + Button('F') + .id('F') + .nextFocus({forward: 'B', down: 'A'}); + } + }.width('100%') + } + // [StartExclude dynamic_focus_next] + .backgroundColor('#f1f2f3') + .title($r('app.string.Focus_Index_NextFocus_title')) + // [EndExclude dynamic_focus_next] + } +} +// [End dynamic_focus_next] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/OnFocusOnBlurEvents.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/OnFocusOnBlurEvents.ets new file mode 100644 index 00000000000..4efb5cf7a2f --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/OnFocusOnBlurEvents.ets @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start dynamic_focus_blur] +@Entry +@Component +export struct FocusAndBlurExample { + build() { + NavDestination() { + Column() { + Column({ space: 5 }) { + Row() { // 父节点Row1 + Button('Button1') // 子节点Button1 + .width(140) + .height(45) + .margin(5) + .onFocus(() => { + console.info('Button1 onFocus'); + }) + .onBlur(() => { + console.info('Button1 onBlur'); + }) + } + .onFocus(() => { + console.info('Row1 onFocus'); + }) + .onBlur(() => { + console.info('Row1 onBlur'); + }) + + Row() { // 父节点Row2 + Button('Button2') // 子节点Button2 + .width(140) + .height(45) + .margin(5) + .onFocus(() => { + console.info('Button2 onFocus'); + }) + .onBlur(() => { + console.info('Button2 onBlur'); + }) + } + .onFocus(() => { + console.info('Row2 onFocus'); + }) + .onBlur(() => { + console.info('Row2 onBlur'); + }) + }.width('100%').margin({ top: 5 }) + }.width('100%') + } + // [StartExclude dynamic_focus_blur] + .backgroundColor('#f1f2f3') + .title($r('app.string.Focus_Index_OnFocusOnBlurEvents_title')) + // [EndExclude dynamic_focus_blur] + } +} +// [End dynamic_focus_blur] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/ProjectionBasedFocus.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/ProjectionBasedFocus.ets new file mode 100644 index 00000000000..50371d39836 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/ProjectionBasedFocus.ets @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start dynamic_focus_project_area] +@Entry +@Component +export struct ProjectAreaFocusExample { + build() { + NavDestination() { + Column() { + Column({ space: 5 }) { + Text('Wrap').fontSize(12).width('90%') + // 子组件多行布局 + Flex({ wrap: FlexWrap.Wrap }) { + Button('1').width(140).height(50).margin(5) + Button('2').width(140).height(50).margin(5) + Button('3').width(140).height(50).margin(5) + Button('4').width(140).height(50).margin(5) + Button('5').width(140).height(50).margin(5) + } + .width('90%') + .padding(10) + }.width('100%').margin({ top: 5 }) + }.width('100%') + } + // [StartExclude dynamic_focus_project_area] + .backgroundColor('#f1f2f3') + .title($r('app.string.Focus_Index_ProjectionBasedFocus_title')) + // [EndExclude dynamic_focus_project_area] + } +} +// [End dynamic_focus_project_area] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/RequestFocus.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/RequestFocus.ets new file mode 100644 index 00000000000..f9d47ab2247 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/RequestFocus.ets @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start dynamic_focus_request] +import { ColorMetrics, LengthMetrics } from '@kit.ArkUI'; + +@Entry +@Component +export struct RequestFocusExample { + build() { + NavDestination() { + Column({ space: 30 }) { + Button('small black focus box') + .focusBox({ + margin: new LengthMetrics(0), + strokeColor: ColorMetrics.rgba(0, 0, 0), + }) + Button('large red focus box') + .focusBox({ + margin: LengthMetrics.px(20), + strokeColor: ColorMetrics.rgba(255, 0, 0), + strokeWidth: LengthMetrics.px(10) + }) + } + .alignItems(HorizontalAlign.Center) + .width('100%') + } + // [StartExclude dynamic_focus_request] + .backgroundColor('#f1f2f3') + .title($r('app.string.Focus_Index_RequestFocus_title')) + // [EndExclude dynamic_focus_request] + } +} + +// [End dynamic_focus_request] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/ScopeFocus.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/ScopeFocus.ets new file mode 100644 index 00000000000..081d6b7f84c --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/ScopeFocus.ets @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start dynamic_focus_scope] +@Entry +@Component +export struct ScopeFocusExample { + @State scopeFocusState: boolean = true; + + build() { + NavDestination() { + Column() { + Column({ space: 5 }) { + Text('容器获焦').textAlign(TextAlign.Center) + } + .justifyContent(FlexAlign.Center) + .width('80%') + .height(50) + .margin({ top: 5, bottom: 5 }) + .onClick(() => { + }) + .focusable(this.scopeFocusState) + + Button('Button1') + .width(140) + .height(45) + .margin(5) + .onClick(() => { + this.scopeFocusState = !this.scopeFocusState; + console.info('Button1 onFocus'); + }) + Button('Button2') + .width(140) + .height(45) + .margin(5) + }.width('100%') + } + // [StartExclude dynamic_focus_scope] + .backgroundColor('#f1f2f3') + .title($r('app.string.Focus_Index_ScopeFocus_title')) + // [EndExclude dynamic_focus_scope] + } +} + +// [End dynamic_focus_scope] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/TabIndex.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/TabIndex.ets new file mode 100644 index 00000000000..8aa6155453a --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/TabIndex.ets @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start dynamic_focus_tab_index] +@Entry +@Component +export struct TabIndexExample { + build() { + NavDestination() { + Column() { + Button('Button1') + .width(140) + .height(45) + .margin(5) + Button('Focus Button1') + .width(140) + .height(45) + .margin(5).tabIndex(1) + Button('Button2') + .width(140) + .height(45) + .margin(5) + Button('Focus Button2') + .width(140) + .height(45) + .margin(5).tabIndex(2) + }.width('100%') + } + // [StartExclude dynamic_focus_tab_index] + .backgroundColor('#f1f2f3') + .title($r('app.string.Tab_Index_TabIndex_title')) + // [EndExclude dynamic_focus_tab_index] + } +} + +// [End dynamic_focus_tab_index] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/TabIndexFocus.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/TabIndexFocus.ets new file mode 100644 index 00000000000..ad0cfb8bbaf --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/TabIndexFocus.ets @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start dynamic_focus_tab_index_focus] +@Entry +@Component +export struct TabIndexFocusExample { + build() { + NavDestination() { + Column() { + Button('Button1') + .width(140) + .height(45) + .margin(5).tabIndex(1) + Column() { + Button('Button2') + .width(140) + .height(45) + .margin(5) + Button('Button3') + .width(140) + .height(45) + .margin(5) + }.tabIndex(2) + }.width('100%') + } + // [StartExclude dynamic_focus_tab_index_focus] + .backgroundColor('#f1f2f3') + .title($r('app.string.Tab_Index_TabIndexFocus_title')) + // [EndExclude dynamic_focus_tab_index_focus] + } +} +// [End dynamic_focus_tab_index_focus] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/TabStop.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/TabStop.ets new file mode 100644 index 00000000000..9971826eab1 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/TabStop.ets @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start dynamic_focus_tab_stop] +@Entry +@Component +export struct TabStopExample { + build() { + NavDestination() { + Column({ space: 20 }) { + Button('Button1') + .width(140) + .height(45) + .margin(5) + Column() { + Button('Button2') + .width(140) + .height(45) + .margin(5) + Button('Button3') + .width(140) + .height(45) + .margin(5) + }.tabStop(true) + }.width('100%') + } + // [StartExclude dynamic_focus_tab_stop] + .backgroundColor('#f1f2f3') + .title($r('app.string.Tab_Index_TabStop_title')) + // [EndExclude dynamic_focus_tab_stop] + } +} + +// [End dynamic_focus_tab_stop] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/onFocusBlur.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/onFocusBlur.ets new file mode 100644 index 00000000000..74f4392be36 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/focus/onFocusBlur.ets @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2025 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. + */ + +import { KeyCode } from '@kit.InputKit'; + +// [Start focus_dynamic_reflect] +@Entry +@Component +export struct OnFocusBlur { + @State oneButtonColor: Color = Color.Gray; + @State twoButtonColor: Color = Color.Gray; + @State threeButtonColor: Color = Color.Gray; + + build() { + NavDestination() { + Column({ space: 12 }) { + + Column({ space: 20 }) { + // 通过外接键盘的上下键可以让焦点在三个按钮间移动,按钮获焦时颜色变化,失焦时变回原背景色 + Button('First Button') + .width(260) + .height(70) + .backgroundColor(this.oneButtonColor) + .fontColor(Color.Black) + // 监听第一个组件的获焦事件,获焦后改变颜色 + .onFocus(() => { + this.oneButtonColor = Color.Green; + }) + // 监听第一个组件的失焦事件,失焦后改变颜色 + .onBlur(() => { + this.oneButtonColor = Color.Gray; + }) + + Button('Second Button') + .width(260) + .height(70) + .backgroundColor(this.twoButtonColor) + .fontColor(Color.Black) + // 监听第二个组件的获焦事件,获焦后改变颜色 + .onFocus(() => { + this.twoButtonColor = Color.Green; + }) + // 监听第二个组件的失焦事件,失焦后改变颜色 + .onBlur(() => { + this.twoButtonColor = Color.Grey; + }) + + Button('Third Button') + .width(260) + .height(70) + .backgroundColor(this.threeButtonColor) + .fontColor(Color.Black) + // 监听第三个组件的获焦事件,获焦后改变颜色 + .onFocus(() => { + this.threeButtonColor = Color.Green; + }) + // 监听第三个组件的失焦事件,失焦后改变颜色 + .onBlur(() => { + this.threeButtonColor = Color.Gray; + }) + }.width('100%').margin({ top: 20 }) + + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + // [StartExclude focus_dynamic_reflect] + .backgroundColor('#f1f2f3') + .title($r('app.string.Focus_OnFocusBlur_title')) + // [EndExclude focus_dynamic_reflect] + } +} +// [End focus_dynamic_reflect] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/gesturejudge/GestureJudge.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/gesturejudge/GestureJudge.ets new file mode 100644 index 00000000000..bce286e8def --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/gesturejudge/GestureJudge.ets @@ -0,0 +1,171 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start gesture_judge] +// [Start set_gesture_judge] +@Entry +@Component +export struct GestureJudge { + scroller: Scroller = new Scroller(); + // [StartExclude set_gesture_judge] + scroller2: Scroller = new Scroller(); + private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; + private childRecognizer: GestureRecognizer = new GestureRecognizer(); + private currentRecognizer: GestureRecognizer = new GestureRecognizer(); + private lastOffset: number = 0; + // [EndExclude set_gesture_judge] + + build() { + NavDestination() { + Column({ space: 12 }) { + Text($r('app.string.gesture_GestureJudge_text')) + .fontSize(14) + .fontColor('#666') + Stack({ alignContent: Alignment.TopStart }) { + Scroll(this.scroller) { // 外部滚动容器 + Column() { + Text('Scroll Area') + .width('90%') + .height(150) + .backgroundColor(0xFFFFFF) + .borderRadius(15) + .fontSize(16) + .textAlign(TextAlign.Center) + .margin({ top: 10 }) + Scroll(this.scroller2) { // 内部滚动容器 + Column() { + Text('Scroll Area2') + .width('90%') + .height(150) + .backgroundColor(0xFFFFFF) + .borderRadius(15) + .fontSize(16) + .textAlign(TextAlign.Center) + .margin({ top: 10 }) + Column() { + ForEach(this.arr, (item: number) => { + Text(item.toString()) + .width('90%') + .height(150) + .backgroundColor(0xFFFFFF) + .borderRadius(15) + .fontSize(16) + .textAlign(TextAlign.Center) + .margin({ top: 10 }) + }, (item: string) => item) + }.width('100%') + } + } + .id('inner') + .width('100%') + .height(800) + }.width('100%') + } + .id('outer') + .height(600) + .scrollable(ScrollDirection.Vertical) // 滚动方向纵向 + .scrollBar(BarState.On) // 滚动条常驻显示 + .scrollBarColor(Color.Gray) // 滚动条颜色 + .scrollBarWidth(10) // 滚动条宽度 + .edgeEffect(EdgeEffect.None) + .shouldBuiltInRecognizerParallelWith((current: GestureRecognizer, others: Array) => { + for (let i = 0; i < others.length; i++) { + let target = others[i].getEventTargetInfo(); + if (target.getId() == 'inner' && others[i].isBuiltIn() && + others[i].getType() == GestureControl.GestureType.PAN_GESTURE) { // 找到将要组成并行手势的识别器 + this.currentRecognizer = current; // 保存当前组件的识别器 + this.childRecognizer = others[i]; // 保存将要组成并行手势的识别器 + return others[i]; // 返回和当前手势将要组成并行手势的识别器 + } + } + return undefined; + }) + .onGestureRecognizerJudgeBegin((event: BaseGestureEvent, current: GestureRecognizer, + others: Array) => { // 在识别器即将要成功时,根据当前组件状态,设置识别器使能状态 + let target = current.getEventTargetInfo(); + if (target.getId() == 'outer' && current.isBuiltIn() && + current.getType() == GestureControl.GestureType.PAN_GESTURE) { + for (let i = 0; i < others.length; i++) { + let target = others[i].getEventTargetInfo() as ScrollableTargetInfo; + if (target instanceof ScrollableTargetInfo && target.getId() == 'inner') { // 找到响应链上对应并行的识别器 + let panEvent = event as PanGestureEvent; + this.childRecognizer.setEnabled(true); + this.currentRecognizer.setEnabled(false); + if (target.isEnd()) { // 根据当前组件状态以及移动方向动态控制识别器使能状态 + if (panEvent && panEvent.offsetY < 0) { + this.childRecognizer.setEnabled(false); + this.currentRecognizer.setEnabled(true); + } + } else if (target.isBegin()) { + if (panEvent.offsetY > 0) { + this.childRecognizer.setEnabled(false); + this.currentRecognizer.setEnabled(true); + } + } + } + } + } + return GestureJudgeResult.CONTINUE; + }) + // [StartExclude set_gesture_judge] + .parallelGesture( // 绑定一个Pan手势作为动态控制器 + PanGesture() + .onActionUpdate((event: GestureEvent) => { + if (this.childRecognizer.getState() != GestureRecognizerState.SUCCESSFUL || + this.currentRecognizer.getState() != GestureRecognizerState.SUCCESSFUL) { + // 如果识别器状态不是SUCCESSFUL,则不做控制 + return; + } + let target = this.childRecognizer.getEventTargetInfo() as ScrollableTargetInfo; + let currentTarget = this.currentRecognizer.getEventTargetInfo() as ScrollableTargetInfo; + if (target instanceof ScrollableTargetInfo && currentTarget instanceof ScrollableTargetInfo) { + this.childRecognizer.setEnabled(true); + this.currentRecognizer.setEnabled(false); + if (target.isEnd()) { // 在移动过程中实时根据当前组件状态,控制识别器的开闭状态 + if ((event.offsetY - this.lastOffset) < 0) { + this.childRecognizer.setEnabled(false); + if (currentTarget.isEnd()) { + this.currentRecognizer.setEnabled(false); + } else { + this.currentRecognizer.setEnabled(true); + } + } + } else if (target.isBegin()) { + if ((event.offsetY - this.lastOffset) > 0) { + this.childRecognizer.setEnabled(false); + if (currentTarget.isBegin()) { + this.currentRecognizer.setEnabled(false); + } else { + this.currentRecognizer.setEnabled(true); + } + } + } + } + this.lastOffset = event.offsetY; + }) + ) + // [EndExclude set_gesture_judge] + }.width('100%').height('90%').backgroundColor(0xDCDCDC) + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + .backgroundColor('#f1f2f3') + .title($r('app.string.gesture_GestureJudge_title')) + } +} +// [End set_gesture_judge] +// [End gesture_judge] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/gesturejudge/Index.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/gesturejudge/Index.ets new file mode 100644 index 00000000000..b63a44b1a75 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/gesturejudge/Index.ets @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2025 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. + */ + +import { CompletedRoutableCard } from '../../common/Card'; +import { Route } from '../../common/Route'; +import { GestureJudge } from './GestureJudge'; +import resource from '../../common/resource'; + + +export const GestureJudge_ROUTE_PREFIX: string = 'GestureJudge_ROUTE_PREFIX'; + +const routes: Route[] = [ + { + name: `${GestureJudge_ROUTE_PREFIX}/GestureJudge`, + title: resource.resourceToString($r('app.string.gesture_Index_GestureJudge_title')), + description: resource.resourceToString($r('app.string.gesture_Index_GestureJudge_description')), + } +] + +@Builder +export function GestureJudgeDestination(name: string) { + if (name === GestureJudge_ROUTE_PREFIX) { + GestureJudgeExample(); + } else if (name === routes[0].name) { + GestureJudge(); + } +} + +@Entry +@Component +struct GestureJudgeExample { + @Consume pathStack: NavPathStack; + + build() { + NavDestination() { + List({ space: 12 }) { + ForEach(routes, (route: Route) => { + ListItem() { + CompletedRoutableCard({ title: route.title, description: route.description }) + } + .width('100%') + .onClick(() => { + this.pathStack.pushPath({ name: route.name }); + }) + }) + } + .contentStartOffset(20) + .padding({ left: 16, right: 16 }) + } + .backgroundColor('#f1f3f5') + .title('', { + backgroundBlurStyle: BlurStyle.COMPONENT_THICK, + barStyle: BarStyle.STACK + }) + .title($r('app.string.gesture_Index_title')) + } +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/grid/GridEts.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/grid/GridEts.ets new file mode 100644 index 00000000000..861cb6dd945 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/grid/GridEts.ets @@ -0,0 +1,198 @@ +/* + * Copyright (c) 2025 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. + */ + +//[Start GridEts_start] +import { image } from '@kit.ImageKit'; +import { unifiedDataChannel as UDC } from '@kit.ArkData'; +import { dragController } from '@kit.ArkUI'; + +export const gridRoutePrefix: string = 'gridExample'; + +@Entry +@Component +export struct GridEts { + @Consume pathStack: NavPathStack; + @State pixmap: image.PixelMap | undefined = undefined + @State numbers: number[] = [] + @State isSelectedGrid: boolean[] = [] + @State previewData: DragItemInfo[] = [] + @State numberBadge: number = 0; + unifiedData: UnifiedData | undefined = undefined; + timeout: number = 1 + finished: boolean = false; + dragEvent: DragEvent | undefined; + + @Styles + normalStyles(): void { + .opacity(1.0) + } + + @Styles + selectStyles(): void { + .opacity(0.4) + } + + aboutToAppear(): void { + let i: number = 0 + for(i = 0; i < 500; i++) { + this.numbers.push(i) + this.isSelectedGrid.push(false) + this.previewData.push({}) + } +} + +loadData() { + this.timeout = setTimeout(() => { + //数据准备完成后的状态 + if (this.dragEvent) { + this.dragEvent.setData(this.unifiedData); + } + this.getUIContext().getDragController().notifyDragStartRequest(dragController.DragStartRequestStatus.READY); + this.finished = true; + }, 4000); +} + +@Builder +RandomBuilder(idx: number) { + Column() + .backgroundColor(Color.Blue) + .width(50) + .height(50) + .opacity(1.0) +} + +build() { + NavDestination() { + Column({ space: 5 }) { + Button('全选') + .onClick(() => { + for (let i = 0; i < this.isSelectedGrid.length; i++) { + if (this.isSelectedGrid[i] === false) { + this.numberBadge++; + this.isSelectedGrid[i] = true; + let data: UDC.Image = new UDC.Image(); + // '../../../resources/base/media/background.png'需要替换为开发者所需的图像资源文件 + data.uri = '/resources/base/media/background.png'; + if (!this.unifiedData) { + this.unifiedData = new UDC.UnifiedData(data); + } + this.unifiedData.addRecord(data); + let gridItemName = 'grid' + i; + // 选中状态下提前调用componentSnapshot中的get接口获取pixmap + this.getUIContext().getComponentSnapshot().get(gridItemName, (error: Error, pixmap: image.PixelMap) => { + this.pixmap = pixmap + this.previewData[i] = { + pixelMap: this.pixmap + } + }) + } + } + }) + Grid() { + ForEach(this.numbers, (idx: number) => { + GridItem() { + Column() + .backgroundColor(Color.Blue) + .width(50) + .height(50) + .opacity(1.0) + .id('grid' + idx) + } + .dragPreview(this.previewData[idx]) + .selectable(true) + .selected(this.isSelectedGrid[idx]) + // 设置多选显示效果 + .stateStyles({ + normal: this.normalStyles, + selected: this.selectStyles + }) + .onClick(() => { + this.isSelectedGrid[idx] = !this.isSelectedGrid[idx]; + if (this.isSelectedGrid[idx]) { + let data: UDC.Image = new UDC.Image(); + // '../../../resources/base/media/background.png'需要替换为开发者所需的图像资源文件 + data.uri = '../../../resources/base/media/background.png'; + if (!this.unifiedData) { + this.unifiedData = new UDC.UnifiedData(data); + } + this.unifiedData.addRecord(data); + this.numberBadge++; + let gridItemName = 'grid' + idx; + // 选中状态下提前调用componentSnapshot中的get接口获取pixmap + this.getUIContext().getComponentSnapshot().get(gridItemName, (error: Error, pixmap: image.PixelMap) => { + this.pixmap = pixmap; + this.previewData[idx] = { + pixelMap: this.pixmap + } + }) + } else { + this.numberBadge--; + for (let i = 0; i < this.isSelectedGrid.length; i++) { + if (this.isSelectedGrid[i] === true) { + let data: UDC.Image = new UDC.Image(); + // '../../../resources/base/media/background.png'需要替换为开发者所需的图像资源文件 + data.uri = '../../../resources/base/media/background.png'; + if (!this.unifiedData) { + this.unifiedData = new UDC.UnifiedData(data); + } + this.unifiedData.addRecord(data); + } + } + } + }) + .onPreDrag((status: PreDragStatus) => { + // 1.长按时通知,350ms回调 + if (status == PreDragStatus.PREPARING_FOR_DRAG_DETECTION) { + // 2.用户按住一段时间,还没有松手,有可能会拖拽,此时可准备数据 + this.loadData() + } else if (status == PreDragStatus.ACTION_CANCELED_BEFORE_DRAG) { + // 3.用户停止拖拽交互,取消数据准备(模拟方法:定时器取消) + clearTimeout(this.timeout); + } + }) + // >=500ms,移动超过10vp触发 + .onDragStart((event: DragEvent) => { + this.dragEvent = event; + if (this.finished == false) { + this.getUIContext() + .getDragController() + .notifyDragStartRequest(dragController.DragStartRequestStatus.WAITING); + } else { + event.setData(this.unifiedData); + } + }) + .onDragEnd(() => { + this.finished = false; + }) + }, (idx: string) => idx) + } + .width('100%') + .height('100%') + .columnsTemplate('1fr 1fr 1fr 1fr 1fr') + .columnsGap(5) + .rowsGap(10) + .backgroundColor(0xFAEEE0) + }.width('100%').margin({ top: 5 }).height('100%') + } + .backgroundColor('#f1f3f5') + .title('', { + backgroundBlurStyle: BlurStyle.COMPONENT_THICK, + barStyle: BarStyle.STACK + }) + .title($r('app.string.Pages_Index_GridExample')) +} +} + +//[End GridEts_start] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/groupgesture/Exclusive.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/groupgesture/Exclusive.ets new file mode 100644 index 00000000000..a72dfbf7621 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/groupgesture/Exclusive.ets @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start exclusive_recognition_gesture] +@Entry +@Component +export struct Exclusive { + @State count1: number = 0; + @State count2: number = 0; + + build() { + NavDestination() { + Column({ space: 12 }) { + Text($r('app.string.groupgesture_Exclusive_text')) + .fontSize(14) + .fontColor('#666') + Column() { + Text('Exclusive gesture\n' + 'tapGesture count is 1:' + this.count1 + '\ntapGesture count is 2:' + this.count2 + '\n') + .fontSize(28) + } + .height(200) + .width('100%') + //以下组合手势为互斥并别,单击手势识别成功后,双击手势会识别失败 + .gesture( + GestureGroup(GestureMode.Exclusive, + TapGesture({ count: 1 }) + .onAction(() => { + this.count1++; + }), + TapGesture({ count: 2 }) + .onAction(() => { + this.count2++; + }) + ) + ) + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + .backgroundColor('#f1f2f3') + .title($r('app.string.groupgesture_Exclusive_title')) + } +} +// [End exclusive_recognition_gesture] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/groupgesture/Index.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/groupgesture/Index.ets new file mode 100644 index 00000000000..f11dc4be9a0 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/groupgesture/Index.ets @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2025 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. + */ + +import { CompletedRoutableCard } from '../../common/Card'; +import { Route } from '../../common/Route'; +import { Exclusive } from './Exclusive'; +import { Parallel } from './Parallel'; +import { Sequence } from './Sequence'; +import resource from '../../common/resource'; + +export const GroupGesture_ROUTE_PREFIX: string = 'GroupGestureExample'; + +const routes: Route[] = [ + { + name: `${GroupGesture_ROUTE_PREFIX}/Sequence`, + title: resource.resourceToString($r('app.string.groupgesture_Index_Sequence_title')), + description: resource.resourceToString($r('app.string.groupgesture_Index_Sequence_description')), + }, + { + name: `${GroupGesture_ROUTE_PREFIX}/Parallel`, + title: resource.resourceToString($r('app.string.groupgesture_Index_Parallel_title')), + description: resource.resourceToString($r('app.string.groupgesture_Index_Parallel_description')), + }, + { + name: `${GroupGesture_ROUTE_PREFIX}/Exclusive`, + title: resource.resourceToString($r('app.string.groupgesture_Index_Exclusive_title')), + description: resource.resourceToString($r('app.string.groupgesture_Index_Exclusive_description')), + } +] + +@Builder +export function GroupGestureDestination(name: string) { + if (name === GroupGesture_ROUTE_PREFIX) { + GroupGestureExample(); + } else if (name === routes[0].name) { + Sequence(); + } else if (name === routes[1].name) { + Parallel(); + } else if (name === routes[2].name) { + Exclusive(); + } +} + +@Entry +@Component +struct GroupGestureExample { + @Consume pathStack: NavPathStack; + + build() { + NavDestination() { + List({ space: 12 }) { + ForEach(routes, (route: Route) => { + ListItem() { + CompletedRoutableCard({ title: route.title, description: route.description }) + } + .width('100%') + .onClick(() => { + this.pathStack.pushPath({ name: route.name }); + }) + }) + } + .contentStartOffset(20) + .padding({ left: 16, right: 16 }) + } + .backgroundColor('#f1f3f5') + .title('', { + backgroundBlurStyle: BlurStyle.COMPONENT_THICK, + barStyle: BarStyle.STACK + }) + .title($r('app.string.groupgesture_Index_title')) + } +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/groupgesture/Parallel.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/groupgesture/Parallel.ets new file mode 100644 index 00000000000..e08c5b8b0f3 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/groupgesture/Parallel.ets @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start parallel_recognition_gesture] +@Entry +@Component +export struct Parallel { + @State count1: number = 0; + @State count2: number = 0; + + build() { + NavDestination() { + Column({ space: 12 }) { + Text($r('app.string.groupgesture_Parallel_text')) + .fontSize(14) + .fontColor('#666') + Column() { + Text('Parallel gesture\n' + 'tapGesture count is 1:' + this.count1 + '\ntapGesture count is 2:' + this.count2 + '\n') + .fontSize(28) + } + .height(200) + .width('100%') + // 以下组合手势为并行并别,单击手势识别成功后,若在规定时间内再次点击,双击手势也会识别成功 + .gesture( + GestureGroup(GestureMode.Parallel, + TapGesture({ count: 1 }) + .onAction(() => { + this.count1++; + }), + TapGesture({ count: 2 }) + .onAction(() => { + this.count2++; + }) + ) + ) + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + .backgroundColor('#f1f2f3') + .title($r('app.string.groupgesture_Parallel_title')) + } +} +// [End parallel_recognition_gesture] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/groupgesture/Sequence.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/groupgesture/Sequence.ets new file mode 100644 index 00000000000..9f88c3236bf --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/groupgesture/Sequence.ets @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start sequence_recognition_gesture] +@Entry +@Component +export struct Sequence { + @State offsetX: number = 0; + @State offsetY: number = 0; + @State count: number = 0; + @State positionX: number = 0; + @State positionY: number = 0; + @State borderStyles: BorderStyle = BorderStyle.Solid; + + build() { + NavDestination() { + Column({ space: 12 }) { + Text($r('app.string.groupgesture_Sequence_text')) + .fontSize(14) + .fontColor('#666') + Column() { + Text('sequence gesture\n' + 'LongPress onAction:' + this.count + '\nPanGesture offset:\nX: ' + this.offsetX + '\n' + 'Y: ' + this.offsetY) + .fontSize(28) + }.margin(10) + .borderWidth(1) + // 绑定translate属性可以实现组件的位置移动 + .translate({ x: this.offsetX, y: this.offsetY, z: 0 }) + .height(250) + .width(300) + // 以下组合手势为顺序识别,当长按手势事件未正常触发时不会触发拖动手势事件 + .gesture( + // 声明该组合手势的类型为Sequence类型 + GestureGroup(GestureMode.Sequence, + // 该组合手势第一个触发的手势为长按手势,且长按手势可多次响应 + LongPressGesture({ repeat: true }) + // 当长按手势识别成功,增加Text组件上显示的count次数 + .onAction((event: GestureEvent|undefined) => { + if(event){ + if (event.repeat) { + this.count++; + } + } + console.info('LongPress onAction'); + }) + .onActionEnd(() => { + console.info('LongPress end'); + }), + // 当长按之后进行拖动,PanGesture手势被触发 + PanGesture() + .onActionStart(() => { + this.borderStyles = BorderStyle.Dashed; + console.info('pan start'); + }) + // 当该手势被触发时,根据回调获得拖动的距离,修改该组件的位移距离从而实现组件的移动 + .onActionUpdate((event: GestureEvent|undefined) => { + if(event){ + this.offsetX = (this.positionX + event.offsetX); + this.offsetY = this.positionY + event.offsetY; + } + console.info('pan update'); + }) + .onActionEnd(() => { + this.positionX = this.offsetX; + this.positionY = this.offsetY; + this.borderStyles = BorderStyle.Solid; + }) + ) + .onCancel(() => { + console.log('sequence gesture canceled'); + }) + ) + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + .backgroundColor('#f1f2f3') + .title($r('app.string.groupgesture_Sequence_title')) + } +} +// [End sequence_recognition_gesture] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/Index.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/Index.ets new file mode 100644 index 00000000000..f4d9da423bd --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/Index.ets @@ -0,0 +1,129 @@ +/* + * Copyright (c) 2025 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. + */ + +import { CompletedRoutableCard } from '../../common/Card'; +import { Route } from '../../common/Route'; +import { LongPress } from './LongPressGesture'; +import { Pan } from './PanGesture'; +import { Pinch } from './PinchGesture'; +import { Rotation } from './RotationGesture'; +import { Swipe } from './SwipeGesture'; +import { Tap } from './TapGesture'; +import { OnClickGesture } from './OnClickGesture'; +import { VolumeControlDemo } from './PanCombinationGesture'; +import resource from '../../common/resource'; + +export const Gesture_ROUTE_PREFIX: string = 'gesture'; +//$r('app.string.xxx')需要替换为开发者所需的资源文件 + +const routes: Route[] = [ + { + name: `${Gesture_ROUTE_PREFIX}/TapGesture`, + title: resource.resourceToString($r('app.string.singlegesture_Index_TapGesture_title')), + description: resource.resourceToString($r('app.string.singlegesture_Index_TapGesture_description')), + }, + { + name: `${Gesture_ROUTE_PREFIX}/LongPress`, + title: resource.resourceToString($r('app.string.singlegesture_Index_LongPress_title')), + description: resource.resourceToString($r('app.string.singlegesture_Index_LongPress_description')), + }, + { + name: `${Gesture_ROUTE_PREFIX}/Pan`, + title: resource.resourceToString($r('app.string.singlegesture_Index_Pan_title')), + description: resource.resourceToString($r('app.string.singlegesture_Index_Pan_description')), + }, + { + name: `${Gesture_ROUTE_PREFIX}/Pinch`, + title: resource.resourceToString($r('app.string.singlegesture_Index_Pinch_title')), + description: resource.resourceToString($r('app.string.singlegesture_Index_Pinch_description')), + }, + { + name: `${Gesture_ROUTE_PREFIX}/Rotation`, + title: resource.resourceToString($r('app.string.singlegesture_Index_Rotation_title')), + description: resource.resourceToString($r('app.string.singlegesture_Index_Rotation_description')), + }, + { + name: `${Gesture_ROUTE_PREFIX}/Swipe`, + title: resource.resourceToString($r('app.string.singlegesture_Index_Swipe_title')), + description: resource.resourceToString($r('app.string.singlegesture_Index_Swipe_description')), + }, + { + name: `${Gesture_ROUTE_PREFIX}/PanCombinationGesture`, + title: resource.resourceToString($r('app.string.singlegesture_Index_Pancom_title')), + description: resource.resourceToString($r('app.string.singlegesture_Index_PanCombination_description')), + }, + { + name: `${Gesture_ROUTE_PREFIX}/OnClickGesture`, + title: resource.resourceToString($r('app.string.singlegesture_Index_Click_title')), + description: resource.resourceToString($r('app.string.singlegesture_Index_Click_description')), + } + +] + +@Builder +export function GestureDestination(name: string) { + if (name === Gesture_ROUTE_PREFIX) { + GestureExample(); + } else if (name === routes[0].name) { + Tap(); + } else if (name === routes[1].name) { + LongPress(); + } else if (name === routes[2].name) { + Pan(); + } else if (name === routes[3].name) { + Pinch(); + } else if (name === routes[4].name) { + Rotation(); + } else if (name === routes[5].name) { + Swipe(); + } else if (name === routes[6].name) { + VolumeControlDemo(); + } else if (name === routes[7].name) { + OnClickGesture(); + } +} + +@Entry +@Component +struct GestureExample { + @Consume pathStack: NavPathStack; + + build() { + NavDestination() { + Scroll() { + List({ space: 12 }) { + ForEach(routes, (route: Route) => { + ListItem() { + CompletedRoutableCard({ title: route.title, description: route.description }) + } + .width('100%') + .onClick(() => { + this.pathStack.pushPath({ name: route.name }); + }) + }) + } + .contentStartOffset(20) + .padding({ left: 16, right: 16 }) + } + } + .backgroundColor('#f1f3f5') + .title('', { + backgroundBlurStyle: BlurStyle.COMPONENT_THICK, + barStyle: BarStyle.STACK + }) + //$r('app.string.singlegesture_Index_Pancom_title')需要替换为开发者所需的字符串资源文件 + .title($r('app.string.singlegesture_Index_Pancom_title')) + } +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/LongPressGesture.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/LongPressGesture.ets new file mode 100644 index 00000000000..ddf02d55f8e --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/LongPressGesture.ets @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start catch_long_press_event] +@Entry +@Component +export struct LongPress { + @State count: number = 0; + + build() { + NavDestination() { + Column({ space: 12 }) { + Column() { + Text('LongPress OnAction:' + this.count).fontSize(28) + .gesture( + // 绑定可以重复触发的LongPressGesture + LongPressGesture({ repeat: true }) + .onAction((event: GestureEvent | undefined) => { + if (event) { + if (event.repeat) { + this.count++; + } + } + }) + .onActionEnd(() => { + this.count = 0; + }) + ) + } + .height(200) + .width(250) + .padding(20) + .border({ width: 3 }) + .margin(30) + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + .backgroundColor('#f1f2f3') + .title($r('app.string.singlegesture_LongPressGesture_title')) + } +} +// [End catch_long_press_event] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/OnClickGesture.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/OnClickGesture.ets new file mode 100644 index 00000000000..e06929f60a1 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/OnClickGesture.ets @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start click_event] +@Entry +@Component +export struct OnClickGesture { + private judgeCount: number = 0 + + increaseJudgeGuard(): void { + this.judgeCount++ + } + + build() { + NavDestination() { + Column() { + Column() { + Column() + .width('60%') + .height('50%') + .backgroundColor(Color.Grey) + .onClick(() => { // 1. 子组件上注册了点击事件,正常情况下点击在子组件上时,优先得到响应 + console.info('Clicked on child') + this.increaseJudgeGuard() + }) + .onGestureJudgeBegin((gestureInfo: GestureInfo, event: BaseGestureEvent) => { + // 3. 当数字增长为5的倍数时禁用子组件上的点击手势,这样父组件上的点击可以得到响应 + if (this.judgeCount % 5 == 0 && gestureInfo.type == GestureControl.GestureType.CLICK) { + return GestureJudgeResult.REJECT + } else { + return GestureJudgeResult.CONTINUE + } + }) + } + .width('80%') + .height('80%') + .justifyContent(FlexAlign.Center) + .backgroundColor(Color.Green) + .gesture( + TapGesture() // 2. 父组件上注册了点击手势,正常情况下点击在子组件区域时,父组件上的手势优先级低于子组件 + .onAction(() => { + console.info('Clicked on parent') + this.increaseJudgeGuard() + })) + } + .height('100%') + .width('100%') + .justifyContent(FlexAlign.Center) + } + .backgroundColor('#f1f2f3') + //$r('app.string.singlegesture_Index_Click_title')需要替换为开发者所需的字符串资源文件 + .title($r('app.string.singlegesture_Index_Click_title')) + } +} +// [End click_event] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/PanCombinationGesture.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/PanCombinationGesture.ets new file mode 100644 index 00000000000..61cc5ad78e4 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/PanCombinationGesture.ets @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start sliding_gesture] +@Entry +@Component +export struct VolumeControlDemo { + @State currentVolume: number = 50; + private readonly MAX_VOLUME: number = 100; + private readonly MIN_VOLUME: number = 0; + + private handlePanUpdate(event: GestureEvent) { + const volumeChange = -event.offsetY * 0.1; + this.handleVolumeChange(volumeChange); + } + + private handleWheelEvent(event: GestureEvent) { + const volumeChange = event.offsetY * 0.1; + this.handleVolumeChange(volumeChange); + } + + private handleTouchPadScroll(event: GestureEvent) { + const volumeChange = -event.offsetY * 0.02; + this.handleVolumeChange(volumeChange); + } + + private handleVolumeChange(delta: number) { + this.currentVolume = Math.min( + this.MAX_VOLUME, + Math.max(this.MIN_VOLUME, this.currentVolume + delta) + ) + } + + build() { + NavDestination() { + Column() { + Row() { + //$r('app.string.video')需要替换为开发者所需的字符串资源文件 + Text($r('app.string.video')) + Text(`: ${this.currentVolume}`).fontSize(20) + }.margin(10) + Column() + .width('100%') + .height(250) + .backgroundColor('#F5F5F5') + .borderRadius(12) + .gesture( + PanGesture() + .onActionStart(() => { + console.info('Pan start'); + }) + .onActionUpdate((event: GestureEvent) => { + if (event.source === SourceType.TouchScreen) { + console.info('finger move triggered PanGesture'); + this.handlePanUpdate(event); + } + if (event.source === SourceType.Mouse && event.sourceTool === SourceTool.MOUSE) { + if (event.axisHorizontal === 0 && event.axisVertical === 0) { + console.info('mouse move with left button pressed triggered PanGesture'); + this.handlePanUpdate(event); + } else { + console.info('mouse wheel triggered PanGesture'); + this.handleWheelEvent(event); + } + } + if (event.sourceTool === SourceTool.TOUCHPAD && + (event.axisHorizontal !== 0 || event.axisVertical !== 0)) { + console.info('touchpad double finger move triggered PanGesture'); + this.handleTouchPadScroll(event); + } + }) + ) + } + .width('100%') + .height('100%') + .padding(20) + } + .backgroundColor('#f1f2f3') + //$r('app.string.singlegesture_Index_Pancom_title')需要替换为开发者所需的字符串资源文件 + .title($r('app.string.singlegesture_Index_Pancom_title')) + } +} +// [End sliding_gesture] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/PanGesture.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/PanGesture.ets new file mode 100644 index 00000000000..7afb75ff6ca --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/PanGesture.ets @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start catch_pan_gesture_event] +@Entry +@Component +export struct Pan { + @State offsetX: number = 0; + @State offsetY: number = 0; + @State positionX: number = 0; + @State positionY: number = 0; + + build() { + NavDestination() { + Column({ space: 12 }) { + Column() { + Text('PanGesture Offset:\nX: ' + this.offsetX + '\n' + 'Y: ' + this.offsetY) + .fontSize(28) + .height(200) + .width(300) + .padding(20) + .border({ width: 3 }) + // 在组件上绑定布局位置信息 + .translate({ x: this.offsetX, y: this.offsetY, z: 0 }) + .gesture( + // 绑定拖动手势 + PanGesture() + .onActionStart((event: GestureEvent|undefined) => { + console.info('Pan start'); + }) + // 当触发拖动手势时,根据回调函数修改组件的布局位置信息 + .onActionUpdate((event: GestureEvent|undefined) => { + if(event){ + this.offsetX = this.positionX + event.offsetX; + this.offsetY = this.positionY + event.offsetY; + } + }) + .onActionEnd(() => { + this.positionX = this.offsetX; + this.positionY = this.offsetY; + }) + ) + } + .height(200) + .width(250) + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + .backgroundColor('#f1f2f3') + .title($r('app.string.singlegesture_PanGesture_title')) + } +} +// [End catch_pan_gesture_event] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/PinchGesture.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/PinchGesture.ets new file mode 100644 index 00000000000..9d538513c66 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/PinchGesture.ets @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start catch_pinch_gesture_event] +@Entry +@Component +export struct Pinch { + @State scaleValue: number = 1; + @State pinchValue: number = 1; + @State pinchX: number = 0; + @State pinchY: number = 0; + + build() { + NavDestination() { + Column({ space: 12 }) { + Column() { + Column() { + Text('PinchGesture scale:\n' + this.scaleValue) + Text('PinchGesture center:\n(' + this.pinchX + ',' + this.pinchY + ')') + } + .height(200) + .width(300) + .border({ width: 3 }) + .margin({ top: 100 }) + // 在组件上绑定缩放比例,可以通过修改缩放比例来实现组件的缩小或者放大 + .scale({ x: this.scaleValue, y: this.scaleValue, z: 1 }) + .gesture( + // 在组件上绑定三指触发的捏合手势 + PinchGesture({ fingers: 3 }) + .onActionStart((event: GestureEvent | undefined) => { + console.info('Pinch start'); + })// 当捏合手势触发时,可以通过回调函数获取缩放比例,从而修改组件的缩放比例 + .onActionUpdate((event: GestureEvent | undefined) => { + if (event) { + this.scaleValue = this.pinchValue * event.scale; + this.pinchX = event.pinchCenterX; + this.pinchY = event.pinchCenterY; + } + }) + .onActionEnd(() => { + this.pinchValue = this.scaleValue; + console.info('Pinch end'); + }) + ) + } + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + .backgroundColor('#f1f2f3') + .title($r('app.string.singlegesture_PinchGesture_title')) + } +} +// [End catch_pinch_gesture_event] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/RotationGesture.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/RotationGesture.ets new file mode 100644 index 00000000000..89d5775e881 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/RotationGesture.ets @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start catch_rotation_gesture_event] +@Entry +@Component +export struct Rotation { + @State angle: number = 0; + @State rotateValue: number = 0; + + build() { + NavDestination() { + Column({ space: 12 }) { + Column() { + Text('RotationGesture angle:' + this.angle).fontSize(28) + // 在组件上绑定旋转布局,可以通过修改旋转角度来实现组件的旋转 + .rotate({ angle: this.angle }) + .gesture( + RotationGesture() + .onActionStart((event: GestureEvent|undefined) => { + console.info('RotationGesture is onActionStart'); + }) + // 当旋转手势生效时,通过旋转手势的回调函数获取旋转角度,从而修改组件的旋转角度 + .onActionUpdate((event: GestureEvent|undefined) => { + if(event){ + this.angle = this.rotateValue + event.angle; + } + console.info('RotationGesture is onActionEnd'); + }) + // 当旋转结束抬手时,固定组件在旋转结束时的角度 + .onActionEnd(() => { + this.rotateValue = this.angle; + console.info('RotationGesture is onActionEnd'); + }) + .onActionCancel(() => { + console.info('RotationGesture is onActionCancel'); + }) + ) + .height(200) + .width(300) + .padding(20) + .border({ width: 3 }) + .margin(100) + } + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + .backgroundColor('#f1f2f3') + .title($r('app.string.singlegesture_RotationGesture_title')) + } +} +// [End catch_rotation_gesture_event] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/SwipeGesture.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/SwipeGesture.ets new file mode 100644 index 00000000000..4b436385534 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/SwipeGesture.ets @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start catch_swipe_gesture_event] +@Entry +@Component +export struct Swipe { + @State rotateAngle: number = 0; + @State speed: number = 1; + + build() { + NavDestination() { + Column({ space: 12 }) { + Column() { + Column() { + Text('SwipeGesture speed\n' + this.speed) + Text('SwipeGesture angle\n' + this.rotateAngle) + } + .border({ width: 3 }) + .width(300) + .height(200) + .margin(100) + // 在Column组件上绑定旋转,通过滑动手势的滑动速度和角度修改旋转的角度 + .rotate({ angle: this.rotateAngle }) + .gesture( + // 绑定滑动手势且限制仅在竖直方向滑动时触发 + SwipeGesture({ direction: SwipeDirection.Vertical }) + // 当滑动手势触发时,获取滑动的速度和角度,实现对组件的布局参数的修改 + .onAction((event: GestureEvent|undefined) => { + if(event){ + this.speed = event.speed; + this.rotateAngle = event.angle; + } + }) + ) + } + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + .backgroundColor('#f1f2f3') + .title($r('app.string.singlegesture_SwipeGesture_title')) + } +} +// [End catch_swipe_gesture_event] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/TapGesture.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/TapGesture.ets new file mode 100644 index 00000000000..bc0f24b52c5 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/singlegesture/TapGesture.ets @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start catch_click_twice_event] +@Entry +@Component +export struct Tap { + @State value: string = ''; + + build() { + NavDestination() { + Column({ space: 12 }) { + Column() { + Text('Click twice').fontSize(28) + .gesture( + // 绑定count为2的TapGesture + TapGesture({ count: 2 }) + .onAction((event: GestureEvent|undefined) => { + if(event){ + this.value = JSON.stringify(event.fingerList[0]); + } + })) + Text(this.value) + } + .height(200) + .width(250) + .padding(20) + .border({ width: 3 }) + .margin(30) + } + .width('100%') + .height('100%') + .padding({ left: 12, right: 12 }) + } + .backgroundColor('#f1f2f3') + .title($r('app.string.singlegesture_TapGesture_title')) + } +} +// [End catch_click_twice_event] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/ets/pages/springloading/SpringLoading.ets b/ArkUIKit/EventProject/entry/src/main/ets/pages/springloading/SpringLoading.ets new file mode 100644 index 00000000000..9770263c4cc --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/ets/pages/springloading/SpringLoading.ets @@ -0,0 +1,151 @@ +/* + * Copyright (c) 2025 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. + */ + +//[Start SpringLoading_start] +import { dragController } from '@kit.ArkUI'; +import { unifiedDataChannel, uniformTypeDescriptor } from '@kit.ArkData'; +export const springLoadingRoutePrefix: string= 'springLoadingExample'; + +@Entry +@ComponentV2 +export struct SpringLoadingPage { + context1 = this.getUIContext().getHostContext() + @Local isShowSheet: boolean = false; + private searchResult: string = this.context1?.resourceManager.getStringSync($r('app.string.Select_Result').id)!; + @Local isSearchDone: boolean = false; + private reminderColor: Color = Color.Green; + private normalColor: Color = Color.Blue; + @Local buttonBackgroundColor: Color = this.normalColor; + + @Builder + SheetBuilder() { + Column() { + // 输入框 + TextInput({placeholder: $r('app.string.Push_Here')}) + .width('80%').borderWidth(1).borderColor(Color.Black).padding({bottom: 5}) + .onChange((value: string)=>{ + if (value.length == 0) { + this.isSearchDone = false; + return; + } + // 此处简化处理,直接显示固定搜索结果 + this.isSearchDone = true; + }) + if (this.isSearchDone) { + Text(this.searchResult).fontSize(20).textAlign(TextAlign.Start).width('80%') + } + }.width('100%').height('100%') + } + + // 检查拖拽数据类型是否包含所希望的plain-text + checkDataType(dataSummary: unifiedDataChannel.Summary | undefined): boolean { + let summary = dataSummary?.summary; + if (summary == undefined) { + return false; + } + + let dataSummaryObjStr: string = JSON.stringify(summary); + let dataSummaryArray: Array> = JSON.parse(dataSummaryObjStr); + let isDataTypeMatched: boolean = false; + dataSummaryArray.forEach((record: Array) => { + if (record[0] == 'general.plain-text') { + isDataTypeMatched = true; + } + }); + return isDataTypeMatched; + } + + // 处理BEGIN状态 + handleBeginState(context: SpringLoadingContext): boolean { + // 检查用户所拖拽的数据类型是否自己能够处理的 + if (this.checkDataType(context?.dragInfos?.dataSummary)) { + return true; + } + // 如果数据无法处理,直接终止Spring Loading + context.abort(); + return false; + } + + // Spring Loading处理入口 + handleSpringLoading(context: SpringLoadingContext) { + // BEGIN 状态时检查拖拽数据类型 + if (context.state == dragController.DragSpringLoadingState.BEGIN) { + if (this.handleBeginState(context)) { + // 我们已经在onDragEnter时刷新了提醒色,进入Spring Loading状态时,恢复UI,提醒用户继续保持不动 + this.buttonBackgroundColor = this.normalColor; + } + return; + } + if (context.state == dragController.DragSpringLoadingState.UPDATE) { + // 奇数次UPDATE通知刷新提醒UI,偶数次复原UI + if (context.currentNotifySequence % 2 != 0) { + this.buttonBackgroundColor = this.reminderColor; + } else { + this.buttonBackgroundColor = this.normalColor; + } + return; + } + // 处理Spring Loading结束,触发视图切换 + if (context.state == dragController.DragSpringLoadingState.END) { + this.isShowSheet = true; + return; + } + // 处理CANCEL状态,复原UI + if (context.state == dragController.DragSpringLoadingState.CANCEL) { + this.buttonBackgroundColor = this.normalColor; + return; + } + } + + build() { + Column() { + NavDestination(){ + Column() { + Text($r('app.string.DoubleClick_Text')) + .fontSize(30) + .copyOption(CopyOptions.InApp) // 开启copyOption之后,文本组件即可支持选择内容进行拖拽 + }.padding({bottom:30}) + + Button($r('app.string.Search_Device')).width('80%').height('80vp').fontSize(30) + .bindSheet($$this.isShowSheet, this.SheetBuilder(), { + detents: [SheetSize.MEDIUM, SheetSize.LARGE, 600], + preferType: SheetType.BOTTOM, + title: { title: $r('app.string.Search_Device') }, + }) + .allowDrop([uniformTypeDescriptor.UniformDataType.PLAIN_TEXT]) + .backgroundColor(this.buttonBackgroundColor) + .onDragEnter(()=>{ + // 当用户拖拽进入按钮范围,即提醒用户,此处是可以处理数据的 + this.buttonBackgroundColor = this.reminderColor + }) + .onDragLeave(()=>{ + // 当用户拖拽离开按钮范围,恢复UI + this.buttonBackgroundColor = this.normalColor + }) + .onDragSpringLoading((context: SpringLoadingContext)=>{ + this.handleSpringLoading(context); + }) + } + .backgroundColor('#f1f3f5') + .title('', { + backgroundBlurStyle: BlurStyle.COMPONENT_THICK, + barStyle: BarStyle.STACK + }) + .title($r('app.string.Pages_Index_DropAnimation')) + }.width('100%').height('100%') + .justifyContent(FlexAlign.Center) + } +} +//[End SpringLoading_start] \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/module.json5 b/ArkUIKit/EventProject/entry/src/main/module.json5 new file mode 100644 index 00000000000..f09d09a7bc6 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/module.json5 @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2025 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. + */ + +{ + "module": { + "name": "entry", + "type": "entry", + "description": "$string:module_desc", + "mainElement": "EntryAbility", + "deviceTypes": [ + "default" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:main_pages", + "abilities": [ + { + "name": "EntryAbility", + "srcEntry": "./ets/entryability/EntryAbility.ets", + "description": "$string:EntryAbility_desc", + "icon": "$media:layered_image", + "label": "$string:EntryAbility_label", + "startWindowIcon": "$media:startIcon", + "startWindowBackground": "$color:start_window_background", + "exported": true, + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ] + } + ], + "extensionAbilities": [ + { + "name": "EntryBackupAbility", + "srcEntry": "./ets/entrybackupability/EntryBackupAbility.ets", + "type": "backup", + "exported": false, + "metadata": [ + { + "name": "ohos.extension.backup", + "resource": "$profile:backup_config" + } + ] + } + ] + } +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/resources/base/element/color.json b/ArkUIKit/EventProject/entry/src/main/resources/base/element/color.json new file mode 100644 index 00000000000..3c712962da3 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/resources/base/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/resources/base/element/float.json b/ArkUIKit/EventProject/entry/src/main/resources/base/element/float.json new file mode 100644 index 00000000000..a0a93dd91fd --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/resources/base/element/float.json @@ -0,0 +1,8 @@ +{ + "float": [ + { + "name": "page_text_font_size", + "value": "50fp" + } + ] +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/resources/base/element/string.json b/ArkUIKit/EventProject/entry/src/main/resources/base/element/string.json new file mode 100644 index 00000000000..a9614ec90cc --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/resources/base/element/string.json @@ -0,0 +1,596 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "module description" + }, + { + "name": "EntryAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "EventProject" + }, + { + "name": "HoverEffectSample_title", + "value": "悬浮状态" + }, + { + "name": "Hover_Event", + "value": "悬浮事件" + }, + { + "name": "Hover_Description", + "value": "鼠标悬浮事件回调。参数isHover类型为boolean,表示鼠标进入组件或离开组件。该事件不支持自定义冒泡设置,默认父子冒泡" + }, + { + "name": "Mouse_Event", + "value": "鼠标事件" + }, + { + "name": "Mouse_Description", + "value": "鼠标事件回调。绑定该API的组件每当鼠标指针在该组件内产生行为(MouseAction)时,触发事件回调,参数为MouseEvent对象,表示触发此次的鼠标事件。该事件支持自定义冒泡设置,默认父子冒泡。常用于开发者自定义的鼠标行为逻辑处理。" + }, + { + "name": "Hover_Effect", + "value": "鼠标悬浮态效果" + }, + { + "name": "Hover_Effect_Description", + "value": "鼠标悬浮态效果设置的通用属性。参数类型为HoverEffect,HoverEffect提供的Auto、Scale、Highlight效果均为固定效果,开发者无法自定义设置效果参数。" + }, + { + "name": "Key_Event", + "value": "按键事件" + }, + { + "name": "Key_Description", + "value": "按键事件由外设键盘等设备触发,经驱动和多模处理转换后发送给当前获焦的窗口,窗口获取到事件后,会尝试分发三次事件。" + }, + { + "name": "Key_PreIme", + "value": "屏蔽" + }, + { + "name": "Key_PreIme_Description", + "value": "使用OnKeyPreIme屏蔽在输入框中使用方向左键。" + }, + { + "name": "Device_index_title", + "value": "键鼠事件" + }, + { + "name": "Device_OnHover_title", + "value": "悬浮事件" + }, + { + "name": "Device_OnKey_title", + "value": "按键事件" + }, + { + "name": "Device_OnKeyPreIme_title", + "value": "按键事件" + }, + { + "name": "Device_OnMouse_title", + "value": "鼠标事件" + }, + { + "name": "Drag_DefaultDrag_title", + "value": "通用拖拽" + }, + { + "name": "Drag_Index_DefaultDrag_title", + "value": "通用拖拽" + }, + { + "name": "Drag_Index_DefaultDrag_description", + "value": "组件使能拖拽。设置draggable属性为true,并配置onDragStart回调函数。" + }, + { + "name": "Drag_Index_MoreDrag_title", + "value": "多选拖拽" + }, + { + "name": "Drag_Index_MoreDrag_description", + "value": "从API version 12开始,Grid组件和List组件中的GridItem和ListItem组件支持多选与拖拽功能。目前,仅支持onDragStart的触发方式。" + }, + { + "name": "Drag_Index_title", + "value": "拖拽事件" + }, + { + "name": "Drag_MoreDrag_title", + "value": "多选拖拽" + }, + { + "name": "Focus_DefaultFocus_title", + "value": "默认焦点" + }, + { + "name": "Focus_Focusable_title", + "value": "设置组件是否可获焦" + }, + { + "name": "Focus_Focusable_text", + "value": "当某组件处于获焦状态时,将其的focusable属性或enabled属性设置为false,会自动使该组件失焦,然后焦点按照走焦规范将焦点转移给其他组件。" + }, + { + "name": "Focus_FocusAndClick_title", + "value": "焦点与按键事件" + }, + { + "name": "Focus_FocusController_title", + "value": "主动获焦/失焦" + }, + { + "name": "Focus_FocusPriority_title", + "value": "容器默认焦点" + }, + { + "name": "Focus_FocusScopePriority_title", + "value": "焦点组与获焦优先级" + }, + { + "name": "Focus_FocusStyle_title", + "value": "焦点样式" + }, + { + "name": "Focus_Index_title", + "value": "焦点事件" + }, + { + "name": "Focus_Index_onFocusBlur_title", + "value": "获焦失焦" + }, + { + "name": "Focus_Index_FocusableExample_title1", + "value": "设置是否可获焦" + }, + { + "name": "Focus_Index_FocusableExample_title2", + "value": "页面的默认焦点" + }, + { + "name": "Focus_Index_FocusableExample_title3", + "value": "容器的默认焦点" + }, + { + "name": "Focus_Index_FocusStyle_title", + "value": "焦点样式" + }, + { + "name": "Focus_Index_FocusControl_title", + "value": "主动获焦/失焦" + }, + { + "name": "Focus_Index_FocusScopePriority_title", + "value": "焦点组与获焦优先级" + }, + { + "name": "Focus_Index_FocusAndClick_title", + "value": "焦点与按键事件" + }, + { + "name": "Focus_Index_onFocusBlur_description", + "value": "获焦事件回调,绑定该接口的组件获焦时,回调响应。失焦事件回调,绑定该接口的组件失焦时,回调响应。" + }, + { + "name": "Focus_Index_FocusableExample_description1", + "value": "设置组件是否可获焦。" + }, + { + "name": "Focus_Index_FocusableExample_description2", + "value": "设置当前组件是否为当前页面上的默认焦点。" + }, + { + "name": "Focus_Index_FocusableExample_description3", + "value": "FocusPriority是用于指定某个容器首次获焦时其子节点的获焦优先级。" + }, + { + "name": "Focus_Index_FocusStyle_description", + "value": "设置当前组件系统焦点框样式。" + }, + { + "name": "Focus_Index_FocusControl_description", + "value": "使用FocusController中的方法。更推荐使用FocusController中的requestFocus主动获取焦点。" + }, + { + "name": "Focus_Index_FocusScopePriority_description", + "value": "focusScopePriority(scopeId: string, priority?: FocusPriority)设置当前组件在指定容器内获焦的优先级。需要配合focusScopeId一起使用。" + }, + { + "name": "Focus_Index_FocusAndClick_description", + "value": "当组件获焦且存在点击事件(onClick)或单指单击事件(TapGesture)时,回车和空格会触发对应的事件回调。" + }, + { + "name": "Focus_OnFocusBlur_title", + "value": "获焦/失焦事件" + }, + { + "name": "gesture_GestureJudge_text", + "value": "以下示例中,Image和Stack两个组件位于同一区域。长按Stack组件的上半部分可触发挂载在Stack组件上的长按手势,长按Stack组件的下半部分则会响应Image组件的拖拽操作。" + }, + { + "name": "gesture_GestureJudge_title", + "value": "手势拦截" + }, + { + "name": "gesture_Index_title", + "value": "手势拦截" + }, + { + "name": "gesture_Index_GestureJudge_title", + "value": "手势拦截" + }, + { + "name": "gesture_Index_GestureJudge_description", + "value": "手势拦截主要用于确保手势按需执行,有效解决手势冲突问题。典型应用场景包括:嵌套滚动、通过过滤组件响应手势的范围来优化交互体验。手势拦截主要采用手势触发控制和手势响应控制两种方式实现。" + }, + { + "name": "groupgesture_Exclusive_text", + "value": "以在一个Column组件上绑定单击手势和双击手势组合而成的互斥识别组合手势为例。若先绑定单击手势后绑定双击手势,由于单击手势只需要一次点击即可触发而双击手势需要两次,每次的点击事件均被单击手势消费而不能积累成双击手势,所以双击手势无法触发。若先绑定双击手势后绑定单击手势,则触发双击手势不触发单击手势。" + }, + { + "name": "groupgesture_Exclusive_title", + "value": "互斥识别" + }, + { + "name": "groupgesture_Parallel_text", + "value": "以在一个Column组件上绑定点击手势和双击手势组成的并行识别手势为例,由于单击手势和双击手势是并行识别,因此两个手势可以同时进行识别,二者互不干涉。" + }, + { + "name": "groupgesture_Parallel_title", + "value": "并行识别" + }, + { + "name": "groupgesture_Sequence_text", + "value": "'在一个Column组件上绑定了translate属性,通过修改该属性可以设置组件的位置移动。然后在该组件上绑定LongPressGesture和PanGesture组合而成的Sequence组合手势。当触发LongPressGesture时,更新显示的数字。当长按后进行拖动时,根据拖动手势的回调函数,实现组件的拖动。" + }, + { + "name": "groupgesture_Sequence_title", + "value": "顺序识别" + }, + { + "name": "groupgesture_Index_title", + "value": "组合手势" + }, + { + "name": "groupgesture_Index_Sequence_title", + "value": "顺序识别" + }, + { + "name": "groupgesture_Index_Parallel_title", + "value": "并行识别" + }, + { + "name": "groupgesture_Index_Exclusive_title", + "value": "互斥识别" + }, + { + "name": "groupgesture_Index_Sequence_description", + "value": "顺序识别组合手势对应的GestureMode为Sequence。顺序识别组合手势将按照手势的注册顺序识别手势,直到所有的手势识别成功。当顺序识别组合手势中有一个手势识别失败时,后续手势识别均失败。顺序识别手势组仅有最后一个手势可以响应onActionEnd。" + }, + { + "name": "groupgesture_Index_Parallel_description", + "value": "并行识别组合手势对应的GestureMode为Parallel。并行识别组合手势中注册的手势将同时进行识别,直到所有手势识别结束。并行识别手势组合中的手势进行识别时互不影响。" + }, + { + "name": "groupgesture_Index_Exclusive_description", + "value": "互斥识别组合手势对应的GestureMode为Exclusive。互斥识别组合手势中注册的手势将同时进行识别,若有一个手势识别成功,则结束手势识别,其他所有手势识别失败。" + }, + { + "name": "singlegesture_LongPressGesture_title", + "value": "长按手势" + }, + { + "name": "singlegesture_PanGesture_title", + "value": "拖动手势" + }, + { + "name": "singlegesture_PinchGesture_title", + "value": "捏合手势" + }, + { + "name": "singlegesture_RotationGesture_title", + "value": "旋转手势" + }, + { + "name": "singlegesture_SwipeGesture_title", + "value": "快滑手势" + }, + { + "name": "singlegesture_TapGesture_title", + "value": "点击手势" + }, + { + "name": "singlegesture_Index_title", + "value": "单一手势" + }, + { + "name": "singlegesture_Index_TapGesture_title", + "value": "点击手势" + }, + { + "name": "singlegesture_Index_LongPress_title", + "value": "长按手势" + }, + { + "name": "singlegesture_Index_Pan_title", + "value": "拖动手势" + }, + { + "name": "singlegesture_Index_Pinch_title", + "value": "捏合手势" + }, + { + "name": "singlegesture_Index_Rotation_title", + "value": "旋转手势" + }, + { + "name": "singlegesture_Index_Swipe_title", + "value": "快滑手势" + }, + { + "name": "singlegesture_Index_TapGesture_description", + "value": "单一手势的使用示例,点击手势支持单次点击和多次点击,拥有两个可选参数。" + }, + { + "name": "singlegesture_Index_LongPress_description", + "value": "长按手势用于触发长按手势事件。" + }, + { + "name": "singlegesture_Index_Pan_description", + "value": "拖动手势用于触发拖动手势事件,滑动达到最小滑动距离(默认值为5vp)时拖动手势识别成功。" + }, + { + "name": "singlegesture_Index_Pinch_description", + "value": "捏合手势用于触发捏合手势事件。其中示例为三指捏合" + }, + { + "name": "singlegesture_Index_Rotation_description", + "value": "旋转手势用于触发旋转手势事件,拥有两个可选参数:fingers:用于声明触发旋转手势所需要的最少手指数量,最小值为2,最大值为5,默认值为2。angle:用于声明触发旋转手势的最小改变度数,单位为deg,默认值为1" + }, + { + "name": "singlegesture_Index_Swipe_description", + "value": "滑动的手势用于触发滑动事件,当滑动速度大于100vp/s时可以识别成功,拥有三个可选参数:fingers:用于声明触发滑动的手势所需要的最少手指数量,最小值为1,最大值为10,默认值为1。direction:用于声明触发滑动的手势的方向,此枚举值支持逻辑与(&)和逻辑或(|)运算。默认值为SwipeDirection.All。speed:用于声明触发滑动的最小滑动识别速度,单位为vp/s,默认值为100。" + }, + { + "name": "Touch_ClickEvent_text", + "value": "通过按钮的点击事件控制图片的显示和隐藏。" + }, + { + "name": "Touch_ClickEvent_title", + "value": "点击事件" + }, + { + "name": "Touch_TouchEvent_title", + "value": "触摸事件" + }, + { + "name": "Touch_Index_title", + "value": "触摸事件" + }, + { + "name": "Touch_Index_ClickEvent_title", + "value": "点击事件" + }, + { + "name": "Touch_Index_TouchEvent_title", + "value": "触摸事件" + }, + { + "name": "Touch_Index_ClickEvent_description", + "value": "点击事件是指通过手指或手写笔做出一次完整的按下和抬起动作。当发生点击事件时,会触发以下回调函数:\n onClick(event: (event?: ClickEvent) => void)\n 'event参数提供点击事件相对于窗口或组件的坐标位置,以及发生点击的事件源。" + }, + { + "name": "Touch_Index_TouchEvent_description", + "value": "当手指或手写笔在组件上触碰时,会触发不同动作所对应的事件响应,包括按下(Down)、滑动(Move)、抬起(Up)事件。" + }, + { + "name": "Pages_Index_gesture", + "value": "单一手势/gesture" + }, + { + "name": "Pages_Index_GroupGesture", + "value": "组合手势/GroupGesture" + }, + { + "name": "Pages_Index_GestureJudge", + "value": "手势拦截/GestureJudge" + }, + { + "name": "Pages_Index_TouchEvent", + "value": "触摸事件/TouchEvent" + }, + { + "name": "Pages_Index_DeviceEvent", + "value": "键鼠事件/DeviceEvent" + }, + { + "name": "Pages_Index_FocusEvent", + "value": "焦点事件/FocusEvent" + }, + { + "name": "Pages_Index_DragEvent", + "value": "拖拽事件/DragEvent" + }, + { + "name": "Pages_Index_DropAnimation", + "value": "拖放动画事件/DropAnimation" + }, + { + "name": "Pages_Index_GridExample", + "value": "网格拖拽事件/GridExample" + }, + { + "name": "Pages_Index_SpringLoading", + "value": "弹性加载事件/SpringLoading" + }, + { + "name": "Select_Result", + "value": "搜索结果:\\n 设备 1\\n 设备 2\\n 设备 3\\n ... ..." + }, + { + "name": "Push_Here", + "value": "拖入此处" + }, + { + "name": "DoubleClick_Text", + "value": "双击文字选择后拖出: \\n DeviceName" + }, + { + "name": "Search_Device", + "value": "搜索设备" + }, + { + "name": "singlegesture_Index_Click_title", + "value": "点击事件" + }, + { + "name": "singlegesture_Index_Click_description", + "value": "单击作为常用的手势,可以方便地使用onClick接口实现。尽管被称为事件,它实际上是基本手势类型,等同于将count配置为1的TapGesture,即单击手势。" + }, + { + "name": "singlegesture_Index_Pancom_title", + "value": "滑动手势" + }, + { + "name": "singlegesture_Index_PanCombination_description", + "value": "滑动手势用于触发滑动手势事件,滑动达到最小滑动距离(默认值为5vp)时滑动手势识别成功" + }, + { + "name": "video", + "value": "音量" + }, + { + "name": "Pages_Index_Focus_Active_title", + "value": "聚焦/FocusActive" + }, + { + "name": "Focus_Index_Focus_Active_description", + "value": "聚焦事件。" + }, + { + "name": "Focus_Index_FocusOnClick_title", + "value": "聚焦点击/FocusOnClick" + }, + { + "name": "Focus_Index_FocusOnClick_description", + "value": "聚焦点击。" + }, + { + "name": "Focus_Index_FocusScopeId_title", + "value": "聚焦范围Id/FocusScopeId" + }, + { + "name": "Focus_Index_FocusScopeId_description", + "value": "聚焦范围Id" + }, + { + "name": "Focus_Index_FocusScopePriorityPrevious_title", + "value": "聚焦范围优先/FocusScopePriorityPrevious" + }, + { + "name": "Focus_Index_FocusScopePriorityPrevious_description", + "value": "聚焦范围优先" + }, + { + "name": "Focus_Index_FocusTransfer_title", + "value": "聚焦转移/FocusTransfer" + }, + { + "name": "Focus_Index_FocusTransfer_description", + "value": "聚焦转移" + }, + { + "name": "Focus_Index_FocusTraversalGuidelines_title", + "value": "聚焦遍历/FocusTraversalGuidelines" + }, + { + "name": "Focus_Index_FocusTransfer_desFocus_Index_FocusTraver_descriptioncription", + "value": "聚焦遍历" + }, + { + "name": "Focus_Index_FrojectAreaFocusFlex_title", + "value": "聚焦伸缩/FrojectAreaFocusFlex" + }, + { + "name": "Focus_Index_FrojectAreaFocusFlex_description", + "value": "聚焦伸缩" + }, + { + "name": "Focus_Index_NextFocus_title", + "value": "下一个聚焦/NextFocus" + }, + { + "name": "Focus_Index_NextFocus_description", + "value": "下一个聚焦" + }, + { + "name": "Focus_Index_OnFocusOnBlurEvents_title", + "value": "聚焦模糊事件/OnFocusOnBlurEvents" + }, + { + "name": "Focus_Index_OnFocusOnBlurEvents_description", + "value": "聚焦模糊事件" + }, + { + "name": "Focus_Index_ProjectionBasedFocus_title", + "value": "突显聚焦/ProjectionBasedFocus" + }, + { + "name": "Focus_Index_ProjectionBasedFocus_description", + "value": "突显聚焦" + }, + { + "name": "Focus_Index_RequestFocus_title", + "value": "请求聚焦/RequestFocus" + }, + { + "name": "Focus_Index_RequestFocus_description", + "value": "请求聚焦" + }, + { + "name": "Focus_Index_ScopeFocus_title", + "value": "范围聚焦/ScopeFocus" + }, + { + "name": "Focus_Index_ScopeFocus_description", + "value": "范围聚焦" + }, + { + "name": "Tab_Index_TabIndex_title", + "value": "标签索引/TabIndex" + }, + { + "name": "Tab_Index_TabIndex_description", + "value": "标签索引" + }, + { + "name": "Tab_Index_TabIndexFocus_title", + "value": "标签索引聚焦/TabIndexFocus" + }, + { + "name": "Tab_Index_TabIndexFocus_description", + "value": "标签索引聚焦" + }, + { + "name": "Tab_Index_TabStop_title", + "value": "标签暂停/TabStop" + }, + { + "name": "Tab_Index_TabStop_description", + "value": "标签暂停" + }, + { + "name": "Focus_Event", + "value": "获焦信息" + }, + { + "name": "Get_Focus", + "value": "获得焦点" + } + ] +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/resources/base/media/background.png b/ArkUIKit/EventProject/entry/src/main/resources/base/media/background.png new file mode 100644 index 0000000000000000000000000000000000000000..f939c9fa8cc8914832e602198745f592a0dfa34d GIT binary patch literal 57364 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 A4*&oF literal 0 HcmV?d00001 diff --git a/ArkUIKit/EventProject/entry/src/main/resources/base/media/foreground.png b/ArkUIKit/EventProject/entry/src/main/resources/base/media/foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..4483ddad1f079e1089d685bd204ee1cfe1d01902 GIT binary patch literal 12430 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 cSLciz6AsI{U0tD9;7S&f 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

c)ijgxDm}8EsRXFt3h@+Ufr7@DN z^55r2UpdZvo*$)c`MJ_3zXBARbH%T}ifygzYy6g*WBtspGU<*Ccb`wpyW!Ui$gZ}y zo>MwK`K>f-62KfvO2{S zXF|ni6T=gB=C>=mF~5ojWS?I%DBt!ouB^&}v*S8G>5&(6>bM<0W9)PIeSXbv;v2lq zgZx&0)nJZqzUPEz=3RZouldy~VSciFe9|fxrs_KoD#u$hYz3BTu8Twxs@yt>*lp{< zm_XbpVEfL5#v}%x;+@AY<0*cV$ZF-248A&7CXCUG-9e@z7Va=V8J*&{q4I$n{~M-~K{qUmg-Y{N~tC__Y!6wZ`uS zAN=8SKnb`wARia}P{>}4q*mFJ2rt$xz9z}40>2@prKgMpJ4y?1MK zsu;8LLY(s8tNKp-L`??i35r}^567PuI=u8S&*EdFoy9Nf;48%{S#m8d=h|q*N!*Hw zE&QzCc2jn4u4(uar*pTPKCQ7DC)&Cs49?>3$7+X~)XJA`!=HT>p7`~r%@S~FvIWT% zL)t28t$h|BY!xpHnSQNXihG*>p${(0U;hi2mrwZcOUrZh0ee^UiT1oYO{3$5Hop*u zLXEN0l1qM=vD`rN)XOLJdon_5oHz3`AzpsrE1f=|*Mk1={U^)6{EcJ3kodUYZmX=p z&l4~2a)h&L*mG4|<3d+3_?Prr)`vgu$Y1U7EWIl2?@iUEd5K>;n9zxxlFNU^0vTLl zH@o9AcfQkuuVr{d?>6N1tv`70$?|*eKGqA1!uC8^rS(s+P1LOQ9lYFac+7nk_^^=}_9|LQHrRm;gm z#jgtmwd-2xd;fSm;rGSZd-@wbDeXS|)%sP&lv@b1qs`Sf43!0V?3qvsHeeF4^Q(*h z^}o7zxuRcU@`@_U0N4FIMxo}rPTLvJc{K#}XhYWmowJJ2$Yjbl`u)zkPnNIv?#GvR zeQ>x@oZ)FOm|m&l>_ivC(ek;URCk@4f5BINBIPcJedSknv#$7sL09O4r%@qb_M zz2et2d?)PSD|vhJv?jf^coe^7;*5D_(i{GoNjc@GFgNZjMJ5=HK91L-#6s_k5ZsDS zGS%RQ&sF+5eNE*3{W~3);ByDsjH9O)4$S@$?yR>?gy?){V`EPI$n>{$7kZJt&E|jq z@9tl&>KhB0wjiX?fvux_ph<@^P`xU#l~@YcVmvoP|52 zFCDST=db-|m-UT`(xE24+%n&4gZ%FnLi&Yo)!)!<`8*?XqEn@~PlG4oI{hPQc|SBA-3UqQo@Ok7n} zIAZ21l@78Rn`X^sw|ukiJP&AnypS?sjm)BYgRrvd_2vm*-zj>cKd@`Ab&91Yp=>6{)F%4)7auKu@lUJhnvWozKNZb^uG+`E@Y3=U zeK~|@uUf1nf;jWRpXQgYuqA_|MTZQJmcB;TNR^GlS{T8}iC6rO{IH|tWqO{uY5h}C zK^05FmfvX7IMk$1hE*ehH{+tKyHIa1DdB;;rJvHi z@XysN8q8vy7k-&z&tLr~zqICPT-#vO+|kk)bI{UP%}!$rHS^6TDD1uXt~a|@W*~+c z8vo^wJW;Rw34f4ZJkG`2_D~Yj%WRNd2O^Mwn=s<$0*s{9@EYCPT5v)bA~e(n|~6M0EUxGtnrcN&$s(s zzN8S(XWAcol9+ za@NCPqQw`HsBTqo#8>DWj&U^~+CTP~&69^IHqX$ty#E|%_>m7|XO7~asM|V+|Xy_l(fh&fm#RNST>VcoN?=6S_DPi%0~BG=sQt4-78)-@|b)lahBHa~PL<9jHj zNE~dl9PG02qUPM@QPu+cEDu-Af8%z}zB%Ihfge*{9Wd$&G+)E(=&9+o!^CjO`cwNdjVRH+WU`h_MXAOitJp5x3ifW{$igPf9iBj$(b=HI#x==`-hy-E&gI#->XR(BW&pMdcoR19-nNcPkY4s2bR7uK27u z;T-wi{Jv$d3tg^Khr|3zu!D-f$3GV1rd-BjB{h8+psmB&uHFO}3e<>-KnIym}P_oSC zslstp61Dm&1NiV|^pEbaNt}ZX!rh1GA<@OoA~K`yhAgd{@foOROsg!`F}gM(u1!jB zP-&PeM7Vk8W1#d^)-p1e`o(13g|c~w?dj`;4_bZu^_E|g3d=E{cLES;rdxmDH283uG=7WUKG<2~ea{IxU4q0( zBCeM((XD0e;O571>R|^u&Ev*jpsQGwzvm-2(K$^ICifY)?_e`E(umG-isbY(H;sFS z_TV{-u;uIR9OWMt?$V=eCxZbQ9k$3lC>2^A@xz~@XvD&(_uWN31AO=Zpf(=jB!lHh zOT3|j8)NsuFr00(J`~5*Aa@-yCcZDeY#2MK^7+byjE?yuYo4B|14zoWZPTeh8BIOF zi#LZ9-0pPpQq1&2arSg`YF@vQoGhb26RLwnlb*1L_^M-Vlx>giHItHpV-y+pt6ZEK z556G7lZ4?GS?qbNp_S;OAM&IlDs9+mIL@;^vinA)D6z3H9OHAVWxzHP_n^luSJ#<< zbsIty2lS^g(Tp%sL>_Jx%DMrbLPR&IRuN*2au@Mv3b3wQaDyVnmOp4Ma3Q*l1@}l- z7!@6xqcC>X;&3#^WC@2>d~Pt-WCFI;DSS*he8-yHfN>hl!&k7gZRoJWX*}IU_<3Dv zFh%O=_d;$wPTu#$88_QzeaYlJH`gOD^~u}%0AtVi0{v!P<5awgzdH2uJ`V|wUL*2lawezA2~fq&{P;mfB?8T6HUC*4h6A&Uoa8O-j$RT~z$aZBVg6 zzF?cyl6N zdHw?sJ7Tp$XXHMr#>SS7hWS(q4Vv|F6FxR`qoAKa__u1W&%AQI4T^VKan^IyU>zfs zE|$R$NQPNwnbWKcmi{dLjG5%b9r@2i8f!K??SvY4H+*lPY@EblJRiC1P#E;CqroIW z@amJ2xy(A56v{9|GuaTpMMj+DK>H#%Xah4-!k=}#^ zneQH-ALI49-brtya+(0Rs?MoH;W4xa=7q~HKFb7Z1nBuy5&@vrkTKXDY=saRII;oP z3R%&P2^nF-NYearIVR*J3O2Ys934KH3%!qF8Ezacu`vg0S*Oab^yt!p+xLq-xy5gM z#Kw5jI=`XA!CkZ&zAqE&VEj1=NFmPhl*4MSO=PEas`~e2-T71-1sApc|fu*Q}= zsYFnC_DZcy+zSDb@&j)&>t^-n;oK7;%>Y=GI zf;q6^#lf=W>#ky4S#ll)lVVQT_DO*_|C(c%5cIB9nT$1w zdZdwu#x~{=-+@S!Al?*`YqRX_$W)w|mL<42l`iKk-%cwYqIN?eH8`i)kL=}d1?JZx ztLCs2KGwvGug#(X==ud4yo;s5T!B+uNNV9YMyc!;d~C+efEeaJa{IVw7aDzJFOkR6 zSlJt<<>?A3vyx@)YW!;#RD~3cJ<+yt$FWi*K*_8K6|i@y5t3Ja zJ+H|ads>I+vjj95MRGK=^x>=qv2joEMXBp_IFN4`AdHaye#ZCSN+T3ki zEEWhGJ-%>&Q^eAnKgqhuJba{|Jl+AxddOr{Cxi+(@50!IbHi4?hjyY5LQ=XVPTEpb zyqVjwx1@vOf~d3GC@cCi=V6PSGqd|Ua>`SZ|JP5mkUUL?=|EPi{@-nlH?JLkAw z*sMbLgtgvL+o_1?*wJfZjcXpC5>GR~M4yu?y`l7N54Pg1hB01ME2+8Z!14qfU-Yz@ zpP&@C_lf&Q^@(4j;1EbkPV$`KhCay2t@XoalE&DO(HG;)bGsV$(1$|8a365@r{WKw zNW$FkEp^Sm<|7b9uV3Ad{N#D~L@0goVuYqx6L^T_<{Zg#=0otZT7J0Sg93< zJ_mX2IquB#Bm6s#^rsweb>du#$y5q2icb}=oNpi;{UA7T{^iK)*yGw5d6=pq_?*D>mRC&iQRDaItw;A9 zUwyN}YMcO55)^&3H9%p>YklyFuHBgRqrZ5o{^}Fg-RyE2Q&BkPr4P7!;2dsBBY5kZ z6MOo=-HSke#!JD&S`O^!e_!8v^T8YV)+p1?{L!gB{K1puy1vT%sWe=-JBLXqC(&~o zh8QdS8g_rYT88wPo<6+$(H>5CKO8#&q^#c>*j4hprAvR9e{%Kyt8YGf`?u>?8Tz14 zS1k!Et{sV(!ehcu#U^0M9yMmukRS`=W<1D5*Xuj%0?f#3B#i1AuV%Dk0a#p(np`Z z@Ny<>{{ZDV5+@v)mOs>&&;9Vv>-)pHaOkS3YygE%;ePHnZ!h`bKx(H9HZuLnZ`piM z2ii=ClLN3rsu>=c{+jNjKd(=0rLpid^!u4*y(mWJPG6kjm0Yv8i=0jt@0q$c?3SO6 zo`T_+i0(Myt98b;JQvD(PJ8@c_^spR4R6xbATVp;gA^fWJoolt6Viy=aHkR(bL6>a z0*u#QIOR-CHs#1eI_@gp{LgMJH~1i?ZcMM{ufkCb2He+@V%l*Br$@ccN`(OGk)9u)8Cl^IS$70>cnNtJOD;^adIv1mfzOH@{j*A zpUGT+)Iu&-&YD8$81J|E-`Afpo?Sod(=~-f1KG?W4N<>A4H|trX(W)6k{Oa&+m(#9NV~FpO<-jgq5FpLo=R80h%`t-tc094&kfl2?<-(g>J|r?=r^r}OA> zmp&f(`pX~wSI3@L@|*kMoPV!t)up3lQ3afNHGkNJ?ukAA%&S+P!*d|=aQo0Nz5YfK zKR4s_UId|>uzYyqbjJt5=GTt(Ez-yS$U9G{Cqm(9+ajN> zgT~ide(a0*RMefm>R_qQXttNTKUJiWa#G(o>gibbxL(-&eO>l^>-4Yw{;}#f=Ndog zTpjgwLr5GKkp=Bm^VjU9%39U~*@|iCk3RCfSN<|`f4G7d?}tSDTy`AIwQL?;#$97+ ztSvnwvYK=4p}Io0?fv>@g@5oyeJpBc$rtZF^xS26hCWZ4#Yok->p2VeHu^YSPUGG2k^A|XtmgmW>+a9E=9)4OCk5TSW^(Rd;pI_JfySLre zQLOv*sbCN46V?6wuS}=FN|eBT_p(bFq*`MXpIA`Vg(EMp(umI{;a4t?=!xmyYV?&H2P7PMKv=d+vjRBWh(As6Lj0Qcn$#3?!%y6`&&<3aj!!;n$@xk0 z*`QFf2~yb7*ZgYBR84)J;s=KZ&x_vE!tWtII60`G5(@|IFyHPr=5zVG<@(X_<1hTc z_kGCwAo)o&!Uw+XL*A!{f;S*LxN;y5=0e-ZrK)pdNED2liw(!iVbw-%n7!XMpG8kA zGUJMmr0RBj5-MyJddQOpL{O*s7%s{`6u+WXrgQwlI?smCIg$&Q{AYgqCt0wKb7$_% zm%{TugWsEv_{Fa|uJO;}cZ_9uLpG0)>jq*Vhu`WPlbLjiH(IU~Fm-o{X+n|rIebs+ zBK*FBMohVN%r4@=_@qH>4)KXqe5CL#cK)Tu;+Dei@z-rsKEYOe;uO{W-~*^lGv{e} zg4af91r84J?WZul<4pXy&Q9bMAD7uEiayKu@j6WtFdw~+#;%<5b$dDfR;X#?4us;} z-~EhV6zs>~=Rof`?o~=VM~9%M_?8J+n!&AcCV)?AP=;fE71{~UeEA>#S{QucDki=r zzHybu$j{hvT>Nr&n2+r=zY;+&dlw*cHh$KbFJ$UN=-6jIG7AR2vDH_c$iN1FmhpRt z?{%2s!?BZglURd~-k|DP8~&9Flv)o?mLI$Jz3h>-Z8i{UeJRS<(K9vL#!-~$F*1Sp z9>4-|wb7EC2gB>kF9$2`EI#_O(HBeOdGZy+=Ze2BPH_+Mi?qgP47=j(>kB=mJ%oMS z9r<0iE@an9F`Z)KGra&4x%#2EIrCiSSMf=2pI?~4w>$UPbpC{gT;8zlrl=Bb2 zc!MuoiVfHWSDf^|NDlF(^ZW;&*`LSHX6X1EeyW$cIeN{P*pA<}=H;OUB#~>P2l%!Y z!u69#KlsSz*U2UJ{M*;+{q-Mwz4pdlJGFtZ-+TGiS1Ql<#B&y|xO2F8BP#-G95X!= zS3AtF&0v5*jT?Lk8~!j1%0_T}otooBko6is#Sgz&6@Aj7$ONp`$^7Ks*zOGN$=Vl+ z!3WfQyRB%BY(65Ff(S*v1=yWtyJ{I0gB$4W-~OP!g>&~BlI$ss{JeWJ0Y~lvE4La}LgwmJ{B^=-^LrxrR*K+!NY34Y z%M z<9FfUS32e(gAJbEtbl5ub8iasSIo+HYW6cI2(;PPCVrX9hj6>)HIID%gYPzH@6^%v zv^{*@-@5)2n!;y#NN$bBu|)+fn^0}89(_q=8AGE|lG!A3qm}-*G$sPd@g2 zSN`*ry_F8$fdaX8yu3>5_^=Mm3a>SxDq|(W496V3gthog+!l-+gI^0x3>K~U0B9_I z@g1v9#%%cbQY(J<)|7{e%NhR$c6@0R)3;{wt|Y5hT-qAn?23((Ie*Is_;P_4Gx3j1 z3^!RMCcZ=O#~*wM_}}BBm6H6+W|(D1K9`SA_)O&v{7zZehxLm7tBQH}eC`H%|3AL+ zwv$WC=ZSiwBbOHn*aasRMW->jDp-wcQfvqt$sDPv&GGOq`KuGkd^o;c>O`@?JJE_` zdU788%6;TNa;;()znFK!uf=i(n|UXb!}$}T5F5S&N6!Fu`(`Au^2Zij=Z|V?HNBZ# z{Jg_J&>P3Qlh3>HhAVHIXs5)?*?J{TB9TPPY-Gp32p`^F3!lv=`TY2MT!#Dn_EX5YDwXjm4@%zo zyA%j0dpPZ8aUi>rp!dHqyG~d+l6Q>+x9T-*oC&4dQmFv;TYcH~Spj>DJ0esIt zzWNO+#A`{>E5i(Xk;Z0`sjgNLsQM^ePYfMu`tZTDpWqGSgiZetwnduxeT7P8ynTsi zel~9SC}kpn5&t6m<~Z?*-@e9Xw_7%@1cxGiwOUv!*ZAgV{^YpI;WyoHSsAi`#H6j9 zt$aSe;%xY&tQ7Q@%CCLw|GfH*c7B0V=63;TLHuy07aBFXpK@e@kz6>#YSGcv3{ghz zzVXF3=^Q@()T&z5KP7&Q>i!XZTNu&$kfkNQnO!8-_aDL+?R~C8sjF4t! z6x@c9tB)3F@nK85F<=By?G&Gi4}X@LiXJ2XmM&tvDMDVeZJcH{s6W+y1bgFn`9~ZXTFjEjziZ(}(o3vn z`%X>ZGshK%2W48h%Jnqix>9=bSGbGC-{Va~Hp{r_k-l2)R5e=9GXJFTue#GuTPtHLO_kpoE;{;<|N8ou=yCIP zN<{A~WY5T@7mLhsKlK)EER*b9LF?v{dT-&+=Hpvd_~PVB{13->Hs|DD_AU++MKR^? zVbs#s_)ceV^X6!`7vaB08NBAP@4xarcZzYI{jMLv_MN@||G4r!x9+?3(b^}k&qm0m zIJo%3!Mf<)XVROminu6NX7e>E)#+h2O$}L)eu$)~=3}XaGUgyZ_V8KMnK#)7zjPHp z_Ts=j%wK(OAJ%4maf|Pa51wLAKZDR6(r+-k<@J}An;-pDHxE9y+0Rj)g#6$aUwirP zX!kYxQ0mVy-QN2yL-92;)+QS*i|kvrv|fAPK+-?Jmin%y1ZS6N0LGw(w2!|y(vgZ*y#F}>^b>-1db)Nj=f;xC|Ft8@YI zMIq1nn~#0+?)d1{!hey9e+8a5izk@{Oplez2GHqrSUlSN&@^wrvVyP!giSlmuO%9r zW`jOGD83?gYTjdlCEZT%G_f_YKb`yp!)N?Qcc8y6-5c~LFW-9YpKRX@b^v?Vs?#fW z*DlT`JnOH$|Jl3C_q|fP=kqnu&(d`7^YSrkS5(VraZMu&zIv_2t3qXyto_-1d=_pk z^vbJk!~$p|XLVszAW2V_Pv+Y=r{jaEb~--#@C&o@YkYyT{(x!uak=@SdyXFer}KN5 zFTlMk$hvZOMZ0@2f4q3@#*LTjFKs?eK|fUioJEMtmjUO-<02&yOE|p|V-%X=6Xv@X(oCxjr1jf2;npdQ$tQM<2QW z=azp~pZ|S`@O0`r&8O4l#eLPLy7n@?{`u15<>(>(HP?sj)ax^gp0C0^Q@=iWK*f2c zD)fL#sXs~F-K&MVM;neWi6M8@tERwteOT%%cv{JMqtu2a&-F?ld~arKwAH@y=LKKw z#h-2EA?L&VSjQ(K-_mq$Dl8u&b4}hKRXUGo8jtD{dqj15STlZy(C<7sI)2CQ_~fnE k9@EG3{4s5ok?kb>|H;3ubeVRY^#A|>07*qoM6N<$f~C=$asU7T literal 0 HcmV?d00001 diff --git a/ArkUIKit/EventProject/entry/src/main/resources/base/profile/backup_config.json b/ArkUIKit/EventProject/entry/src/main/resources/base/profile/backup_config.json new file mode 100644 index 00000000000..78f40ae7c49 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/resources/base/profile/backup_config.json @@ -0,0 +1,3 @@ +{ + "allowToBackupRestore": true +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/resources/base/profile/main_pages.json b/ArkUIKit/EventProject/entry/src/main/resources/base/profile/main_pages.json new file mode 100644 index 00000000000..2bfa5d374a7 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/resources/base/profile/main_pages.json @@ -0,0 +1,6 @@ +{ + "src": [ + "pages/Index", + "pages/springloading/SpringLoading" + ] +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/resources/dark/element/color.json b/ArkUIKit/EventProject/entry/src/main/resources/dark/element/color.json new file mode 100644 index 00000000000..79b11c2747a --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/resources/dark/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#000000" + } + ] +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/main/syscap.json b/ArkUIKit/EventProject/entry/src/main/syscap.json new file mode 100644 index 00000000000..d14edde4277 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/main/syscap.json @@ -0,0 +1,20 @@ +{ + "devices": { + "general": [ + "default" + ], + "custom": [ + { + "xts": [ + "SystemCapability.ArkUI.ArkUI.Full", + "SystemCapability.ArkUI.ArkUI.Circle", + "SystemCapability.Test.UiTest", + "SystemCapability.Ability.AbilityRuntime.Core", + "SystemCapability.Notification.Emitter", + "SystemCapability.MiscServices.Time", + "SystemCapability.FileManagement.File.FileIO" + ] + } + ] + } +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/mock/mock-config.json5 b/ArkUIKit/EventProject/entry/src/mock/mock-config.json5 new file mode 100644 index 00000000000..b9a78e20153 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/mock/mock-config.json5 @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2025 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. + */ + +{ +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/ohosTest/ets/test/Ability.test.ets b/ArkUIKit/EventProject/entry/src/ohosTest/ets/test/Ability.test.ets new file mode 100644 index 00000000000..0f8ce9a2c01 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/ohosTest/ets/test/Ability.test.ets @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2025 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. + */ + +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; + +export default function abilityTest() { + describe('ActsAbilityTest', () => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }) + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }) + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }) + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }) + it('assertContain', 0, () => { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + hilog.info(0x0000, 'testTag', '%{public}s', 'it begin'); + let a = 'abc'; + let b = 'b'; + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. + expect(a).assertContain(b); + expect(a).assertEqual(a); + }) + }) +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/ohosTest/ets/test/Index.test.ets b/ArkUIKit/EventProject/entry/src/ohosTest/ets/test/Index.test.ets new file mode 100644 index 00000000000..093ce5c504f --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/ohosTest/ets/test/Index.test.ets @@ -0,0 +1,721 @@ +/* + * Copyright (c) 2025 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. + */ + +import { describe, it, expect, beforeAll } from '@ohos/hypium'; +// 导入测试依赖kit +import { abilityDelegatorRegistry, Driver, ON, MouseButton, Component, MatchPattern, Point, on } from '@kit.TestKit'; +import { UIAbility, Want } from '@kit.AbilityKit'; +import resource from '../../../main/ets/common/resource'; + +const delegator: abilityDelegatorRegistry.AbilityDelegator = abilityDelegatorRegistry.getAbilityDelegator(); +const bundleName = abilityDelegatorRegistry.getArguments().bundleName; +let want: Want; + +export default function IndexTest() { + + describe('IndexTest', () => { + + beforeAll(async () => { + want = { + bundleName: bundleName, + abilityName: 'EntryAbility' + }; + await delegator.startAbility(want); + let driver = Driver.create(); + await driver.delayMs(1000); + const ability: UIAbility = await delegator.getCurrentTopAbility(); + console.info('get top ability'); + expect(ability.context.abilityInfo.name).assertEqual('EntryAbility'); + }) + + /** + * @tc.number UiTest_001 + * @tc.name testSingleGestureTap + * @tc.desc 测试点击手势示例 + */ + it('testSingleGestureTap', 0, async (done: Function) => { + console.info('uitest: testSingleGestureTap begin'); + let driver = Driver.create(); + let button_list = await driver.findComponent(ON.text('gesture', MatchPattern.CONTAINS)); + expect(button_list === null).assertFalse(); + await button_list.click(); + //$r('app.string.singlegesture_Index_TapGesture_title')需要替换为开发者所需的字符串资源文件 + let button_list1 = await driver.findComponent(ON.text(resource.resourceToString($r('app.string.singlegesture_Index_TapGesture_title')), MatchPattern.CONTAINS)); + await button_list1.click(); + //已进入测试界面 + let button2 = await driver.findComponent(ON.text('twice', MatchPattern.CONTAINS)); + await button2.doubleClick(); + await driver.delayMs(1000); + await driver.pressBack(); + await driver.pressBack(); + console.info('uitest: testSingleGestureTap end'); + done(); + }) + + /** + * @tc.number UiTest_002 + * @tc.name testSingleGestureLong + * @tc.desc 测试长按手势示例 + */ + it('testSingleGestureLong', 0, async (done: Function) => { + console.info('uitest: testSingleGestureLong begin'); + let driver = Driver.create(); + let button_list = await driver.findComponent(ON.text('gesture', MatchPattern.CONTAINS)); + expect(button_list === null).assertFalse(); + await button_list.click(); + //$r('app.string.singlegesture_Index_LongPress_title')需要替换为开发者所需的字符串资源文件 + let button_list1 = await driver.findComponent(ON.text(resource.resourceToString($r('app.string.singlegesture_Index_LongPress_title')), MatchPattern.CONTAINS)); + await button_list1.click(); + //已进入测试界面 + let button2 = await driver.findComponent(ON.text('Long', MatchPattern.CONTAINS)); + await button2.longClick(); + await driver.delayMs(1000); + await driver.pressBack(); + await driver.pressBack(); + console.info('uitest: testSingleGestureLong end'); + done(); + }) + + /** + * @tc.number UiTest_003 + * @tc.name testSingleGestureJudge + * @tc.desc 测试手势拦截示例 + */ + it('testSingleGestureJudge', 0, async (done: Function) => { + console.info('uitest: testSingleGestureJudge begin'); + let driver = Driver.create(); + let button_list = await driver.findComponent(ON.text('GestureJudge', MatchPattern.CONTAINS)); + expect(button_list === null).assertFalse(); + await button_list.click(); + //$r('app.string.gesture_Index_GestureJudge_title')需要替换为开发者所需的字符串资源文件 + let button_list1 = await driver.findComponent(ON.text(resource.resourceToString($r('app.string.gesture_Index_GestureJudge_title')), MatchPattern.CONTAINS)); + await button_list1.click(); + //已进入测试界面 + await driver.delayMs(1000); + await driver.pressBack(); + console.info('uitest: testSingleGestureJudge end'); + done(); + }) + + /** + * @tc.number UiTest_004 + * @tc.name testSingleGestureTouch + * @tc.desc 测试点击事件示例 + */ + it('testSingleGestureTouch', 0, async (done: Function) => { + console.info('uitest: testSingleGestureTouch begin'); + let driver = Driver.create(); + let button_list = await driver.findComponent(ON.text('TouchEvent', MatchPattern.CONTAINS)); + expect(button_list === null).assertFalse(); + await button_list.click(); + //$r('app.string.Touch_Index_ClickEvent_title')需要替换为开发者所需的字符串资源文件 + let button_list1 = await driver.findComponent(ON.text(resource.resourceToString($r('app.string.Touch_Index_ClickEvent_title')), MatchPattern.CONTAINS)); + await button_list1.click(); + //已进入测试界面 + let button = await driver.findComponent(ON.text('show', MatchPattern.CONTAINS)); + await button.click(); + await driver.delayMs(1000); + await driver.pressBack(); + await driver.pressBack(); + console.info('uitest: testSingleGestureTouch end'); + done(); + }) + + /** + * @tc.number UiTest_005 + * @tc.name testOnClickGesture + * @tc.desc 测试点击事件示例 + */ + it('testOnClickGesture', 0, async (done: Function) => { + console.info('uitest: testOnClickGesture begin'); + let driver = Driver.create(); + let button_list = await driver.findComponent(ON.text('gesture', MatchPattern.CONTAINS)); + expect(button_list === null).assertFalse(); + await button_list.click(); + let scrollBar: Component = await driver.findComponent(ON.type('Scroll')); + //$r('app.string.singlegesture_Index_Click_title')需要替换为开发者所需的字符串资源文件 + let button_list1 = await scrollBar.scrollSearch(ON.text(resource.resourceToString($r('app.string.singlegesture_Index_Click_title')), MatchPattern.CONTAINS)); + await button_list1.click(); + //已进入测试界面 + await driver.delayMs(1000); + await driver.pressBack(); + await driver.pressBack(); + console.info('uitest: testOnClickGesture end'); + done(); + }) + + /** + * @tc.number UiTest_006 + * @tc.name testFocusActive + * @tc.desc 测试聚焦示例 + */ + it('testFocusActive', 0, async (done: Function) => { + let driver = Driver.create(); + let button_list = await driver.waitForComponent(ON.text('FocusEvent', MatchPattern.CONTAINS), 1000); + expect(button_list === null).assertFalse(); + await button_list.click(); + let scrollBar: Component = await driver.findComponent(ON.type('Scroll')); + let button_list1 = await scrollBar.scrollSearch(ON.text(resource.resourceToString($r('app.string.Focus_Index_FocusActive_title')), MatchPattern.CONTAINS)); + await button_list1.click(); + //已进入测试界面 + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2054); + await driver.pressBack(); + await driver.pressBack(); + done(); + }) + + /** + * @tc.number UiTest_007 + * @tc.name testDeviceOnKey_1 + * @tc.desc 测试支持键盘输入事件 + */ + it('testDeviceOnKey_1', Level.LEVEL1, async (done: Function) => { + console.info('uitest: testDeviceOnKey_1 begin'); + hilog.info(DOMAIN, TAG, BUNDLE + "ProgressTest: testDeviceOnKey_1 begin"); + let driver = Driver.create(); + let button_list = await driver.findComponent(ON.text('DeviceEvent', MatchPattern.CONTAINS)); + expect(button_list === null).assertFalse(); + await button_list.click(); + await driver.delayMs(1000); + let button_list1 = await driver.findComponent(ON.text(resource.resourceToString($r('app.string.Device_index_title')), MatchPattern.CONTAINS)); + await button_list1.click(); + button_list1 = await driver.findComponent(ON.text(resource.resourceToString($r('app.string.Device_OnKey_title')), MatchPattern.CONTAINS)); + await button_list1.click(); + //已进入测试界面 + await driver.triggerKey(KeyCode.KEYCODE_SEARCH); + await driver.triggerKey(KeyCode.KEYCODE_ENTER); + await driver.triggerKey(KeyCode.KEYCODE_CTRL_LEFT); + await driver.triggerKey(KeyCode.KEYCODE_CTRL_RIGHT); + await driver.triggerKey(KeyCode.KEYCODE_SHIFT_LEFT); + await driver.triggerKey(KeyCode.KEYCODE_A); + await driver.triggerKey(KeyCode.KEYCODE_Z); + let button = await driver.findComponent(ON.text('onKeyEvent', MatchPattern.CONTAINS)); + await button.click(); + + await driver.delayMs(2000); + await driver.pressBack(); + await driver.pressBack(); + hilog.info(DOMAIN, TAG, BUNDLE + "ProgressTest: testDeviceOnKey_1 end"); + done(); + }) + + /** + * @tc.number UiTest_008 + * @tc.name testDeviceOnKey_2 + * @tc.desc 测试支持键盘输入事件 + */ + it('testDeviceOnKey_2', Level.LEVEL1, async (done: Function) => { + hilog.info(DOMAIN, TAG, BUNDLE + "ProgressTest: testDeviceOnKey_2 begin"); + let driver = Driver.create(); + let button_list = await driver.findComponent(ON.text('DeviceEvent', MatchPattern.CONTAINS)); + expect(button_list === null).assertFalse(); + await button_list.click(); + await driver.delayMs(1000); + let button_list1 = await driver.findComponent(ON.text(resource.resourceToString($r('app.string.Device_index_title')), MatchPattern.CONTAINS)); + await button_list1.click(); + button_list1 = await driver.findComponent(ON.text(resource.resourceToString($r('app.string.Key_PreventBubble')), MatchPattern.CONTAINS)); + await button_list1.click(); + //已进入测试界面 + await driver.triggerKey(KeyCode.KEYCODE_SEARCH); + await driver.triggerKey(KeyCode.KEYCODE_ENTER); + await driver.triggerKey(KeyCode.KEYCODE_CTRL_LEFT); + await driver.triggerKey(KeyCode.KEYCODE_CTRL_RIGHT); + await driver.triggerKey(KeyCode.KEYCODE_SHIFT_LEFT); + await driver.triggerKey(KeyCode.KEYCODE_A); + await driver.triggerKey(KeyCode.KEYCODE_Z); + let button = await driver.findComponent(ON.text('onKeyEvent', MatchPattern.CONTAINS)); + await button.click(); + + await driver.delayMs(2000); + await driver.pressBack(); + await driver.pressBack(); + hilog.info(DOMAIN, TAG, BUNDLE + "ProgressTest: testDeviceOnKey_2 end"); + done(); + }) + + /** + * @tc.number UiTest_009 + * @tc.name testDeviceOnKey_3 + * @tc.desc 测试支持键盘输入事件 + */ + it('testDeviceOnKey_3', Level.LEVEL1, async (done: Function) => { + hilog.info(DOMAIN, TAG, BUNDLE + "ProgressTest: testDeviceOnKey_3 begin"); + let driver = Driver.create(); + let button_list = await driver.findComponent(ON.text('DeviceEvent', MatchPattern.CONTAINS)); + expect(button_list === null).assertFalse(); + await button_list.click(); + await driver.delayMs(1000); + let button_list1 = await driver.findComponent(ON.text(resource.resourceToString($r('app.string.Device_index_title')), MatchPattern.CONTAINS)); + await button_list1.click(); + button_list1 = await driver.findComponent(ON.text(resource.resourceToString($r('app.string.Key_PreIme')), MatchPattern.CONTAINS)); + await button_list1.click(); + + //已进入测试界面 + let textArea = await driver.findComponent(ON.type('Search')); + expect(textArea === null).assertFalse(); + await textArea.inputText('this is content'); + await driver.triggerKey(KeyCode.KEYCODE_DPAD_LEFT); + + await driver.pressBack(); + await driver.delayMs(1000); + await driver.pressBack(); + await driver.pressBack(); + hilog.info(DOMAIN, TAG, BUNDLE + "ProgressTest: testDeviceOnKey_3 end"); + done(); + }) + + /** + * @tc.number UiTest_010 + * @tc.name testDeviceOnKey_4 + * @tc.desc 测试支持键盘输入事件 + */ + it('testDeviceOnKey_4', Level.LEVEL1, async (done: Function) => { + hilog.info(DOMAIN, TAG, BUNDLE + "ProgressTest: testDeviceOnKey_4 begin"); + let driver = Driver.create(); + let button_list = await driver.findComponent(ON.text('DeviceEvent', MatchPattern.CONTAINS)); + expect(button_list === null).assertFalse(); + await button_list.click(); + await driver.delayMs(1000); + let button_list1 = await driver.findComponent(ON.text(resource.resourceToString($r('app.string.Device_index_title')), MatchPattern.CONTAINS)); + await button_list1.click(); + button_list1 = await driver.findComponent(ON.text(resource.resourceToString($r('app.string.OnKeyDistributeEvent_title')), MatchPattern.CONTAINS)); + await button_list1.click(); + //已进入测试界面 + button_list1 = await driver.findComponent(ON.id('button1')); + expect(button_list1 === null).assertFalse(); + await button_list1.click(); + await driver.triggerKey(KeyCode.KEYCODE_SEARCH); + + await driver.pressBack(); + await driver.pressBack(); + hilog.info(DOMAIN, TAG, BUNDLE + "ProgressTest: testDeviceOnKey_4 end"); + done(); + }) + + /** + * @tc.number UiTest_011 + * @tc.name testDeviceOnKey_5 + * @tc.desc 测试支持键盘输入事件 + */ + it('testDeviceOnKey_5', Level.LEVEL1, async (done: Function) => { + hilog.info(DOMAIN, TAG, BUNDLE + "ProgressTest: testDeviceOnKey_5 begin"); + let driver = Driver.create(); + let button_list = await driver.findComponent(ON.text('DeviceEvent', MatchPattern.CONTAINS)); + expect(button_list === null).assertFalse(); + await button_list.click(); + await driver.delayMs(1000); + let button_list1 = await driver.findComponent(ON.text(resource.resourceToString($r('app.string.Device_index_title')), MatchPattern.CONTAINS)); + await button_list1.click(); + button_list1 = await driver.findComponent(ON.text(resource.resourceToString($r('app.string.OnKeyPreImeCommit_title')), MatchPattern.CONTAINS)); + await button_list1.click(); + //已进入测试界面 + let textArea = await driver.findComponent(ON.type('TextArea')); + expect(textArea === null).assertFalse(); + await textArea.inputText('this is content'); + await driver.triggerKey(KeyCode.KEYCODE_ENTER); + + await driver.delayMs(1000); + await driver.pressBack(); + await driver.pressBack(); + hilog.info(DOMAIN, TAG, BUNDLE + "ProgressTest: testDeviceOnKey_5 end"); + done(); + }) + + /** + * @tc.number UiTest_012 + * @tc.name testPanCombination + * @tc.desc 测试滑动事件示例 + */ + it('testPanCombination', 0, async (done: Function) => { + console.info('uitest: testPanCombination begin'); + let driver = Driver.create(); + let button_list = await driver.findComponent(ON.text('gesture', MatchPattern.CONTAINS)); + expect(button_list === null).assertFalse(); + await button_list.click(); + let scrollBar: Component = await driver.findComponent(ON.type('Scroll')); + //$r('app.string.singlegesture_Index_Pancom_title')需要替换为开发者所需的字符串资源文件 + let button_list1 = await scrollBar.scrollSearch(ON.text(resource.resourceToString($r('app.string.singlegesture_Index_Pancom_title')), MatchPattern.CONTAINS)); + await button_list1.click(); + //已进入测试界面 + await driver.delayMs(1000); + await driver.pressBack(); + await driver.pressBack(); + console.info('uitest: testPanCombination end'); + done(); + }) + + /** + * @tc.number UiTest_013 + * @tc.name FocusOnClick + * @tc.desc 测试焦点传递事件示例 + */ + it('testFocusOnClick', 0, async (done: Function) => { + let driver = Driver.create(); + let button_list = await driver.findComponent(ON.text('FocusEvent', MatchPattern.CONTAINS)); + expect(button_list === null).assertFalse(); + await button_list.click(); + let scrollBar: Component = await driver.findComponent(ON.type('Scroll')); + let button_list1 = await scrollBar.scrollSearch(ON.text(resource.resourceToString($r('app.string.Focus_Index_FocusOnClick_title')), MatchPattern.CONTAINS)); + await button_list1.click(); + //已进入测试界面 + let button = await driver.findComponent(ON.text('Button', MatchPattern.CONTAINS)); + await button.click(); + let button1 = await driver.findComponent(ON.text('count is odd number', MatchPattern.CONTAINS)); + await button1.click(); + let button2 = await driver.findComponent(ON.text('count is even number', MatchPattern.CONTAINS)); + await button2.click(); + await driver.pressBack(); + await driver.pressBack(); + done(); + }) + + /** + * @tc.number UiTest_014 + * @tc.name FocusScopeId + * @tc.desc 测试焦点传递事件示例 + */ + it('testFocusScopeId', 0, async (done: Function) => { + let driver = Driver.create(); + let button_list = await driver.findComponent(ON.text('FocusEvent', MatchPattern.CONTAINS)); + expect(button_list === null).assertFalse(); + await button_list.click(); + let scrollBar: Component = await driver.findComponent(ON.type('Scroll')); + let button_list1 = await scrollBar.scrollSearch(ON.text(resource.resourceToString($r('app.string.Focus_Index_FocusScopeId_title')), MatchPattern.CONTAINS)); + await button_list1.click(); + //已进入测试界面 + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2013); + await driver.triggerKey(2013); + await driver.triggerKey(2049); + await driver.triggerKey(2013); + await driver.triggerKey(2013); + await driver.pressBack(); + await driver.pressBack(); + await driver.pressBack(); + done(); + }) + + /** + * @tc.number UiTest_015 + * @tc.name FocusScopePriorityPrevious + * @tc.desc 测试焦点传递事件示例 + */ + it('testFocusScopePriorityPrevious', 0, async (done: Function) => { + let driver = Driver.create(); + let button_list = await driver.findComponent(ON.text('FocusEvent', MatchPattern.CONTAINS)); + expect(button_list === null).assertFalse(); + await button_list.click(); + let scrollBar: Component = await driver.findComponent(ON.type('Scroll')); + let button_list1 = await scrollBar.scrollSearch(ON.text(resource.resourceToString($r('app.string.Focus_Index_FocusScopePriorityPrevious_title')), MatchPattern.CONTAINS)); + await button_list1.click(); + //已进入测试界面 + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.pressBack(); + await driver.pressBack(); + done(); + }) + + /** + * @tc.number UiTest_016 + * @tc.name FocusTransfer + * @tc.desc 测试焦点传递事件示例 + */ + it('testFocusTransfer', 0, async (done: Function) => { + let driver = Driver.create(); + let button_list = await driver.findComponent(ON.text('FocusEvent', MatchPattern.CONTAINS)); + expect(button_list === null).assertFalse(); + await button_list.click(); + let scrollBar: Component = await driver.findComponent(ON.type('Scroll')); + let button_list1 = await scrollBar.scrollSearch(ON.text(resource.resourceToString($r('app.string.Focus_Index_FocusTransfer_title')), MatchPattern.CONTAINS)); + await button_list1.click(); + //已进入测试界面 + let button = await driver.findComponent(ON.text('button 1', MatchPattern.CONTAINS)); + await button.click(); + await driver.pressBack(); + await driver.pressBack(); + done(); + }) + + /** + * @tc.number UiTest_017 + * @tc.name FocusTraversalGuidelines + * @tc.desc 测试焦点传递事件示例 + */ + it('testFocusTraversalGuidelines', 0, async (done: Function) => { + let driver = Driver.create(); + let button_list = await driver.findComponent(ON.text('FocusEvent', MatchPattern.CONTAINS)); + expect(button_list === null).assertFalse(); + await button_list.click(); + let scrollBar: Component = await driver.findComponent(ON.type('Scroll')); + let button_list1 = await scrollBar.scrollSearch(ON.text(resource.resourceToString($r('app.string.Focus_Index_FocusTraversalGuidelines_title')), MatchPattern.CONTAINS)); + await button_list1.click(); + //已进入测试界面 + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2014); + await driver.triggerKey(2012); + await driver.pressBack(); + await driver.pressBack(); + done(); + }) + + /** + * @tc.number UiTest_018 + * @tc.name FrojectAreaFocusFlex + * @tc.desc 测试焦点传递事件示例 + */ + it('testFrojectAreaFocusFlex', 0, async (done: Function) => { + let driver = Driver.create(); + let button_list = await driver.findComponent(ON.text('FocusEvent', MatchPattern.CONTAINS)); + expect(button_list === null).assertFalse(); + await button_list.click(); + let scrollBar: Component = await driver.findComponent(ON.type('Scroll')); + let button_list1 = await scrollBar.scrollSearch(ON.text(resource.resourceToString($r('app.string.Focus_Index_FrojectAreaFocusFlex_title')), MatchPattern.CONTAINS)); + await button_list1.click(); + //已进入测试界面 + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.pressBack(); + await driver.pressBack(); + done(); + }) + + /** + * @tc.number UiTest_019 + * @tc.name NextFocus + * @tc.desc 测试焦点传递事件示例 + */ + it('testNextFocus', 0, async (done: Function) => { + let driver = Driver.create(); + let button_list = await driver.findComponent(ON.text('FocusEvent', MatchPattern.CONTAINS)); + expect(button_list === null).assertFalse(); + await button_list.click(); + let scrollBar: Component = await driver.findComponent(ON.type('Scroll')); + let button_list1 = await scrollBar.scrollSearch(ON.text(resource.resourceToString($r('app.string.Focus_Index_NextFocus_title')), MatchPattern.CONTAINS)); + await button_list1.click(); + //已进入测试界面 + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2013); + await driver.triggerKey(2013); + await driver.triggerKey(2013); + await driver.triggerKey(2013); + await driver.triggerKey(2013); + await driver.triggerKey(2013); + await driver.triggerKey(2013); + await driver.triggerKey(2013); + await driver.pressBack(); + await driver.pressBack(); + done(); + }) + + /** + * @tc.number UiTest_020 + * @tc.name OnFocusOnBlurEvents + * @tc.desc 测试焦点传递事件示例 + */ + it('testOnFocusOnBlurEvents', 0, async (done: Function) => { + let driver = Driver.create(); + let button_list = await driver.findComponent(ON.text('FocusEvent', MatchPattern.CONTAINS)); + expect(button_list === null).assertFalse(); + await button_list.click(); + let scrollBar: Component = await driver.findComponent(ON.type('Scroll')); + let button_list1 = await scrollBar.scrollSearch(ON.text(resource.resourceToString($r('app.string.Focus_Index_OnFocusOnBlurEvents_title')), MatchPattern.CONTAINS)); + await button_list1.click(); + //已进入测试界面 + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.pressBack(); + await driver.pressBack(); + done(); + }) + + /** + * @tc.number UiTest_021 + * @tc.name ProjectionBasedFocus + * @tc.desc 测试焦点传递事件示例 + */ + it('testProjectionBasedFocus', 0, async (done: Function) => { + let driver = Driver.create(); + let button_list = await driver.findComponent(ON.text('FocusEvent', MatchPattern.CONTAINS)); + expect(button_list === null).assertFalse(); + await button_list.click(); + let scrollBar: Component = await driver.findComponent(ON.type('Scroll')); + let button_list1 = await scrollBar.scrollSearch(ON.text(resource.resourceToString($r('app.string.Focus_Index_ProjectionBasedFocus_title')), MatchPattern.CONTAINS)); + await button_list1.click(); + //已进入测试界面 + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.pressBack(); + await driver.pressBack(); + done(); + }) + + /** + * @tc.number UiTest_022 + * @tc.name ProjectionBasedFocus + * @tc.desc 测试焦点传递事件示例 + */ + it('testRequestFocus', 0, async (done: Function) => { + let driver = Driver.create(); + let button_list = await driver.findComponent(ON.text('FocusEvent', MatchPattern.CONTAINS)); + expect(button_list === null).assertFalse(); + await button_list.click(); + let scrollBar: Component = await driver.findComponent(ON.type('Scroll')); + let button_list1 = await scrollBar.scrollSearch(ON.text(resource.resourceToString($r('app.string.Focus_Index_RequestFocus_title')), MatchPattern.CONTAINS)); + await button_list1.click(); + //已进入测试界面 + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.pressBack(); + await driver.pressBack(); + done(); + }) + + /** + * @tc.number UiTest_023 + * @tc.name ScopeFocus + * @tc.desc 测试焦点传递事件示例 + */ + it('testScopeFocus', 0, async (done: Function) => { + let driver = Driver.create(); + let button_list = await driver.findComponent(ON.text('FocusEvent', MatchPattern.CONTAINS)); + expect(button_list === null).assertFalse(); + await button_list.click(); + let scrollBar: Component = await driver.findComponent(ON.type('Scroll')); + let button_list1 = await scrollBar.scrollSearch(ON.text(resource.resourceToString($r('app.string.Focus_Index_ScopeFocus_title')), MatchPattern.CONTAINS)); + await button_list1.click(); + //已进入测试界面 + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + let button = await driver.findComponent(ON.text('Button1', MatchPattern.CONTAINS)); + await button.click(); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.pressBack(); + await driver.pressBack(); + done(); + }) + + /** + * @tc.number UiTest_024 + * @tc.name TabIndex + * @tc.desc 测试焦点传递事件示例 + */ + it('testTabIndex', 0, async (done: Function) => { + let driver = Driver.create(); + let button_list = await driver.findComponent(ON.text('FocusEvent', MatchPattern.CONTAINS)); + expect(button_list === null).assertFalse(); + await button_list.click(); + let scrollBar: Component = await driver.findComponent(ON.type('Scroll')); + let button_list1 = await scrollBar.scrollSearch(ON.text(resource.resourceToString($r('app.string.Focus_Index_TabIndex_title')), MatchPattern.CONTAINS)); + await button_list1.click(); + //已进入测试界面 + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.pressBack(); + await driver.pressBack(); + done(); + }) + + /** + * @tc.number UiTest_025 + * @tc.name TabIndexFocus + * @tc.desc 测试焦点传递事件示例 + */ + it('testTabIndexFocus', 0, async (done: Function) => { + let driver = Driver.create(); + let button_list = await driver.findComponent(ON.text('FocusEvent', MatchPattern.CONTAINS)); + expect(button_list === null).assertFalse(); + await button_list.click(); + let scrollBar: Component = await driver.findComponent(ON.type('Scroll')); + let button_list1 = await scrollBar.scrollSearch(ON.text(resource.resourceToString($r('app.string.Focus_Index_TabIndexFocus_title')), MatchPattern.CONTAINS)); + await button_list1.click(); + //已进入测试界面 + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2013); + await driver.triggerKey(2013); + await driver.triggerKey(2013); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.pressBack(); + await driver.pressBack(); + done(); + }) + + /** + * @tc.number UiTest_026 + * @tc.name TabIndexFocus + * @tc.desc 测试焦点传递事件示例 + */ + it('testTabStop', 0, async (done: Function) => { + let driver = Driver.create(); + let button_list = await driver.findComponent(ON.text('FocusEvent', MatchPattern.CONTAINS)); + expect(button_list === null).assertFalse(); + await button_list.click(); + let scrollBar: Component = await driver.findComponent(ON.type('Scroll')); + let button_list1 = await scrollBar.scrollSearch(ON.text(resource.resourceToString($r('app.string.Focus_Index_TabStop_title')), MatchPattern.CONTAINS)); + await button_list1.click(); + //已进入测试界面 + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2016); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.triggerKey(2049); + await driver.pressBack(); + await driver.pressBack(); + done(); + }) + }) +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/ohosTest/ets/test/List.test.ets b/ArkUIKit/EventProject/entry/src/ohosTest/ets/test/List.test.ets new file mode 100644 index 00000000000..ea9e8f25991 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/ohosTest/ets/test/List.test.ets @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2025 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. + */ + +import IndexTest from './Index.test'; +import abilityTest from './Ability.test'; + +export default function testsuite() { + abilityTest(); + IndexTest(); +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/ohosTest/module.json5 b/ArkUIKit/EventProject/entry/src/ohosTest/module.json5 new file mode 100644 index 00000000000..84d30586d59 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/ohosTest/module.json5 @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2025 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. + */ + +{ + "module": { + "name": "entry_test", + "type": "feature", + "deviceTypes": [ + "default" + ], + "deliveryWithInstall": true, + "installationFree": false + } +} diff --git a/ArkUIKit/EventProject/entry/src/ohosTest/syscap.json b/ArkUIKit/EventProject/entry/src/ohosTest/syscap.json new file mode 100644 index 00000000000..d14edde4277 --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/ohosTest/syscap.json @@ -0,0 +1,20 @@ +{ + "devices": { + "general": [ + "default" + ], + "custom": [ + { + "xts": [ + "SystemCapability.ArkUI.ArkUI.Full", + "SystemCapability.ArkUI.ArkUI.Circle", + "SystemCapability.Test.UiTest", + "SystemCapability.Ability.AbilityRuntime.Core", + "SystemCapability.Notification.Emitter", + "SystemCapability.MiscServices.Time", + "SystemCapability.FileManagement.File.FileIO" + ] + } + ] + } +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/test/List.test.ets b/ArkUIKit/EventProject/entry/src/test/List.test.ets new file mode 100644 index 00000000000..f1186b1f53c --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/test/List.test.ets @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2025 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. + */ + +import localUnitTest from './LocalUnit.test'; + +export default function testsuite() { + localUnitTest(); +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/entry/src/test/LocalUnit.test.ets b/ArkUIKit/EventProject/entry/src/test/LocalUnit.test.ets new file mode 100644 index 00000000000..7fc57c77dbf --- /dev/null +++ b/ArkUIKit/EventProject/entry/src/test/LocalUnit.test.ets @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2025 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. + */ + +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; + +export default function localUnitTest() { + describe('localUnitTest', () => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }); + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }); + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }); + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }); + it('assertContain', 0, () => { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + let a = 'abc'; + let b = 'b'; + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. + expect(a).assertContain(b); + expect(a).assertEqual(a); + }); + }); +} \ No newline at end of file diff --git a/ArkUIKit/EventProject/hvigor/hvigor-config.json5 b/ArkUIKit/EventProject/hvigor/hvigor-config.json5 new file mode 100644 index 00000000000..d584c19c247 --- /dev/null +++ b/ArkUIKit/EventProject/hvigor/hvigor-config.json5 @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2025 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. + */ + +{ + "modelVersion": "5.0.1", + "dependencies": { + }, + "execution": { + // "analyze": "normal", /* Define the build analyze mode. Value: [ "normal" | "advanced" | false ]. Default: "normal" */ + // "daemon": true, /* Enable daemon compilation. Value: [ true | false ]. Default: true */ + // "incremental": true, /* Enable incremental compilation. Value: [ true | false ]. Default: true */ + // "parallel": true, /* Enable parallel compilation. Value: [ true | false ]. Default: true */ + // "typeCheck": false, /* Enable typeCheck. Value: [ true | false ]. Default: false */ + }, + "logging": { + // "level": "info" /* Define the log level. Value: [ "debug" | "info" | "warn" | "error" ]. Default: "info" */ + }, + "debugging": { + // "stacktrace": false /* Disable stacktrace compilation. Value: [ true | false ]. Default: false */ + }, + "nodeOptions": { + // "maxOldSpaceSize": 8192 /* Enable nodeOptions maxOldSpaceSize compilation. Unit M. Used for the daemon process. Default: 8192*/ + // "exposeGC": true /* Enable to trigger garbage collection explicitly. Default: true*/ + } +} diff --git a/ArkUIKit/EventProject/hvigorfile.ts b/ArkUIKit/EventProject/hvigorfile.ts new file mode 100644 index 00000000000..f3cb9f1a87a --- /dev/null +++ b/ArkUIKit/EventProject/hvigorfile.ts @@ -0,0 +1,6 @@ +import { appTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: appTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} diff --git a/ArkUIKit/EventProject/oh-package.json5 b/ArkUIKit/EventProject/oh-package.json5 new file mode 100644 index 00000000000..e41bae026aa --- /dev/null +++ b/ArkUIKit/EventProject/oh-package.json5 @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2025 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. + */ + +{ + "modelVersion": "5.0.1", + "description": "Please describe the basic information.", + "dependencies": { + }, + "devDependencies": { + "@ohos/hypium": "1.0.19", + "@ohos/hamock": "1.0.0" + } +} diff --git a/ArkUIKit/EventProject/screenshots/device/image1.png b/ArkUIKit/EventProject/screenshots/device/image1.png new file mode 100644 index 0000000000000000000000000000000000000000..3175478e318bd7c2a75fd63c27be1a515600fd61 GIT binary patch literal 50489 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 Q|A#{P|CoG<`)B6g03o=udH?_b literal 0 HcmV?d00001 diff --git a/ArkUIKit/EventProject/screenshots/device/image3.png b/ArkUIKit/EventProject/screenshots/device/image3.png new file mode 100644 index 0000000000000000000000000000000000000000..42f997e0bfebd0e150de46bcf0cf38f65ad6f0cd GIT binary patch literal 39756 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 X*kG3a|AX5i|6vZ~zyG`PejEG`!63Ut literal 0 HcmV?d00001 diff --git a/ArkUIKit/NdkNodeQueryOperate/AppScope/app.json5 b/ArkUIKit/NdkNodeQueryOperate/AppScope/app.json5 new file mode 100644 index 00000000000..235354e3af9 --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/AppScope/app.json5 @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2025 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. + */ + +{ + "app": { + "bundleName": "com.samples.ndknodequeryoperate", + "vendor": "example", + "versionCode": 1000000, + "versionName": "1.0.0", + "icon": "$media:layered_image", + "label": "$string:app_name" + } +} diff --git a/ArkUIKit/NdkNodeQueryOperate/AppScope/resources/base/element/string.json b/ArkUIKit/NdkNodeQueryOperate/AppScope/resources/base/element/string.json new file mode 100644 index 00000000000..8ae4c6a2d08 --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/AppScope/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "app_name", + "value": "NdkNodeQueryOperate" + } + ] +} diff --git a/ArkUIKit/NdkNodeQueryOperate/AppScope/resources/base/media/background.png b/ArkUIKit/NdkNodeQueryOperate/AppScope/resources/base/media/background.png new file mode 100644 index 0000000000000000000000000000000000000000..923f2b3f27e915d6871871deea0420eb45ce102f GIT binary patch literal 91942 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 M;JyCV_snDe2la%mzyJUM literal 0 HcmV?d00001 diff --git a/ArkUIKit/NdkNodeQueryOperate/AppScope/resources/base/media/layered_image.json b/ArkUIKit/NdkNodeQueryOperate/AppScope/resources/base/media/layered_image.json new file mode 100644 index 00000000000..fb49920440f --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/AppScope/resources/base/media/layered_image.json @@ -0,0 +1,7 @@ +{ + "layered-image": + { + "background" : "$media:background", + "foreground" : "$media:foreground" + } +} \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/README_zh.md b/ArkUIKit/NdkNodeQueryOperate/README_zh.md new file mode 100644 index 00000000000..712a5570a5a --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/README_zh.md @@ -0,0 +1,168 @@ +# ArkUI查询和操作自定义节点知道文档 + +## 介绍 + +本示例展示了如何通过使用以下接口,高效地访问和操控节点: + +| 接口 | 接口描述 | +|------|--------| +| OH_ArkUI_NodeUtils_GetNodeUniqueId | 获取目标节点的uniqueId。 | +| OH_ArkUI_NodeUtils_GetNodeHandleByUniqueId | 通过uniqueId获取节点。 | +| OH_ArkUI_NodeUtils_MoveTo | 将节点移动到目标父节点下,作为子节点。 | +| OH_ArkUI_NativeModule_InvalidateAttributes | 在当前帧触发节点属性更新。当前节点的属性在构建阶段之后被修改,这些改动不会立即生效,而是会延迟到下一帧统一处理。此功能会强制当前帧内的即时节点更新,确保同步应用渲染效果。| +| OH_ArkUI_NodeUtils_GetFirstChildIndexWithoutExpand | 获取目标节点在树上的第一个子节点的下标。 | +| OH_ArkUI_NodeUtils_GetLastChildIndexWithoutExpand | 获取目标节点在树上的最后一个子节点的下标。 | +| OH_ArkUI_NodeUtils_GetChildWithExpandMode | 用不同的展开模式获取对应下标的子节点。 | + +## 效果预览 + + + + + + + + + + + + + + + + + +
首页InquireUniqueIdAttributeMoveToGetNodeByIdFetchAndLoad
+ +## 具体实现 + +### 查询节点uniqueId及通过uniqueId获取节点信息 + +1. 基于[ArkTS页面](https://gitcode.com/openharmony/docs/blob/master/zh-cn/application-dev/ui/ndk-access-the-arkts-page.md),创建前置工程; +2. 调用OH_ArkUI_NodeUtils_GetNodeUniqueId接口和OH_ArkUI_NodeUtils_GetNodeHandleByUniqueId接口; +3. 点击按钮,查看日志; + +### 通过用户id获取节点信息 + +1. 基于[ArkTS页面](https://gitcode.com/openharmony/docs/blob/master/zh-cn/application-dev/ui/ndk-access-the-arkts-page.md),创建前置工程; +2. ArkTS侧接入Native组件; +3. 创建Text节点并设置id属性,通过OH_ArkUI_NodeUtils_GetAttachedNodeHandleById接口拿到节点; +4. 挂载Native节点; +5. 运行程序,点击按钮,打印节点获取成功信息; + +### 移动节点 + +1. 基于[ArkTS页面](https://gitcode.com/openharmony/docs/blob/master/zh-cn/application-dev/ui/ndk-access-the-arkts-page.md),创建前置工程; +2. ArkTS侧接入Native组件; +3. 创建Stack节点,通过OH_ArkUI_NodeUtils_MoveTo接口移动Stack节点; +4. 挂载Native节点; +5. 运行程序,点击按钮,Stack节点会移动到目标位置; + +### 在当前即时帧触发节点属性更新 + +1. 基于[ArkTS页面](https://gitcode.com/openharmony/docs/blob/master/zh-cn/application-dev/ui/ndk-access-the-arkts-page.md),创建前置工程; +2. ArkTS侧接入Native组件; +3. 设置组件属性; +4. 挂载Native节点; +5. 运行程序,点击按钮,切换图片正常展示; + +### 用不同的展开模式获取对应下标的子节点 + +1. 基于[ArkTS页面](https://gitcode.com/openharmony/docs/blob/master/zh-cn/application-dev/ui/ndk-access-the-arkts-page.md),创建前置工程; +2. 通过ArkTS构造LazyForEach及ArkTS的下树节点; +3. 通过OH_ArkUI_NodeUtils_GetAttachedNodeHandleById接口获取ArkTS组件,并通过懒展开模式获取对应的子组件信息; +4. 查看日志打印的对应错误码返回是否正确; + +## 使用说明 +1. 安装编译生成的hap包,并打开应用; +2. 进入首页,可选择不同模块页面。 +3. 点击Text选择框进入Text组件的CAPI接口展示界面; +4. 点击Swiper选择框进入Swiper组件的CAPI接口展示界面; +5. 点击Public选择框进入通用属性的CAPI接口展示界面; +6. 点击Form选择框进入表单组件的CAPI接口展示界面; +7. 点击ImageSpan选择框进入ImageSpan组件的CAPI接口展示界面;属性值设置为“none”时,图片效果以代码默认值展示。 + +## 工程目录 + +``` +entry/src/main/cpp/ +├── ArkUIBaseNode.h +├── ArkUINode.h +├── Attribute_util.h +├── CMakeLists.txt (CMake脚本) +├── GetNodeByIdExample.h +├── InquireUniqueId.cpp +├── InquireUniqueId.h +├── GridIrregularIndexesMaker.h +├── MoveTo.h +├── napi_init.cpp +├── NativeEntry.cpp +├── NativeEntry.h +├── NativeModule.h +└── ShowSubcomponentInfo.h + +entry/src/main/ets/ +├── entryability +│ └── EntryAbility.ets +├── entrybackupability +│ └── EntryBackupAbility.ets +└── pages + ├── Attribute.ets (Form页面) + ├── FetchAndLoad.ets (Form页面) + ├── GetNodeById.ets (Form页面) + ├── Index.ets (获取导航页面) + ├── InquireUniqueId.ets (Grid页面) + └── MoveTo.ets (imagespan页面) + +entry/src/main/resources/ +├── base +│ ├── element +│ │ ├── color.json +│ │ ├── float.json +│ │ └── string.json +│ ├── media +│ │ ├── background.png +│ │ ├── foreground.png +│ │ ├── layered_image.json +│ │ └── startIcon.png +│ └── profile +│ ├── backup_config.json +│ └── main_pages.json +├── dark +│ └── element +│ └── color.json +└── rawfile + +entry/src/ohosTest/ets/test +├── Ability.test.ets +├── List.test.ets +└── Public.test.ets (通用属性测试用例) +``` + +## 相关权限 + +不涉及 + +## 依赖 + +不涉及 + +## 约束和限制 + +1. 本示例支持标准系统上运行,支持设备:RK3568; + +2. 本示例支持API22版本SDK,版本号:6.0.2.54; + +3. 本示例已支持使DevEco Studio 5.1.1 Release (构建版本:5.1.1.840,构建 2025年9月20日)编译运行 + +## 下载 + +如需单独下载本工程,执行如下命令: + +``` +git init +git config core.sparsecheckout true +echo code/DocsSample/ArkUISample/NdkNodeQueryOperate > .git/info/sparse-checkout +git remote add origin https://gitcode.com/openharmony/applications_app_samples.git +git pull origin master +``` \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/build-profile.json5 b/ArkUIKit/NdkNodeQueryOperate/build-profile.json5 new file mode 100644 index 00000000000..9850438098a --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/build-profile.json5 @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2025 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. + */ + +{ + "app": { + "signingConfigs": [], + "products": [ + { + "name": "default", + "signingConfig": "default", + "compileSdkVersion": "6.0.0(20)", + "compatibleSdkVersion": "6.0.0(20)", + "targetSdkVersion": "6.0.0(20)", + "runtimeOS": "HarmonyOS", + "buildOption": { + "strictMode": { + "caseSensitiveCheck": true, + "useNormalizedOHMUrl": true + } + }, + } + ], + "buildModeSet": [ + { + "name": "debug", + }, + { + "name": "release" + } + ] + }, + "modules": [ + { + "name": "entry", + "srcPath": "./entry", + "targets": [ + { + "name": "default", + "applyToProducts": [ + "default" + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/code-linter.json5 b/ArkUIKit/NdkNodeQueryOperate/code-linter.json5 new file mode 100644 index 00000000000..4c531be90a6 --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/code-linter.json5 @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2025 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. + */ + +{ + "files": [ + "**/*.ets" + ], + "ignore": [ + "**/src/ohosTest/**/*", + "**/src/test/**/*", + "**/src/mock/**/*", + "**/node_modules/**/*", + "**/oh_modules/**/*", + "**/build/**/*", + "**/.preview/**/*" + ], + "ruleSet": [ + "plugin:@performance/recommended", + "plugin:@typescript-eslint/recommended" + ], + "rules": { + "@security/no-unsafe-aes": "error", + "@security/no-unsafe-hash": "error", + "@security/no-unsafe-mac": "warn", + "@security/no-unsafe-dh": "error", + "@security/no-unsafe-dsa": "error", + "@security/no-unsafe-ecdsa": "error", + "@security/no-unsafe-rsa-encrypt": "error", + "@security/no-unsafe-rsa-sign": "error", + "@security/no-unsafe-rsa-key": "error", + "@security/no-unsafe-dsa-key": "error", + "@security/no-unsafe-dh-key": "error", + "@security/no-unsafe-3des": "error" + } +} \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/build-profile.json5 b/ArkUIKit/NdkNodeQueryOperate/entry/build-profile.json5 new file mode 100644 index 00000000000..da7ae8eb947 --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/build-profile.json5 @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2025 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. + */ + +{ + "apiType": "stageMode", + "buildOption": { + "resOptions": { + "copyCodeResource": { + "enable": false + } + }, + "externalNativeOptions": { + "path": "./src/main/cpp/CMakeLists.txt", + "arguments": "", + "cppFlags": "", + "abiFilters": [ + "arm64-v8a", + "x86_64" + ] + } + }, + "buildOptionSet": [ + { + "name": "release", + "arkOptions": { + "obfuscation": { + "ruleOptions": { + "enable": false, + "files": [ + "./obfuscation-rules.txt" + ] + } + } + }, + "nativeLib": { + "debugSymbol": { + "strip": true, + "exclude": [] + } + } + }, + ], + "targets": [ + { + "name": "default" + }, + { + "name": "ohosTest", + } + ] +} \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/hvigorfile.ts b/ArkUIKit/NdkNodeQueryOperate/entry/hvigorfile.ts new file mode 100644 index 00000000000..10f881f112b --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/hvigorfile.ts @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2025 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. + */ + +import { hapTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: hapTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins: [] /* Custom plugin to extend the functionality of Hvigor. */ +} \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/obfuscation-rules.txt b/ArkUIKit/NdkNodeQueryOperate/entry/obfuscation-rules.txt new file mode 100644 index 00000000000..272efb6ca3f --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/obfuscation-rules.txt @@ -0,0 +1,23 @@ +# Define project specific obfuscation rules here. +# You can include the obfuscation configuration files in the current module's build-profile.json5. +# +# For more details, see +# https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5 + +# Obfuscation options: +# -disable-obfuscation: disable all obfuscations +# -enable-property-obfuscation: obfuscate the property names +# -enable-toplevel-obfuscation: obfuscate the names in the global scope +# -compact: remove unnecessary blank spaces and all line feeds +# -remove-log: remove all console.* statements +# -print-namecache: print the name cache that contains the mapping from the old names to new names +# -apply-namecache: reuse the given cache file + +# Keep options: +# -keep-property-name: specifies property names that you want to keep +# -keep-global-name: specifies names that you want to keep in the global scope + +-enable-property-obfuscation +-enable-toplevel-obfuscation +-enable-filename-obfuscation +-enable-export-obfuscation \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/oh-package-lock.json5 b/ArkUIKit/NdkNodeQueryOperate/entry/oh-package-lock.json5 new file mode 100644 index 00000000000..05149e9a079 --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/oh-package-lock.json5 @@ -0,0 +1,19 @@ +{ + "meta": { + "stableOrder": true, + "enableUnifiedLockfile": false + }, + "lockfileVersion": 3, + "ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.", + "specifiers": { + "libentry.so@src/main/cpp/types/libentry": "libentry.so@src/main/cpp/types/libentry" + }, + "packages": { + "libentry.so@src/main/cpp/types/libentry": { + "name": "libentry.so", + "version": "1.0.0", + "resolved": "", + "registryType": "local" + } + } +} \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/oh-package.json5 b/ArkUIKit/NdkNodeQueryOperate/entry/oh-package.json5 new file mode 100644 index 00000000000..9f254ab4d0e --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/oh-package.json5 @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2025 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. + */ + +{ + "name": "entry", + "version": "1.0.0", + "description": "Please describe the basic information.", + "main": "", + "author": "", + "license": "", + "dependencies": { + "libentry.so": "file:./src/main/cpp/types/libentry" + } +} \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/oh_modules/libentry.so/Index.d.ts b/ArkUIKit/NdkNodeQueryOperate/entry/oh_modules/libentry.so/Index.d.ts new file mode 100644 index 00000000000..e4d4dd802b9 --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/oh_modules/libentry.so/Index.d.ts @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2025 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. + */ + +export const createInquireUniqueIdNode: (content: Object) =>void; +export const createMoveToNode: (content: Object) =>void; +export const createUserIdNode: (content: Object) =>void; +export const showSubcomponentInfo: (content: Object) =>void; +export const createNativeNode: (content: Object) =>void; +export const destroyNativeRoot: () => void; \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/oh_modules/libentry.so/oh-package.json5 b/ArkUIKit/NdkNodeQueryOperate/entry/oh_modules/libentry.so/oh-package.json5 new file mode 100644 index 00000000000..b81656fe96c --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/oh_modules/libentry.so/oh-package.json5 @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2025 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. + */ + +{ + "name": "libentry.so", + "types": "./Index.d.ts", + "version": "1.0.0", + "description": "Please describe the basic information." +} \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/ArkUIBaseNode.h b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/ArkUIBaseNode.h new file mode 100644 index 00000000000..688e4c6743e --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/ArkUIBaseNode.h @@ -0,0 +1,177 @@ +/* + * Copyright (c) 2025 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. + */ + +#ifndef NDKNODEQUERYOPERATE_ARKUIBASENODE_H +#define NDKNODEQUERYOPERATE_ARKUIBASENODE_H + +#include +#include +#include + +#include "NativeModule.h" + +namespace NativeModule { + + class ArkUIBaseNode { + public: + explicit ArkUIBaseNode(ArkUI_NodeHandle handle) + : handle_(handle), nativeModule_(NativeModuleInstance::GetInstance()->GetNativeNodeAPI()) {} + + virtual ~ArkUIBaseNode() + { + // 封装析构函数,实现子节点移除功能。 + if (!children_.empty()) { + for (const auto &child : children_) { + nativeModule_->removeChild(handle_, child->GetHandle()); + } + children_.clear(); + } + // 封装析构函数,统一回收节点资源。 + nativeModule_->disposeNode(handle_); + } + + void AddChild(const std::shared_ptr &child) + { + children_.emplace_back(child); + OnAddChild(child); + } + + void RemoveChild(const std::shared_ptr &child) + { + children_.remove(child); + OnRemoveChild(child); + } + + void InsertChild(const std::shared_ptr &child, int32_t index) + { + if (index >= children_.size()) { + AddChild(child); + } else { + auto iter = children_.begin(); + std::advance(iter, index); + children_.insert(iter, child); + OnInsertChild(child, index); + } + } + + void InsertChildBefore(const std::shared_ptr &child, + const std::shared_ptr &slibing) + { + auto it = std::find(children_.begin(), children_.end(), slibing); + if (it != children_.end()) { + children_.insert(it, child); + } + OnInsertChildBefore(child, slibing); + } + + void InsertChildAfter(const std::shared_ptr &child, + const std::shared_ptr &slibing) + { + auto it = std::find(children_.begin(), children_.end(), slibing); + if (it != children_.end()) { + children_.insert(std::next(it), child); + } + OnInsertChildAfter(child, slibing); + } + + void RemoveAllChild() + { + for (auto it = children_.begin(); it != children_.end();) { + RemoveChild(*it); + } + OnRemoveAllChild(); + } + ArkUI_NodeHandle (*getChildAt)(ArkUI_NodeHandle node, int32_t position); + ArkUI_NodeHandle (*getFirstChild)(ArkUI_NodeHandle node); + ArkUI_NodeHandle (*getLastChild)(ArkUI_NodeHandle node); + ArkUI_NodeHandle (*getPreviousSibling)(ArkUI_NodeHandle node); + ArkUI_NodeHandle (*getNextSibling)(ArkUI_NodeHandle node); + + // 以下方法不可跨过ContentSlot。获取nodeHandle后可根据nativeEntry保存的节点map,做对应查找。 + ArkUI_NodeHandle GetParent() const { return nativeModule_->getParent(handle_); } + ArkUI_NodeHandle GetChildAt(uint32_t index) const { return nativeModule_->getChildAt(handle_, index); } + ArkUI_NodeHandle GetFirstChild() const { return nativeModule_->getFirstChild(handle_); } + ArkUI_NodeHandle GetLastChild() const { return nativeModule_->getLastChild(handle_); } + ArkUI_NodeHandle GetPreviousSibling() const { return nativeModule_->getPreviousSibling(handle_); } + ArkUI_NodeHandle GetNextSibling() const { return nativeModule_->getNextSibling(handle_); } + + // 以下方法可以跨过ContentSlot。 + ArkUI_NodeHandle GetParentInPageTree() const { return OH_ArkUI_NodeUtils_GetParentInPageTree(handle_); } + + ArkUI_NodeHandle GetCurrentPageRootNode() const { return OH_ArkUI_NodeUtils_GetCurrentPageRootNode(handle_); } + + ArkUI_NodeHandle GetActiveChildrenByIndex(uint32_t index) const + { + ArkUI_ActiveChildrenInfo *childrenInfo; + OH_ArkUI_NodeUtils_GetActiveChildrenInfo(handle_, &childrenInfo); + auto count = OH_ArkUI_ActiveChildrenInfo_GetCount(childrenInfo); + ArkUI_NodeHandle child; + if (index < count) { + child = OH_ArkUI_ActiveChildrenInfo_GetNodeByIndex(childrenInfo, index); + } + OH_ArkUI_ActiveChildrenInfo_Destroy(childrenInfo); + return child; + } + + // 通知节点从布局到绘制全部标脏,实际使用可根据业务需要选择其中具体需要执行的内容,提升性能。 + void MarkDirty() + { + nativeModule_->markDirty(handle_, NODE_NEED_MEASURE); + nativeModule_->markDirty(handle_, NODE_NEED_LAYOUT); + nativeModule_->markDirty(handle_, NODE_NEED_RENDER); + } + + // 对单一节点设置单位。 + void SetLengthMetricUnit(ArkUI_LengthMetricUnit unit) { nativeModule_->setLengthMetricUnit(handle_, unit); } + + // 设置及获取自定义属性。 + void AddCustomProperty(const char *name, const char *value) + { + OH_ArkUI_NodeUtils_AddCustomProperty(handle_, name, value); + } + + void RemoveCustomProperty(const char *name) { OH_ArkUI_NodeUtils_RemoveCustomProperty(handle_, name); } + + const char *GetCustomProperty(const char *name) + { + ArkUI_CustomProperty *property; + OH_ArkUI_NodeUtils_GetCustomProperty(handle_, name, &property); + auto value = OH_ArkUI_CustomProperty_GetStringValue(property); + OH_ArkUI_CustomProperty_Destroy(property); + return value; + } + + ArkUI_NodeHandle GetHandle() const { return handle_; } + + protected: + // 针对父容器子类需要重载下面的函数,实现组件挂载和卸载。 + virtual void OnAddChild(const std::shared_ptr &child) {} + virtual void OnRemoveChild(const std::shared_ptr &child) {} + virtual void OnRemoveAllChild() {} + virtual void OnInsertChild(const std::shared_ptr &child, int32_t index) {} + virtual void OnInsertChildBefore(const std::shared_ptr &child, + const std::shared_ptr &slibing) {} + virtual void OnInsertChildAfter(const std::shared_ptr &child, + const std::shared_ptr &slibing) {} + + ArkUI_NodeHandle handle_; + ArkUI_NativeNodeAPI_1 *nativeModule_ = nullptr; + + private: + std::list> children_; + }; +} // namespace NativeModule + +#endif // MYAPPLICATION_ARKUIBASENODE_H \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/ArkUINode.h b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/ArkUINode.h new file mode 100644 index 00000000000..45e52a61fed --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/ArkUINode.h @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2025 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. + */ + +#ifndef NDKNODEQUERYOPERATE_ARKUINODE_H +#define NDKNODEQUERYOPERATE_ARKUINODE_H + +#include "ArkUIBaseNode.h" +#include "NativeModule.h" +#include +#include + +namespace NativeModule { + +class ArkUINode : public ArkUIBaseNode { +public: + explicit ArkUINode(ArkUI_NodeHandle handle) : ArkUIBaseNode(handle) {} + + ~ArkUINode() override {} + + // NDK相关通用属性调用封装 + void SetWidth(float width) + { + ArkUI_NumberValue value[] = {{.f32 = width}}; + ArkUI_AttributeItem item = {value, 1}; + nativeModule_->setAttribute(handle_, NODE_WIDTH, &item); + } + void SetPercentWidth(float percent) + { + ArkUI_NumberValue value[] = {{.f32 = percent}}; + ArkUI_AttributeItem item = {value, 1}; + nativeModule_->setAttribute(handle_, NODE_WIDTH_PERCENT, &item); + } + void SetHeight(float height) + { + ArkUI_NumberValue value[] = {{.f32 = height}}; + ArkUI_AttributeItem item = {value, 1}; + nativeModule_->setAttribute(handle_, NODE_HEIGHT, &item); + } + void SetPercentHeight(float percent) + { + ArkUI_NumberValue value[] = {{.f32 = percent}}; + ArkUI_AttributeItem item = {value, 1}; + nativeModule_->setAttribute(handle_, NODE_HEIGHT_PERCENT, &item); + } + void SetBackgroundColor(uint32_t color) + { + ArkUI_NumberValue value[] = {{.u32 = color}}; + ArkUI_AttributeItem item = {value, 1}; + nativeModule_->setAttribute(handle_, NODE_BACKGROUND_COLOR, &item); + } + +protected: + // 组件树操作的实现类对接。 + void OnAddChild(const std::shared_ptr &child) override + { + nativeModule_->addChild(handle_, child->GetHandle()); + } + void OnRemoveChild(const std::shared_ptr &child) override + { + nativeModule_->removeChild(handle_, child->GetHandle()); + } + void OnInsertChild(const std::shared_ptr &child, int32_t index) override + { + nativeModule_->insertChildAt(handle_, child->GetHandle(), index); + } +}; +} // namespace NativeModule + +#endif //NDKNODEQUERYOPERATE_ARKUINODE_H diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/Attribute_util.h b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/Attribute_util.h new file mode 100644 index 00000000000..35afd281d3c --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/Attribute_util.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start ndknodequeryoperate7_start] +#ifndef MYAPPLICATION_ATTRIBUTE_UTIL_H +#define MYAPPLICATION_ATTRIBUTE_UTIL_H + +#include +#include +#include +class AttributeUtil { +public: + ArkUI_NativeNodeAPI_1 *api_; + ArkUI_NodeHandle node_; + AttributeUtil(ArkUI_NodeHandle node, ArkUI_NativeNodeAPI_1 *api) + { + this->node_ = node; + api_ = api; + } + int32_t Width(float width) + { + ArkUI_NumberValue NODE_WIDTH_value[] = {width}; + ArkUI_AttributeItem NODE_WIDTH_Item = {NODE_WIDTH_value, 1}; + return api_->setAttribute(node_, NODE_WIDTH, &NODE_WIDTH_Item); + } + int32_t Height(float height) + { + ArkUI_NumberValue NODE_HEIGHT_value[] = {height}; + ArkUI_AttributeItem NODE_HEIGHT_Item = {NODE_HEIGHT_value, 1}; + return api_->setAttribute(node_, NODE_HEIGHT, &NODE_HEIGHT_Item); + } + int32_t ImageSrc(std::string src) + { + ArkUI_AttributeItem NODE_IAMGE_SRC_VALUE = {.string = src.c_str()}; + return api_->setAttribute(node_, NODE_IMAGE_SRC, &NODE_IAMGE_SRC_VALUE); + } + int32_t ImageSyncLoad() + { + ArkUI_NumberValue NODE_TRANSLATE_ITEM_VALUE[] = {{.i32 = 1}}; + ArkUI_AttributeItem NODE_BORDER_WIDTH_ITEM = {NODE_TRANSLATE_ITEM_VALUE, 1}; + return api_->setAttribute(node_, NODE_IMAGE_SYNC_LOAD, &NODE_BORDER_WIDTH_ITEM); + } +}; +#endif // MYAPPLICATION_ATTRIBUTE_UTIL_H +// [End ndknodequeryoperate7_start] diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/CMakeLists.txt b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/CMakeLists.txt new file mode 100644 index 00000000000..796a07af583 --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/CMakeLists.txt @@ -0,0 +1,17 @@ +# the minimum version of CMake. +cmake_minimum_required(VERSION 3.5.0) +project(NdkNodeQueryOperate) + +set(NATIVERENDER_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR}) + +if(DEFINED PACKAGE_FIND_FILE) + include(${PACKAGE_FIND_FILE}) +endif() + +include_directories(${NATIVERENDER_ROOT_PATH} + ${NATIVERENDER_ROOT_PATH}/include) + +add_library(entry SHARED napi_init.cpp NativeEntry.cpp InquireUniqueId.cpp ShowSubcomponentInfo.h) + +target_link_libraries(entry PUBLIC libace_napi.z.so libace_ndk.z.so hilog_ndk.z.so) +target_link_libraries(entry PUBLIC libnative_drawing.so) \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/GetNodeByIdExample.h b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/GetNodeByIdExample.h new file mode 100644 index 00000000000..720d4b4b1b1 --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/GetNodeByIdExample.h @@ -0,0 +1,123 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start ndknodequeryoperate3_start] +// GetNodeByIdExample.h +#ifndef MYAPPLICATION_GETNODEBYID_H +#define MYAPPLICATION_GETNODEBYID_H + +#include "ArkUINode.h" +#include + +namespace NativeModule { + +std::shared_ptr CreateGetNodeByIdExample() +{ + auto nodeAPI = NativeModuleInstance::GetInstance()->GetNativeNodeAPI(); + + // 创建传入事件节点结构体 + struct A { + ArkUI_NodeHandle node; + }; + A* a = new A; + + // 创建根节点Scroll + ArkUI_NodeHandle scroll = nodeAPI->createNode(ARKUI_NODE_SCROLL); + ArkUI_NumberValue length_value[] = {{.f32 = 480}}; + ArkUI_AttributeItem length_item = {length_value, sizeof(length_value) / sizeof(ArkUI_NumberValue)}; + nodeAPI->setAttribute(scroll, NODE_WIDTH, &length_item); + ArkUI_NumberValue length_value1[] = {{.f32 = 650}}; + ArkUI_AttributeItem length_item1 = {length_value1, sizeof(length_value1) / sizeof(ArkUI_NumberValue)}; + nodeAPI->setAttribute(scroll, NODE_HEIGHT, &length_item1); + ArkUI_AttributeItem scroll_id = {.string = "Scroll_CAPI"}; + nodeAPI->setAttribute(scroll, NODE_ID, &scroll_id); + + // 创建Column + ArkUI_NodeHandle column = nodeAPI->createNode(ARKUI_NODE_COLUMN); + ArkUI_NumberValue value[] = {480}; + ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)}; + nodeAPI->setAttribute(column, NODE_WIDTH, &item); + ArkUI_NumberValue column_bc[] = {{.u32 = 0xFFF00BB}}; + ArkUI_AttributeItem column_item = {column_bc, 1}; + nodeAPI->setAttribute(column, NODE_BACKGROUND_COLOR, &column_item); + ArkUI_AttributeItem column_id = {.string = "Column_CAPI"}; + nodeAPI->setAttribute(column, NODE_ID, &column_id); + + // 创建Text + ArkUI_NodeHandle text0 = nodeAPI->createNode(ARKUI_NODE_TEXT); + ArkUI_NumberValue text_width[] = {300}; + ArkUI_AttributeItem text_item0 = {text_width, sizeof(text_width) / sizeof(ArkUI_NumberValue)}; + nodeAPI->setAttribute(text0, NODE_WIDTH, &text_item0); + ArkUI_NumberValue text_height[] = {50}; + ArkUI_AttributeItem text_item1 = {text_height, sizeof(text_height) / sizeof(ArkUI_NumberValue)}; + nodeAPI->setAttribute(text0, NODE_HEIGHT, &text_item1); + ArkUI_AttributeItem text_item = {.string = "示例Text节点"}; + nodeAPI->setAttribute(text0, NODE_TEXT_CONTENT, &text_item); + ArkUI_NumberValue margin[] = {10}; + ArkUI_AttributeItem item_margin = {margin, sizeof(margin) / sizeof(ArkUI_NumberValue)}; + nodeAPI->setAttribute(text0, NODE_MARGIN, &item_margin); + ArkUI_AttributeItem text0_id = {.string = "Text0_CAPI"}; + nodeAPI->setAttribute(text0, NODE_ID, &text0_id); + a->node = text0; + + // 创建Row + ArkUI_NodeHandle row0 = nodeAPI->createNode(ARKUI_NODE_ROW); + ArkUI_NumberValue width_value[] = {{.f32=330}}; + ArkUI_AttributeItem width_item = {width_value, sizeof(width_value) / sizeof(ArkUI_NumberValue)}; + nodeAPI->setAttribute(row0, NODE_WIDTH, &width_item); + nodeAPI->setAttribute(row0, NODE_HEIGHT, &text_item1); + nodeAPI->setAttribute(row0, NODE_MARGIN, &item_margin); + + // 创建Button + ArkUI_NodeHandle bt0 = nodeAPI->createNode(ARKUI_NODE_BUTTON); + ArkUI_NumberValue btn_width[] = {150}; + ArkUI_AttributeItem btn_item0 = {btn_width, sizeof(btn_width) / sizeof(ArkUI_NumberValue)}; + nodeAPI->setAttribute(bt0, NODE_WIDTH, &btn_item0); + nodeAPI->setAttribute(bt0, NODE_HEIGHT, &text_item1); + nodeAPI->setAttribute(bt0, NODE_MARGIN, &item_margin); + ArkUI_AttributeItem bt0_item = {.string = "GetAttachedNodeHandleById"}; + nodeAPI->setAttribute(bt0, NODE_BUTTON_LABEL, &bt0_item); + nodeAPI->registerNodeEvent(bt0, NODE_ON_CLICK, 0, a); + + // 注册事件 + auto onClick = [](ArkUI_NodeEvent *event) { + ArkUI_NodeHandle node = OH_ArkUI_NodeEvent_GetNodeHandle(event); + auto nodeAPI = NativeModuleInstance::GetInstance()->GetNativeNodeAPI(); + + if (OH_ArkUI_NodeEvent_GetTargetId(event) == 0) { // GetAttachedNodeHandleById + A* a = (A*)OH_ArkUI_NodeEvent_GetUserData(event); + ArkUI_NodeHandle node = nullptr; + auto res = OH_ArkUI_NodeUtils_GetAttachedNodeHandleById("Text0_CAPI", &node); + if (node == a->node) { + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "GetNodeByIdExample", "get Text0_CAPI success"); + } else { + OH_LOG_Print(LOG_APP, LOG_ERROR, 0xFF00, "GetNodeByIdExample", "get Text0_CAPI failed"); + } + } + }; + nodeAPI->registerNodeEventReceiver(onClick); + + // 节点添加 + nodeAPI->addChild(scroll, column); + nodeAPI->addChild(column, text0); + nodeAPI->addChild(column, row0); + nodeAPI->addChild(row0, bt0); + + return std::make_shared(scroll); +} +} // namespace NativeModule + +#endif //MYAPPLICATION_GETNODEBYID_H +// [End ndknodequeryoperate3_start] diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/InquireUniqueId.cpp b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/InquireUniqueId.cpp new file mode 100644 index 00000000000..25cb90a16fd --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/InquireUniqueId.cpp @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2025 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. + */ + +#include "InquireUniqueId.h" +#include "NativeModule.h" + +#include +#include +#include + +namespace NativeModule { +const unsigned int VALUE_1 = 480; +const unsigned int VALUE_2 = 300; +const unsigned int VALUE_3 = 50; + std::shared_ptr InquireUniqueId::GetNodeUniqueId() + { + // [Start ndknodequeryoperate1_start] + ArkUI_NativeNodeAPI_1* nodeAPI = NativeModuleInstance::GetInstance()->GetNativeNodeAPI(); + ArkUI_NodeHandle testNode = nodeAPI->createNode(ARKUI_NODE_COLUMN); + ArkUI_NumberValue value[] = {VALUE_1}; + ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)}; + value[0].f32 = VALUE_2; + nodeAPI->setAttribute(testNode, NODE_WIDTH, &item); + nodeAPI->setAttribute(testNode, NODE_HEIGHT, &item); + struct IdList { + int32_t id = -1; + }; + IdList *idl = new IdList; + int32_t uid = -1; + OH_ArkUI_NodeUtils_GetNodeUniqueId(testNode, &uid); + idl->id = uid; + auto button = nodeAPI->createNode(ARKUI_NODE_BUTTON); + value[0].f32 = VALUE_3; + nodeAPI->setAttribute(button, NODE_WIDTH, &item); + nodeAPI->setAttribute(button, NODE_HEIGHT, &item); + nodeAPI->addChild(testNode, button); + nodeAPI->registerNodeEvent(button, NODE_ON_CLICK, 1, idl); + OH_LOG_Print(LOG_APP, LOG_WARN, LOG_PRINT, "GetNodeUniqueId", "GetNodeHandleByUniqueId success1"); + nodeAPI->registerNodeEventReceiver([](ArkUI_NodeEvent *event) { + auto targetId = OH_ArkUI_NodeEvent_GetTargetId(event); + if (targetId == 1) { + auto idl = (IdList *)OH_ArkUI_NodeEvent_GetUserData(event); + ArkUI_NodeHandle Test_Column; + auto ec = OH_ArkUI_NodeUtils_GetNodeHandleByUniqueId(idl->id, &Test_Column); + if (ec == 0) { + OH_LOG_Print(LOG_APP, LOG_WARN, LOG_PRINT, "GetNodeUniqueId", "GetNodeHandleByUniqueId success"); + } + } + }); + // [End ndknodequeryoperate1_start] + return std::make_shared(testNode); + } +} diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/InquireUniqueId.h b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/InquireUniqueId.h new file mode 100644 index 00000000000..de2bef62eff --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/InquireUniqueId.h @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2025 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. + */ + +#ifndef NDKNODEQUERYOPERATE_INQUIREUNIQUEID_H +#define NDKNODEQUERYOPERATE_INQUIREUNIQUEID_H + +#include "ArkUINode.h" + + +namespace NativeModule { + +const unsigned int LOG_PRINT = 0xFF00; + +class InquireUniqueId { +public: + InquireUniqueId(){}; + ~InquireUniqueId(){}; + static std::shared_ptr GetNodeUniqueId(); +}; +} +#endif //NDKNODEQUERYOPERATE_INQUIREUNIQUEID_H diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/MoveToExample.h b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/MoveToExample.h new file mode 100644 index 00000000000..39b4d8186e5 --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/MoveToExample.h @@ -0,0 +1,160 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start ndknodequeryoperate5_start] +// MoveToExample.h +#ifndef MYAPPLICATION_MOVETO_H +#define MYAPPLICATION_MOVETO_H + +#include "ArkUINode.h" +#include + +namespace NativeModule { + +std::shared_ptr CreateMoveToExample() +{ + auto nodeAPI = NativeModuleInstance::GetInstance()->GetNativeNodeAPI(); + + // 创建传入事件节点结构体 + struct A { + ArkUI_NodeHandle node; + ArkUI_NodeHandle targetParent; + }; + A* a = new A; + + // 创建根节点Scroll + ArkUI_NodeHandle scroll = nodeAPI->createNode(ARKUI_NODE_SCROLL); + ArkUI_NumberValue length_value[] = {{.f32 = 480}}; + ArkUI_AttributeItem length_item = {length_value, sizeof(length_value) / sizeof(ArkUI_NumberValue)}; + nodeAPI->setAttribute(scroll, NODE_WIDTH, &length_item); + ArkUI_NumberValue length_value1[] = {{.f32 = 650}}; + ArkUI_AttributeItem length_item1 = {length_value1, sizeof(length_value1) / sizeof(ArkUI_NumberValue)}; + nodeAPI->setAttribute(scroll, NODE_HEIGHT, &length_item1); + ArkUI_AttributeItem scroll_id = {.string = "Scroll_CAPI"}; + nodeAPI->setAttribute(scroll, NODE_ID, &scroll_id); + + // 创建Column + ArkUI_NodeHandle column = nodeAPI->createNode(ARKUI_NODE_COLUMN); + ArkUI_NumberValue value[] = {480}; + ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)}; + nodeAPI->setAttribute(column, NODE_WIDTH, &item); + ArkUI_AttributeItem column_id = {.string = "Column_CAPI"}; + nodeAPI->setAttribute(column, NODE_ID, &column_id); + + // 创建Row + ArkUI_NumberValue text_height[] = {50}; + ArkUI_AttributeItem text_item1 = {text_height, sizeof(text_height) / sizeof(ArkUI_NumberValue)}; + ArkUI_NumberValue margin[] = {10}; + ArkUI_AttributeItem item_margin = {margin, sizeof(margin) / sizeof(ArkUI_NumberValue)}; + ArkUI_NodeHandle row0 = nodeAPI->createNode(ARKUI_NODE_ROW); + ArkUI_NumberValue width_value[] = {{.f32=330}}; + ArkUI_AttributeItem width_item = {width_value, sizeof(width_value) / sizeof(ArkUI_NumberValue)}; + nodeAPI->setAttribute(row0, NODE_WIDTH, &width_item); + nodeAPI->setAttribute(row0, NODE_HEIGHT, &text_item1); + nodeAPI->setAttribute(row0, NODE_MARGIN, &item_margin); + + ArkUI_NodeHandle row1 = nodeAPI->createNode(ARKUI_NODE_ROW); + nodeAPI->setAttribute(row1, NODE_WIDTH, &width_item); + nodeAPI->setAttribute(row1, NODE_HEIGHT, &text_item1); + nodeAPI->setAttribute(row1, NODE_MARGIN, &item_margin); + a->targetParent = row1; + + ArkUI_NodeHandle row2 = nodeAPI->createNode(ARKUI_NODE_ROW); + nodeAPI->setAttribute(row2, NODE_WIDTH, &width_item); + nodeAPI->setAttribute(row2, NODE_HEIGHT, &text_item1); + nodeAPI->setAttribute(row2, NODE_MARGIN, &item_margin); + + // 创建Stack + ArkUI_NodeHandle stack0 = nodeAPI->createNode(ARKUI_NODE_STACK); + ArkUI_NumberValue stack_value[] = {{.f32=50}}; + ArkUI_AttributeItem stack_item1 = {stack_value, sizeof(width_value) / sizeof(ArkUI_NumberValue)}; + nodeAPI->setAttribute(stack0, NODE_WIDTH, &stack_item1); + nodeAPI->setAttribute(stack0, NODE_HEIGHT, &stack_item1); + ArkUI_NumberValue stack_bc[] = {{.u32 = 0xFFFFB6C1}}; + ArkUI_AttributeItem stack_item2 = {stack_bc, 1}; + nodeAPI->setAttribute(stack0, NODE_BACKGROUND_COLOR, &stack_item2); + a->node = stack0; + + ArkUI_NodeHandle stack1 = nodeAPI->createNode(ARKUI_NODE_STACK); + nodeAPI->setAttribute(stack1, NODE_WIDTH, &stack_item1); + nodeAPI->setAttribute(stack1, NODE_HEIGHT, &stack_item1); + ArkUI_NumberValue stack_bc1[] = {{.u32 = 0xFF6495ED}}; + ArkUI_AttributeItem stack_item3 = {stack_bc1, 1}; + nodeAPI->setAttribute(stack1, NODE_BACKGROUND_COLOR, &stack_item3); + + ArkUI_NodeHandle stack2 = nodeAPI->createNode(ARKUI_NODE_STACK); + nodeAPI->setAttribute(stack2, NODE_WIDTH, &stack_item1); + nodeAPI->setAttribute(stack2, NODE_HEIGHT, &stack_item1); + ArkUI_NumberValue stack_bc2[] = {{.u32 = 0xFF90EE90}}; + ArkUI_AttributeItem stack_item4 = {stack_bc2, 1}; + nodeAPI->setAttribute(stack2, NODE_BACKGROUND_COLOR, &stack_item4); + + ArkUI_NodeHandle stack3 = nodeAPI->createNode(ARKUI_NODE_STACK); + nodeAPI->setAttribute(stack3, NODE_WIDTH, &stack_item1); + nodeAPI->setAttribute(stack3, NODE_HEIGHT, &stack_item1); + nodeAPI->setAttribute(stack3, NODE_BACKGROUND_COLOR, &stack_item2); + + ArkUI_NodeHandle stack4 = nodeAPI->createNode(ARKUI_NODE_STACK); + nodeAPI->setAttribute(stack4, NODE_WIDTH, &stack_item1); + nodeAPI->setAttribute(stack4, NODE_HEIGHT, &stack_item1); + nodeAPI->setAttribute(stack4, NODE_BACKGROUND_COLOR, &stack_item3); + + ArkUI_NodeHandle stack5 = nodeAPI->createNode(ARKUI_NODE_STACK); + nodeAPI->setAttribute(stack5, NODE_WIDTH, &stack_item1); + nodeAPI->setAttribute(stack5, NODE_HEIGHT, &stack_item1); + nodeAPI->setAttribute(stack5, NODE_BACKGROUND_COLOR, &stack_item4); + + // 创建Button + ArkUI_NodeHandle bt0 = nodeAPI->createNode(ARKUI_NODE_BUTTON); + ArkUI_NumberValue btn_width[] = {150}; + ArkUI_AttributeItem btn_item0 = {btn_width, sizeof(btn_width) / sizeof(ArkUI_NumberValue)}; + nodeAPI->setAttribute(bt0, NODE_WIDTH, &btn_item0); + nodeAPI->setAttribute(bt0, NODE_HEIGHT, &text_item1); + nodeAPI->setAttribute(bt0, NODE_MARGIN, &item_margin); + ArkUI_AttributeItem bt0_item = {.string = "MoveTo"}; + nodeAPI->setAttribute(bt0, NODE_BUTTON_LABEL, &bt0_item); + nodeAPI->registerNodeEvent(bt0, NODE_ON_CLICK, 0, a); + + // 注册事件 + auto onClick = [](ArkUI_NodeEvent *event) { + ArkUI_NodeHandle node = OH_ArkUI_NodeEvent_GetNodeHandle(event); + auto nodeAPI = NativeModuleInstance::GetInstance()->GetNativeNodeAPI(); + + if (OH_ArkUI_NodeEvent_GetTargetId(event) == 0) { // MoveTo + A* a = (A*)OH_ArkUI_NodeEvent_GetUserData(event); + auto res = OH_ArkUI_NodeUtils_MoveTo(a->node, a->targetParent, 2); + } + }; + nodeAPI->registerNodeEventReceiver(onClick); + + // 节点添加 + nodeAPI->addChild(scroll, column); + nodeAPI->addChild(column, row0); + nodeAPI->addChild(column, row1); + nodeAPI->addChild(column, row2); + nodeAPI->addChild(row0, stack0); + nodeAPI->addChild(row0, stack1); + nodeAPI->addChild(row0, stack2); + nodeAPI->addChild(row1, stack3); + nodeAPI->addChild(row1, stack4); + nodeAPI->addChild(row1, stack5); + nodeAPI->addChild(row2, bt0); + + return std::make_shared(scroll); +} +} // namespace NativeModule + +#endif //MYAPPLICATION_MOVETO_H +// [End ndknodequeryoperate5_start] \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/NativeEntry.cpp b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/NativeEntry.cpp new file mode 100644 index 00000000000..dbbcad4afb4 --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/NativeEntry.cpp @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2025 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. + */ + + +#include +#include +#include +#include "InquireUniqueId.h" +#include "ShowSubcomponentInfo.h" + +// [Start ndknodequeryoperate3_start] +// NativeEntry.cpp +#include +#include +#include +#include "NativeEntry.h" +#include "MoveToExample.h" +#include "GetNodeByIdExample.h" + + +namespace NativeModule { +// [StartExclude ndknodequeryoperate3_start] +constexpr const char *K_LOG_DOMAIN = "NativeEntry"; + +template +// [EndExclude ndknodequeryoperate3_start] +static napi_value CreateNativeRoot(napi_env env, napi_callback_info info, const char *who, MakeNodeFn makeNodeFn) +{ + size_t argc = 1; + napi_value args[1] = {nullptr}; + + napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); + + // 获取NodeContent + ArkUI_NodeContentHandle contentHandle; + OH_ArkUI_GetNodeContentFromNapiValue(env, args[0], &contentHandle); + if (contentHandle == nullptr) { + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, K_LOG_DOMAIN, + "%{public}s nodeContentHandle is null", who); + return nullptr; + } + NativeEntry::GetInstance()->SetContentHandle(contentHandle); + + // 创建节点 + auto node = makeNodeFn(); + + // 保持Native侧对象到管理类中,维护生命周期。 + NativeEntry::GetInstance()->SetRootNode(node); + return nullptr; +} + +napi_value DestroyNativeRoot(napi_env env, napi_callback_info info) +{ + // 从管理类中释放Native侧对象。 + NativeEntry::GetInstance()->DisposeRootNode(); + return nullptr; +} +// [StartExclude ndknodequeryoperate3_start] +Manager Manager::manager_; +napi_value Manager::CreateInquireUniqueIdNode(napi_env env, napi_callback_info info) +{ + return CreateNativeRoot(env, info, "CreateInquireUniqueIdNode", + []() -> std::shared_ptr { return InquireUniqueId::GetNodeUniqueId(); }); +} + +napi_value Manager::CreateMoveToNode(napi_env env, napi_callback_info info) +{ + return CreateNativeRoot(env, info, "CreateMoveToNode", + []() -> std::shared_ptr { return CreateMoveToExample(); }); +} + +napi_value Manager::CreateUserIdNode(napi_env env, napi_callback_info info) +{ + return CreateNativeRoot(env, info, "CreateUserIdNode", + []() -> std::shared_ptr { return CreateGetNodeByIdExample(); }); +} + +napi_value Manager::ShowSubcomponentInfo(napi_env env, napi_callback_info info) +{ + return CreateNativeRoot(env, info, "CreateFetchAndLoadNode", + []() -> std::shared_ptr { return ::NativeModule::ShowSubcomponentInfo(); }); +} +// [EndExclude ndknodequeryoperate3_start] +} // namespace NativeModule +// [End ndknodequeryoperate3_start] + diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/NativeEntry.h b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/NativeEntry.h new file mode 100644 index 00000000000..5b3014d3b4b --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/NativeEntry.h @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2025 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. + */ + +#ifndef NDKNODEQUERYOPERATE_NATIVEENTRY_H +#define NDKNODEQUERYOPERATE_NATIVEENTRY_H + +#include "ArkUIBaseNode.h" +#include +#include +#include +#include +#include + +namespace NativeModule { +const unsigned int LOG_PRINT_DOMAIN = 0xFF00; + +napi_value DestroyNativeRoot(napi_env env, napi_callback_info info); + +// 管理Native组件的生命周期和内存。 +class NativeEntry { +public: + static NativeEntry *GetInstance() + { + static NativeEntry nativeEntry; + return &nativeEntry; + } + + void SetContentHandle(ArkUI_NodeContentHandle handle) + { + handle_ = handle; + } + + void SetRootNode(const std::shared_ptr &baseNode) + { + root_ = baseNode; + // 添加Native组件到NodeContent上用于挂载显示。 + OH_ArkUI_NodeContent_AddNode(handle_, root_->GetHandle()); + } + void DisposeRootNode() + { + // 从NodeContent上卸载组件并销毁Native组件。 + OH_ArkUI_NodeContent_RemoveNode(handle_, root_->GetHandle()); + root_.reset(); + } + +private: + std::shared_ptr root_; + ArkUI_NodeContentHandle handle_; +}; + +class Manager { +public: + static ArkUI_NativeNodeAPI_1 *nodeAPI_; + ~Manager(){}; + + static napi_value CreateInquireUniqueIdNode(napi_env env, napi_callback_info info); + static napi_value CreateMoveToNode(napi_env env, napi_callback_info info); + static napi_value CreateUserIdNode(napi_env env, napi_callback_info info); + static napi_value ShowSubcomponentInfo(napi_env env, napi_callback_info info); +private: + static Manager manager_; +}; + +} // namespace NativeModule + +#endif // NDKNODEQUERYOPERATE_NATIVEENTRY_H diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/NativeModule.h b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/NativeModule.h new file mode 100644 index 00000000000..7e6298653ac --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/NativeModule.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2025 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. + */ + +#ifndef NDKNODEQUERYOPERATE_NATIVEMODULE_H +#define NDKNODEQUERYOPERATE_NATIVEMODULE_H + +#include "napi/native_api.h" +#include +#include + +#include + +namespace NativeModule { + + class NativeModuleInstance { + public: + static NativeModuleInstance *GetInstance() + { + static NativeModuleInstance instance; + return &instance; + } + + NativeModuleInstance() + { + OH_ArkUI_GetModuleInterface(ARKUI_NATIVE_NODE, ArkUI_NativeNodeAPI_1, arkUINativeNodeApi_); + } + + ArkUI_NativeNodeAPI_1 *GetNativeNodeAPI() { return arkUINativeNodeApi_; } + + private: + ArkUI_NativeNodeAPI_1 *arkUINativeNodeApi_ = nullptr; + }; + +} // namespace NativeModule + +#endif // NDKNODEQUERYOPERATE_NATIVEMODULE_H \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/ShowSubcomponentInfo.h b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/ShowSubcomponentInfo.h new file mode 100644 index 00000000000..f837abc6ea7 --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/ShowSubcomponentInfo.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2025 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. + */ + +#ifndef NDKNODEQUERYOPERATE_SHOWSUBCOMPONENTINFO_H +#define NDKNODEQUERYOPERATE_SHOWSUBCOMPONENTINFO_H + +#include +#include +#include +#include "ArkUINode.h" + +#define LOG_TAG "ShowSubcomponentInfo" +#define LOG_INFO(...) OH_LOG_Print(LOG_APP, LOG_INFO, 0xD001400, LOG_TAG, __VA_ARGS__) + +namespace NativeModule { +std::shared_ptr ShowSubcomponentInfo() +{ + // [Start ndknodequeryoperate9_start] + ArkUI_NodeHandle childNode = nullptr; + OH_ArkUI_NodeUtils_GetAttachedNodeHandleById("N3", &childNode); + + uint32_t index = 0; + OH_ArkUI_NodeUtils_GetFirstChildIndexWithoutExpand(childNode, &index); + uint32_t index1 = 0; + OH_ArkUI_NodeUtils_GetLastChildIndexWithoutExpand(childNode, &index1); + ArkUI_NodeHandle child = nullptr; + auto result = OH_ArkUI_NodeUtils_GetChildWithExpandMode(childNode, 3, &child, 0); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", + "firstChildIndex - lastChildIndex == %{d -- %{public}d, -- getResult = %{public}d", + index, index1, result); + // [End ndknodequeryoperate9_start] + return nullptr; +} +} +#endif //NDKNODEQUERYOPERATE_SHOWSUBCOMPONENTINFO_H diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/napi_init.cpp b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/napi_init.cpp new file mode 100644 index 00000000000..78f0a994989 --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/napi_init.cpp @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2025 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. + */ + + +#include "NativeEntry.h" +// [Start ndknodequeryoperate7_start] +#include "Attribute_util.h" +#include "napi/native_api.h" +#include +#include +#include +#include +#include +#include +// [StartExclude ndknodequeryoperate7_start] +using namespace NativeModule; + +const unsigned int NUMBER_2 = 2; +const unsigned int NUMBER_WIDTH = 100; +const unsigned int NUMBER_HEIGHT = 100; +// [EndExclude ndknodequeryoperate7_start] +static napi_value Add(napi_env env, napi_callback_info info) +{ + size_t argc = NUMBER_2; + napi_value args[NUMBER_2] = {nullptr}; + + napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); + + napi_valuetype valuetype0; + napi_typeof(env, args[0], &valuetype0); + + napi_valuetype valuetype1; + napi_typeof(env, args[1], &valuetype1); + + double value0; + napi_get_value_double(env, args[0], &value0); + + double value1; + napi_get_value_double(env, args[1], &value1); + + napi_value sum; + napi_create_double(env, value0 + value1, &sum); + + return sum; +} + +static ArkUI_NativeNodeAPI_1 *nodeAPI = nullptr; + +static napi_value NAPI_Global_createNativeNode(napi_env env, napi_callback_info info) +{ + size_t argc = 1; + napi_value args[1] = {nullptr}; + napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); + ArkUI_NodeContentHandle contentHandle; + OH_ArkUI_GetNodeContentFromNapiValue(env, args[0], &contentHandle); + OH_ArkUI_GetModuleInterface(ARKUI_NATIVE_NODE, ArkUI_NativeNodeAPI_1, nodeAPI); + // 创建Image组件 + auto imageNode = nodeAPI->createNode(ARKUI_NODE_IMAGE); + AttributeUtil imageNodeAttr(imageNode, nodeAPI); + // 设置image组件属性 + imageNodeAttr.ImageSrc("resources/base/media/startIcon.png"); + imageNodeAttr.ImageSyncLoad(); + imageNodeAttr.Width(NUMBER_WIDTH); + imageNodeAttr.Height(NUMBER_HEIGHT); + // 在当前即时帧触发节点属性更新 + OH_ArkUI_NativeModule_InvalidateAttributes(imageNode); + // 挂载image组件到组件树 + OH_ArkUI_NodeContent_AddNode(contentHandle, imageNode); + return nullptr; +} + +EXTERN_C_START +static napi_value Init(napi_env env, napi_value exports) +{ + napi_property_descriptor desc[] = { + {"add", nullptr, Add, nullptr, nullptr, nullptr, napi_default, nullptr}, + {"createNativeNode", nullptr, NAPI_Global_createNativeNode, nullptr, nullptr, nullptr, napi_default, nullptr}, + // [StartExclude ndknodequeryoperate7_start] + {"createInquireUniqueIdNode", nullptr, Manager::CreateInquireUniqueIdNode, nullptr, nullptr, nullptr, + napi_default, nullptr}, + {"createMoveToNode", nullptr, Manager::CreateMoveToNode, nullptr, nullptr, nullptr, + napi_default, nullptr}, + {"createUserIdNode", nullptr, Manager::CreateUserIdNode, nullptr, nullptr, nullptr, + napi_default, nullptr}, + {"showSubcomponentInfo", nullptr, Manager::ShowSubcomponentInfo, nullptr, nullptr, nullptr, + napi_default, nullptr}, + {"destroyNativeRoot", nullptr, NativeModule::DestroyNativeRoot, nullptr, nullptr, nullptr, + napi_default, nullptr} + // [EndExclude ndknodequeryoperate7_start] + }; + napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc); + return exports; +} +EXTERN_C_END + +static napi_module demoModule = { + .nm_version = 1, + .nm_flags = 0, + .nm_filename = nullptr, + .nm_register_func = Init, + .nm_modname = "entry", + .nm_priv = ((void*)0), + .reserved = { 0 }, +}; + +extern "C" __attribute__((constructor)) void RegisterEntryModule(void) +{ + napi_module_register(&demoModule); +} +// [End ndknodequeryoperate7_start] \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/types/libentry/Index.d.ts b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/types/libentry/Index.d.ts new file mode 100644 index 00000000000..e4d4dd802b9 --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/types/libentry/Index.d.ts @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2025 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. + */ + +export const createInquireUniqueIdNode: (content: Object) =>void; +export const createMoveToNode: (content: Object) =>void; +export const createUserIdNode: (content: Object) =>void; +export const showSubcomponentInfo: (content: Object) =>void; +export const createNativeNode: (content: Object) =>void; +export const destroyNativeRoot: () => void; \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/types/libentry/oh-package.json5 b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/types/libentry/oh-package.json5 new file mode 100644 index 00000000000..b81656fe96c --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/cpp/types/libentry/oh-package.json5 @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2025 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. + */ + +{ + "name": "libentry.so", + "types": "./Index.d.ts", + "version": "1.0.0", + "description": "Please describe the basic information." +} \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/entryability/EntryAbility.ets b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/entryability/EntryAbility.ets new file mode 100644 index 00000000000..5592b0500ad --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/entryability/EntryAbility.ets @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2025 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. + */ + +import { AbilityConstant, ConfigurationConstant, UIAbility, Want } from '@kit.AbilityKit'; +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { window } from '@kit.ArkUI'; + +const DOMAIN = 0x0000; + +export default class EntryAbility extends UIAbility { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { + try { + this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET); + } catch (err) { + hilog.error(DOMAIN, 'testTag', 'Failed to set colorMode. Cause: %{public}s', JSON.stringify(err)); + } + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onCreate'); + } + + onDestroy(): void { + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onDestroy'); + } + + onWindowStageCreate(windowStage: window.WindowStage): void { + // Main window is created, set main page for this ability + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onWindowStageCreate'); + + windowStage.loadContent('pages/Index', (err) => { + if (err.code) { + hilog.error(DOMAIN, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err)); + return; + } + hilog.info(DOMAIN, 'testTag', 'Succeeded in loading the content.'); + }); + } + + onWindowStageDestroy(): void { + // Main window is destroyed, release UI related resources + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onWindowStageDestroy'); + } + + onForeground(): void { + // Ability has brought to foreground + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onForeground'); + } + + onBackground(): void { + // Ability has back to background + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onBackground'); + } +} \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets new file mode 100644 index 00000000000..b37e4b57cd7 --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2025 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. + */ + +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { BackupExtensionAbility, BundleVersion } from '@kit.CoreFileKit'; + +const DOMAIN = 0x0000; + +export default class EntryBackupAbility extends BackupExtensionAbility { + async onBackup() { + hilog.info(DOMAIN, 'testTag', 'onBackup ok'); + await Promise.resolve(); + } + + async onRestore(bundleVersion: BundleVersion) { + hilog.info(DOMAIN, 'testTag', 'onRestore ok %{public}s', JSON.stringify(bundleVersion)); + await Promise.resolve(); + } +} \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/pages/Attribute.ets b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/pages/Attribute.ets new file mode 100644 index 00000000000..62fa5bbfe5b --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/pages/Attribute.ets @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start ndknodequeryoperate6_start] + +import testNapi from 'libentry.so'; +import { NodeContent } from '@kit.ArkUI'; + +@Component +struct ImageContent { + private nodeContent: NodeContent = new NodeContent(); + + aboutToAppear() { + // 通过C-API创建节点,并添加到管理器nodeContent上 + testNapi.createNativeNode(this.nodeContent); + } + build() { + Column() { + // 显示nodeContent管理器里存放的Native侧的组件 + ContentSlot(this.nodeContent) + } + } +} + +@Entry +@Component +struct Index { + @State message: string = 'Hello World'; + @State showParent: boolean = true; + build() { + Row() { + Column() { + // $r('app.string.Switch')需要替换为开发者所需的资源文件。 + Button($r('app.string.Switch')).onClick(()=>{ + this.showParent = !this.showParent; + }).margin(20) + if(this.showParent) { + ImageContent() + } else { + ImageContent() + } + } + .width('100%') + } + .height('100%') + } +} +// [End ndknodequeryoperate6_start] \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/pages/FetchAndLoad.ets b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/pages/FetchAndLoad.ets new file mode 100644 index 00000000000..f4afa65d797 --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/pages/FetchAndLoad.ets @@ -0,0 +1,285 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start ndknodequeryoperate8_start] +import { NodeController, FrameNode, UIContext, BuilderNode, ExpandMode, LengthUnit } from '@kit.ArkUI'; +import hilog from '@ohos.hilog'; +const TEST_TAG: string = 'FrameNode'; +const LOG_PRINT_DOMAIN: number = 0xFF00; +const PREFIX: string = '[Sample]' + +// BasicDataSource实现了IDataSource接口,用于管理listener监听,以及通知LazyForEach数据更新 +class BasicDataSource implements IDataSource { + private listeners: DataChangeListener[] = []; + private originDataArray: string[] = []; + + public totalCount(): number { + return 0; + } + + public getData(index: number): string { + return this.originDataArray[index]; + } + + // 该方法为框架侧调用,为LazyForEach组件向其数据源处添加listener监听 + registerDataChangeListener(listener: DataChangeListener): void { + if (this.listeners.indexOf(listener) < 0) { + hilog.info(LOG_PRINT_DOMAIN, PREFIX, 'add listener'); + this.listeners.push(listener); + } + } + + // 该方法为框架侧调用,为对应的LazyForEach组件在数据源处去除listener监听 + unregisterDataChangeListener(listener: DataChangeListener): void { + const pos = this.listeners.indexOf(listener); + if (pos >= 0) { + hilog.info(LOG_PRINT_DOMAIN, PREFIX, 'remove listener'); + this.listeners.splice(pos, 1); + } + } + + // 通知LazyForEach组件需要重载所有子组件 + notifyDataReload(): void { + this.listeners.forEach(listener => { + listener.onDataReloaded(); + }) + } + + // 通知LazyForEach组件需要在index对应索引处添加子组件 + notifyDataAdd(index: number): void { + this.listeners.forEach(listener => { + listener.onDataAdd(index); + // 写法2:listener.onDatasetChange([{type: DataOperationType.ADD, index: index}]); + }) + } + + // 通知LazyForEach组件在index对应索引处数据有变化,需要重建该子组件 + notifyDataChange(index: number): void { + this.listeners.forEach(listener => { + listener.onDataChange(index); + // 写法2:listener.onDatasetChange([{type: DataOperationType.CHANGE, index: index}]); + }) + } + + // 通知LazyForEach组件需要在index对应索引处删除该子组件 + notifyDataDelete(index: number): void { + this.listeners.forEach(listener => { + listener.onDataDelete(index); + // 写法2:listener.onDatasetChange([{type: DataOperationType.DELETE, index: index}]); + }) + } + + // 通知LazyForEach组件将from索引和to索引处的子组件进行交换 + notifyDataMove(from: number, to: number): void { + this.listeners.forEach(listener => { + listener.onDataMove(from, to); + // 写法2:listener.onDatasetChange( + // [{type: DataOperationType.EXCHANGE, index: {start: from, end: to}}]); + }) + } + + notifyDatasetChange(operations: DataOperation[]): void { + this.listeners.forEach(listener => { + listener.onDatasetChange(operations); + }) + } +} + +class MyDataSource extends BasicDataSource { + private dataArray: string[] = [] + + public totalCount(): number { + return this.dataArray.length; + } + + public getData(index: number): string { + return this.dataArray[index]; + } + + public addData(index: number, data: string): void { + this.dataArray.splice(index, 0, data); + this.notifyDataAdd(index); + } + + public pushData(data: string): void { + this.dataArray.push(data); + this.notifyDataAdd(this.dataArray.length - 1); + } +} + +class Params { + public data: MyDataSource | null = null; + public scroller: Scroller | null = null; + constructor(data: MyDataSource, scroller: Scroller) { + this.data = data; + this.scroller = scroller; + } +} + +@Builder +function buildData(params: Params) { + List({ scroller: params.scroller }) { + LazyForEach(params.data, (item: string) => { + ListItem() { + Column() { + Text(item) + .fontSize(20) + .onAppear(() => { + hilog.info(LOG_PRINT_DOMAIN, PREFIX, `$(TEST_TAG) + " node appear: %{public}s"`, item); + }) + .backgroundColor(Color.Pink) + .margin({ + top: 30, + bottom: 30, + left: 10, + right: 10 + }) + } + } + .id(item) + }, (item: string) => item) + } + .cachedCount(5) + .listDirection(Axis.Horizontal) +} + +class MyNodeController extends NodeController { + private rootNode: FrameNode | null = null; + private uiContext: UIContext | null = null; + private data: MyDataSource = new MyDataSource(); + private scroller: Scroller = new Scroller(); + + makeNode(uiContext: UIContext): FrameNode | null { + this.uiContext = uiContext; + for (let i = 0; i <= 20; i++) { + this.data.pushData(`N${i}`); + } + const params: Params = new Params(this.data, this.scroller); + const dataNode: BuilderNode<[Params]> = new BuilderNode(uiContext); + dataNode.build(wrapBuilder<[Params]>(buildData), params); + this.rootNode = dataNode.getFrameNode(); + const scrollToIndexOptions: ScrollToIndexOptions = { + extraOffset: { + value: 20, unit: LengthUnit.VP + } + }; + this.scroller.scrollToIndex(6, true, ScrollAlign.START, scrollToIndexOptions); + return this.rootNode; + } + + // 获取不展开场景下第一个活跃节点的下标 + getFirstChildIndexWithoutExpand() { + hilog.info(LOG_PRINT_DOMAIN, PREFIX, + `${TEST_TAG} getFirstChildIndexWithoutExpand: ${this.rootNode!.getFirstChildIndexWithoutExpand()}`); + } + + // 获取不展开场景下最后一个活跃节点的下标 + getLastChildIndexWithoutExpand() { + hilog.info(LOG_PRINT_DOMAIN, PREFIX, + `${TEST_TAG} getLastChildIndexWithoutExpand: ${this.rootNode!.getLastChildIndexWithoutExpand()}`); + } + + // 用不展开的方式获取节点 + getChildWithNotExpand() { + const childNode = this.rootNode!.getChild(3, ExpandMode.NOT_EXPAND); + hilog.info(LOG_PRINT_DOMAIN, PREFIX, + `${TEST_TAG} + " getChild(3, ExpandMode.NOT_EXPAND): %{public}s"`, childNode?.getId()); + if (childNode?.getId() === 'N9') { + hilog.info(LOG_PRINT_DOMAIN, PREFIX, + `${TEST_TAG} + " getChild(3, ExpandMode.NOT_EXPAND) result: success."`); + } else { + hilog.info(LOG_PRINT_DOMAIN, PREFIX, + `${TEST_TAG} + " getChild(3, ExpandMode.NOT_EXPAND) result: fail."`); + } + } + + // 以展开的方式获取节点 + getChildWithExpand() { + const childNode = this.rootNode!.getChild(3, ExpandMode.EXPAND); + hilog.info(LOG_PRINT_DOMAIN, PREFIX, + `${TEST_TAG} + " getChild(3, ExpandMode.EXPAND): %{public}s"`, childNode?.getId()); + if (childNode?.getId() === 'N3') { + hilog.info(LOG_PRINT_DOMAIN, PREFIX, `${TEST_TAG} + " getChild(3, ExpandMode.EXPAND) result: success."`); + } else { + hilog.info(LOG_PRINT_DOMAIN, PREFIX, `${TEST_TAG} + " getChild(3, ExpandMode.EXPAND) result: fail."`); + } + } + + getChildWithLazyExpand() { + const childNode = this.rootNode!.getChild(3, ExpandMode.LAZY_EXPAND); + hilog.info(LOG_PRINT_DOMAIN, PREFIX, + `${TEST_TAG} + " getChild(3, ExpandMode.EXPAND): %{public}s"`, childNode?.getId()); + if (childNode?.getId() === 'N3') { + hilog.info(LOG_PRINT_DOMAIN, PREFIX, `${TEST_TAG} + " getChild(3, ExpandMode.LAZY_EXPAND) result: success."`); + } else { + hilog.info(LOG_PRINT_DOMAIN, PREFIX, `${TEST_TAG} + " getChild(3, ExpandMode.LAZY_EXPAND) result: fail."`); + } + } +} + +@Entry +@Component +struct Index { + private myNodeController: MyNodeController = new MyNodeController(); + private scroller: Scroller = new Scroller(); + + build() { + Scroll(this.scroller) { + Column({ space: 8 }) { + Column() { + Text('This is a NodeContainer.') + .textAlign(TextAlign.Center) + .borderRadius(10) + .backgroundColor(0xFFFFFF) + .width('100%') + .fontSize(16) + NodeContainer(this.myNodeController) + .borderWidth(1) + .width(300) + .height(100) + } + + Button('getFirstChildIndexWithoutExpand') + .width(300) + .onClick(() => { + this.myNodeController.getFirstChildIndexWithoutExpand(); + }) + Button('getLastChildIndexWithoutExpand') + .width(300) + .onClick(() => { + this.myNodeController.getLastChildIndexWithoutExpand(); + }) + Button('getChildWithNotExpand') + .width(300) + .onClick(() => { + this.myNodeController.getChildWithNotExpand(); + }) + Button('getChildWithExpand') + .width(300) + .onClick(() => { + this.myNodeController.getChildWithExpand(); + }) + Button('getChildWithLazyExpand') + .width(300) + .onClick(() => { + this.myNodeController.getChildWithLazyExpand(); + }) + } + .width('100%') + } + .scrollable(ScrollDirection.Vertical) // 滚动方向纵向 + } +} +// [End ndknodequeryoperate8_start] \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/pages/GetNodeById.ets b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/pages/GetNodeById.ets new file mode 100644 index 00000000000..e29db362ba5 --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/pages/GetNodeById.ets @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start ndknodequeryoperate2_start] +import nativeNode from 'libentry.so'; +import { NodeContent } from '@kit.ArkUI'; + +@Entry +@Component +struct GetNodeById { + private rootSlot = new NodeContent(); + + aboutToAppear(): void { + nativeNode.createUserIdNode(this.rootSlot); + } + + build() { + Scroll() { + Column({ space: 15 }) { + Column() { + ContentSlot(this.rootSlot) + } + } + .width('100%') + }.scrollBarColor(Color.Transparent) + } +} +// [End ndknodequeryoperate2_start] \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/pages/Index.ets b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/pages/Index.ets new file mode 100644 index 00000000000..7436393d61d --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/pages/Index.ets @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2025 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. + */ + +import { router } from '@kit.ArkUI'; + +interface ListCategories { + title: string, + url: string, + id: string +} + +@Entry +@Component +struct MenuIndex { + private items: ListCategories[] = + [ + { title: 'InquireUniqueId', url: 'pages/InquireUniqueId', id: 'InquireUniqueId' }, + { title: 'Attribute', url: 'pages/Attribute', id: 'Attribute' }, + { title: 'MoveTo', url: 'pages/MoveTo', id: 'MoveTo' }, + { title: 'GetNodeById', url: 'pages/GetNodeById', id: 'GetNodeById' }, + { title: 'FetchAndLoad', url: 'pages/FetchAndLoad', id: 'FetchAndLoad' }, + ]; + + build() { + Scroll(new Scroller()) { + Column() { + Text($r('app.string.Manpage')) + .fontWeight(FontWeight.Bold) + .fontSize('20vp') + .textAlign(TextAlign.Center) + .height('5%') + .margin($r('sys.float.titlebar_title_margin_right')) + List({ space: 20, initialIndex: 0 }) { + ForEach(this.items, (item: ListCategories) => { + ListItem() { + Row() { + Text(item.title) + .fontSize($r('sys.float.text_button_font_size')) + .fontColor(Color.Black) + .textAlign(TextAlign.Start) + .height('100%') + .width('50%') + .padding($r('sys.float.padding_level10')) + Text('>') + .id(item.id) + .fontSize('25vp') + .fontColor(Color.Black) + .textAlign(TextAlign.End) + .fontColor(Color.Gray) + .height('100%') + .width('50%') + .padding($r('sys.float.padding_level10')) + } + .width('100%') + .height('10%') + .borderRadius($r('sys.float.select_border_radius_default')) + .backgroundColor(Color.White) + .onClick(() => { + this.getUIContext().getRouter().pushUrl({ url: item.url }) + }) + }.margin($r('sys.float.menu_item_content_align')) + }) + }.width('95%').height('90%').alignListItem(ListItemAlign.Center) + }.width('100%') + }.height('100%').backgroundColor($r('app.color.background_color')) + } +} \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/pages/InquireUniqueId.ets b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/pages/InquireUniqueId.ets new file mode 100644 index 00000000000..6f4482c09a7 --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/pages/InquireUniqueId.ets @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2025 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. + */ + +import nativeNode from 'libentry.so'; +import { NodeContent } from '@kit.ArkUI'; + +@Entry +@Component +struct MoveTo { + private rootSlot = new NodeContent(); + + aboutToAppear(): void { + nativeNode.createInquireUniqueIdNode(this.rootSlot); + } + + build() { + Scroll() { + Column({ space: 15 }) { + Column() { + ContentSlot(this.rootSlot) + } + } + .width('100%') + }.scrollBarColor(Color.Transparent) + } +} \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/pages/MoveTo.ets b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/pages/MoveTo.ets new file mode 100644 index 00000000000..18595f09402 --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/ets/pages/MoveTo.ets @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2025 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. + */ + +// [Start ndknodequeryoperate4_start] +// MoveTo.ets +import nativeNode from 'libentry.so'; +import { NodeContent } from '@kit.ArkUI'; + +@Entry +@Component +struct MoveTo { + private rootSlot = new NodeContent(); + + aboutToAppear(): void { + nativeNode.createMoveToNode(this.rootSlot); + } + + build() { + Scroll() { + Column({ space: 15 }) { + Column() { + ContentSlot(this.rootSlot) + } + } + .width('100%') + }.scrollBarColor(Color.Transparent) + } +} +// [End ndknodequeryoperate4_start] \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/module.json5 b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/module.json5 new file mode 100644 index 00000000000..4a0a14dc2cb --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/module.json5 @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2025 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. + */ + +{ + "module": { + "name": "entry", + "type": "entry", + "description": "$string:module_desc", + "mainElement": "EntryAbility", + "deviceTypes": [ + "default" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:main_pages", + "abilities": [ + { + "name": "EntryAbility", + "srcEntry": "./ets/entryability/EntryAbility.ets", + "description": "$string:EntryAbility_desc", + "icon": "$media:layered_image", + "label": "$string:EntryAbility_label", + "startWindowIcon": "$media:startIcon", + "startWindowBackground": "$color:start_window_background", + "exported": true, + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "ohos.want.action.home" + ] + } + ] + } + ], + "extensionAbilities": [ + { + "name": "EntryBackupAbility", + "srcEntry": "./ets/entrybackupability/EntryBackupAbility.ets", + "type": "backup", + "exported": false, + "metadata": [ + { + "name": "ohos.extension.backup", + "resource": "$profile:backup_config" + } + ] + } + ] + } +} \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/base/element/color.json b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/base/element/color.json new file mode 100644 index 00000000000..e14ec8929be --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/base/element/color.json @@ -0,0 +1,12 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + }, + { + "name": "background_color", + "value": "#2AA1A6B1" + } + ] +} \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/base/element/float.json b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/base/element/float.json new file mode 100644 index 00000000000..33ea22304f9 --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/base/element/float.json @@ -0,0 +1,8 @@ +{ + "float": [ + { + "name": "page_text_font_size", + "value": "50fp" + } + ] +} diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/base/element/string.json b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/base/element/string.json new file mode 100644 index 00000000000..c9759ae2d0e --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/base/element/string.json @@ -0,0 +1,24 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "module description" + }, + { + "name": "EntryAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "label" + }, + { + "name": "Switch", + "value": "切换" + }, + { + "name": "Manpage", + "value": "NodeInterface" + } + ] +} \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/base/media/background.png b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/base/media/background.png new file mode 100644 index 0000000000000000000000000000000000000000..923f2b3f27e915d6871871deea0420eb45ce102f GIT binary patch literal 91942 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

c)ijgxDm}8EsRXFt3h@+Ufr7@DN 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 literal 0 HcmV?d00001 diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/base/profile/backup_config.json b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/base/profile/backup_config.json new file mode 100644 index 00000000000..78f40ae7c49 --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/base/profile/backup_config.json @@ -0,0 +1,3 @@ +{ + "allowToBackupRestore": true +} \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/base/profile/main_pages.json b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/base/profile/main_pages.json new file mode 100644 index 00000000000..a56a72eff4c --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/base/profile/main_pages.json @@ -0,0 +1,10 @@ +{ + "src": [ + "pages/Index", + "pages/Attribute", + "pages/FetchAndLoad", + "pages/GetNodeById", + "pages/InquireUniqueId", + "pages/MoveTo" + ] +} diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/dark/element/color.json b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/dark/element/color.json new file mode 100644 index 00000000000..79b11c2747a --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/main/resources/dark/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#000000" + } + ] +} \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/mock/Libentry.mock.ets b/ArkUIKit/NdkNodeQueryOperate/entry/src/mock/Libentry.mock.ets new file mode 100644 index 00000000000..aec91cff29d --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/mock/Libentry.mock.ets @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2025 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. + */ + +const NativeMock: Record = { + 'add': (a: number, b: number) => { + return a + b; + }, +}; + +export default NativeMock; \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/mock/mock-config.json5 b/ArkUIKit/NdkNodeQueryOperate/entry/src/mock/mock-config.json5 new file mode 100644 index 00000000000..8ff46344fd4 --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/mock/mock-config.json5 @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2025 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. + */ + +{ + "libentry.so": { + "source": "src/mock/Libentry.mock.ets" + } +} \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/ohosTest/ets/test/Ability.test.ets b/ArkUIKit/NdkNodeQueryOperate/entry/src/ohosTest/ets/test/Ability.test.ets new file mode 100644 index 00000000000..3c81579a25a --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/ohosTest/ets/test/Ability.test.ets @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2025 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. + */ + +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; + +export default function abilityTest() { + describe('ActsAbilityTest', () => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }) + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }) + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }) + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }) + it('assertContain', 0, () => { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + hilog.info(0x0000, 'testTag', '%{public}s', 'it begin'); + let a = 'abc'; + let b = 'b'; + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. + expect(a).assertContain(b); + expect(a).assertEqual(a); + }) + }) +} \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/ohosTest/ets/test/List.test.ets b/ArkUIKit/NdkNodeQueryOperate/entry/src/ohosTest/ets/test/List.test.ets new file mode 100644 index 00000000000..d9083ee29c9 --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/ohosTest/ets/test/List.test.ets @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2025 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. + */ + +import abilityTest from './Ability.test'; +import nodeInterface from './NodeInterface.test'; + +export default function testsuite() { + abilityTest(); + nodeInterface(); +} \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/ohosTest/ets/test/NodeInterface.test.ets b/ArkUIKit/NdkNodeQueryOperate/entry/src/ohosTest/ets/test/NodeInterface.test.ets new file mode 100644 index 00000000000..90c34a9b07d --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/ohosTest/ets/test/NodeInterface.test.ets @@ -0,0 +1,217 @@ +/* + * Copyright (c) 2025 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. + */ + +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect, TestType, Size, Level } from '@ohos/hypium'; +import { abilityDelegatorRegistry, Driver, ON, MatchPattern } from '@kit.TestKit'; +import { UIAbility, Want } from '@kit.AbilityKit'; + +const LOG_PRINT_DOMAIN: number = 0xFF00; +const PREFIX: string = '[Test]'; +const DELAY_TIME: number = 1000; + +const delegator = abilityDelegatorRegistry.getAbilityDelegator(); +const bundleName = abilityDelegatorRegistry.getArguments().bundleName; +let abilityDelegator: abilityDelegatorRegistry.AbilityDelegator = abilityDelegatorRegistry.getAbilityDelegator(); +let driver: Driver; +let want: Want; + +async function getResourceString(resource: Resource): Promise { + let manage = abilityDelegator.getAppContext().resourceManager; + let textString: string = await manage.getStringValue(resource); + return textString; +} + +export default function NodeInterface() { + describe('NodeInterface', () => { + beforeAll(async () => { + want = { + bundleName: bundleName, + abilityName: 'EntryAbility' + }; + await delegator.startAbility(want); + let driver = Driver.create(); + await driver.delayMs(DELAY_TIME); + const ability: UIAbility = await delegator.getCurrentTopAbility(); + hilog.info(LOG_PRINT_DOMAIN, PREFIX, 'get top ability'); + expect(ability.context.abilityInfo.name).assertEqual('EntryAbility'); + }); + + beforeEach(async () => { + let driver = Driver.create(); + await driver.delayMs(DELAY_TIME); + }) + + /** + * @tc.number: NdkNodeQueryOperate_001 + * @tc.name: InquireUniqueIdTest + * @tc.desc: Queries the uniqueId of a node and obtains the node information based on the uniqueId + * @tc.size: MediumTest + * @tc.type: Function + * @tc.level Level 1 + */ + it('InquireUniqueIdTest', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL1, + async (done: Function) => { + hilog.info(LOG_PRINT_DOMAIN, PREFIX, 'InquireUniqueIdTest begin'); + let driver = Driver.create(); + await driver.delayMs(DELAY_TIME); + + try { + // 点击InquireUniqueId进入界面 + const button = await driver.findComponent(ON.id('InquireUniqueId')); + await button.click(); + await driver.delayMs(DELAY_TIME); + } catch (error) { + hilog.error(LOG_PRINT_DOMAIN, PREFIX, 'InquireUniqueIdTest failed: %{public}s', error.message); + } + + hilog.info(LOG_PRINT_DOMAIN, PREFIX, 'InquireUniqueIdTest end'); + done(); + }); + + /** + * @tc.number: NdkNodeQueryOperate_002 + * @tc.name: AttributeTest + * @tc.desc: The node property update is triggered in the current instant frame + * @tc.size: MediumTest + * @tc.type: Function + * @tc.level Level 1 + */ + it('AttributeTest', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL1, + async (done: Function) => { + hilog.info(LOG_PRINT_DOMAIN, PREFIX, 'AttributeTest begin'); + let driver = Driver.create(); + await driver.delayMs(DELAY_TIME); + + try { + // 点击Attribute进入界面 + const button = await driver.findComponent(ON.id('Attribute')); + await button.click(); + await driver.delayMs(DELAY_TIME); + } catch (error) { + hilog.error(LOG_PRINT_DOMAIN, PREFIX, 'AttributeTest failed: %{public}s', error.message); + } + + hilog.info(LOG_PRINT_DOMAIN, PREFIX, 'AttributeTest end'); + done(); + }); + + /** + * @tc.number: NdkNodeQueryOperate_003 + * @tc.name: MoveToTest + * @tc.desc: Mobile node + * @tc.size: MediumTest + * @tc.type: Function + * @tc.level Level 1 + */ + it('MoveToTest', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL1, + async (done: Function) => { + hilog.info(LOG_PRINT_DOMAIN, PREFIX, 'MoveToTest begin'); + let driver = Driver.create(); + await driver.delayMs(DELAY_TIME); + + try { + // 点击Attribute进入界面 + const button = await driver.findComponent(ON.id('MoveTo')); + await button.click(); + await driver.delayMs(DELAY_TIME); + } catch (error) { + hilog.error(LOG_PRINT_DOMAIN, PREFIX, 'MoveToTest failed: %{public}s', error.message); + } + + hilog.info(LOG_PRINT_DOMAIN, PREFIX, 'MoveToTest end'); + done(); + }); + + /** + * @tc.number: NdkNodeQueryOperate_004 + * @tc.name: GetNodeByIdTest + * @tc.desc: Test to OH_ArkUI_NodeUtils_GetAttachedNodeHandleById interface + * @tc.size: MediumTest + * @tc.type: Function + * @tc.level Level 1 + */ + it('GetNodeByIdTest', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL1, + async (done: Function) => { + hilog.info(LOG_PRINT_DOMAIN, PREFIX, 'GetNodeByIdTest begin'); + let driver = Driver.create(); + await driver.delayMs(DELAY_TIME); + + try { + // 点击Attribute进入界面 + const button = await driver.findComponent(ON.id('GetNodeById')); + await button.click(); + await driver.delayMs(DELAY_TIME); + } catch (error) { + hilog.error(LOG_PRINT_DOMAIN, PREFIX, 'GetNodeByIdTest failed: %{public}s', error.message); + } + + hilog.info(LOG_PRINT_DOMAIN, PREFIX, 'GetNodeByIdTest end'); + done(); + }); + + /** + * @tc.number: NdkNodeQueryOperate_005 + * @tc.name: FetchAndLoadTest + * @tc.desc: Test to OH_ArkUI_NodeUtils_GetAttachedNodeHandleById interface + * @tc.size: MediumTest + * @tc.type: Function + * @tc.level Level 1 + */ + it('FetchAndLoadTest', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL1, + async (done: Function) => { + hilog.info(LOG_PRINT_DOMAIN, PREFIX, 'FetchAndLoadTest begin'); + let driver = Driver.create(); + await driver.delayMs(DELAY_TIME); + + try { + // 点击Attribute进入界面 + const button = await driver.findComponent(ON.id('FetchAndLoad')); + await button.click(); + await driver.delayMs(DELAY_TIME); + + let button1 = await driver.findComponent(ON.text("getFirstChildIndexWithoutExpand", MatchPattern.CONTAINS)); + expect(button1 === null).assertFalse(); + await button1.click(); + await driver.delayMs(DELAY_TIME); + + let button2 = await driver.findComponent(ON.text("getLastChildIndexWithoutExpand", MatchPattern.CONTAINS)); + expect(button1 === null).assertFalse(); + await button1.click(); + await driver.delayMs(DELAY_TIME); + + let button3 = await driver.findComponent(ON.text("getChildWithNotExpand", MatchPattern.CONTAINS)); + expect(button1 === null).assertFalse(); + await button1.click(); + await driver.delayMs(DELAY_TIME); + + let button4 = await driver.findComponent(ON.text("getChildWithExpand", MatchPattern.CONTAINS)); + expect(button1 === null).assertFalse(); + await button1.click(); + await driver.delayMs(DELAY_TIME); + + let button5 = await driver.findComponent(ON.text("getChildWithLazyExpand", MatchPattern.CONTAINS)); + expect(button1 === null).assertFalse(); + await button1.click(); + await driver.delayMs(DELAY_TIME); + } catch (error) { + hilog.error(LOG_PRINT_DOMAIN, PREFIX, 'FetchAndLoadTest failed: %{public}s', error.message); + } + + hilog.info(LOG_PRINT_DOMAIN, PREFIX, 'FetchAndLoadTest end'); + done(); + }); + }) +} \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/ohosTest/module.json5 b/ArkUIKit/NdkNodeQueryOperate/entry/src/ohosTest/module.json5 new file mode 100644 index 00000000000..7e310427a2d --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/ohosTest/module.json5 @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2025 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. + */ + +{ + "module": { + "name": "entry_test", + "type": "feature", + "deviceTypes": [ + "default" + ], + "deliveryWithInstall": true, + "installationFree": false + } +} diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/test/List.test.ets b/ArkUIKit/NdkNodeQueryOperate/entry/src/test/List.test.ets new file mode 100644 index 00000000000..74ba3a09941 --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/test/List.test.ets @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2025 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. + */ + +import localUnitTest from './LocalUnit.test'; + +export default function testsuite() { + localUnitTest(); +} \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/entry/src/test/LocalUnit.test.ets b/ArkUIKit/NdkNodeQueryOperate/entry/src/test/LocalUnit.test.ets new file mode 100644 index 00000000000..b367c75db8a --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/entry/src/test/LocalUnit.test.ets @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2025 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. + */ + +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; + +export default function localUnitTest() { + describe('localUnitTest', () => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }); + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }); + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }); + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }); + it('assertContain', 0, () => { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + let a = 'abc'; + let b = 'b'; + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. + expect(a).assertContain(b); + expect(a).assertEqual(a); + }); + }); +} \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/hvigor/hvigor-config.json5 b/ArkUIKit/NdkNodeQueryOperate/hvigor/hvigor-config.json5 new file mode 100644 index 00000000000..f157d908f15 --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/hvigor/hvigor-config.json5 @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2025 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. + */ + +{ + "modelVersion": "6.0.0", + "dependencies": { + }, + "execution": { + // "analyze": "normal", /* Define the build analyze mode. Value: [ "normal" | "advanced" | "ultrafine" | false ]. Default: "normal" */ + // "daemon": true, /* Enable daemon compilation. Value: [ true | false ]. Default: true */ + // "incremental": true, /* Enable incremental compilation. Value: [ true | false ]. Default: true */ + // "parallel": true, /* Enable parallel compilation. Value: [ true | false ]. Default: true */ + // "typeCheck": false, /* Enable typeCheck. Value: [ true | false ]. Default: false */ + // "optimizationStrategy": "memory" /* Define the optimization strategy. Value: [ "memory" | "performance" ]. Default: "memory" */ + }, + "logging": { + // "level": "info" /* Define the log level. Value: [ "debug" | "info" | "warn" | "error" ]. Default: "info" */ + }, + "debugging": { + // "stacktrace": false /* Disable stacktrace compilation. Value: [ true | false ]. Default: false */ + }, + "nodeOptions": { + // "maxOldSpaceSize": 8192 /* Enable nodeOptions maxOldSpaceSize compilation. Unit M. Used for the daemon process. Default: 8192*/ + // "exposeGC": true /* Enable to trigger garbage collection explicitly. Default: true*/ + } +} diff --git a/ArkUIKit/NdkNodeQueryOperate/hvigorfile.ts b/ArkUIKit/NdkNodeQueryOperate/hvigorfile.ts new file mode 100644 index 00000000000..de06c780c96 --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/hvigorfile.ts @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2025 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. + */ + +import { appTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: appTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins: [] /* Custom plugin to extend the functionality of Hvigor. */ +} \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/oh-package.json5 b/ArkUIKit/NdkNodeQueryOperate/oh-package.json5 new file mode 100644 index 00000000000..19e26ca33e5 --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/oh-package.json5 @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2025 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. + */ + +{ + "modelVersion": "6.0.0", + "description": "Please describe the basic information.", + "dependencies": { + }, + "devDependencies": { + "@ohos/hypium": "1.0.24", + "@ohos/hamock": "1.0.0" + } +} diff --git a/ArkUIKit/NdkNodeQueryOperate/ohosTest.md b/ArkUIKit/NdkNodeQueryOperate/ohosTest.md new file mode 100644 index 00000000000..f08393b2367 --- /dev/null +++ b/ArkUIKit/NdkNodeQueryOperate/ohosTest.md @@ -0,0 +1,7 @@ +| 测试功能 | 预置条件 | 输入 | 预期输出 | 测试结果 | +|-----------------------------------| ------------ |---------------------------|-------------------------------------|------| +| 查询节点uniqueId及通过uniqueId获取节点信息 | 设备正常运行 | 点击InquireUniqueId进入页面,点击按钮 | 打印日志GetNodeHandleByUniqueId success | Pass | +| OH_ArkUI_NativeModule_InvalidateAttributes接口 | 设备正常运行 | 点击Attribute进入页面,点击切换按钮 | 切换图片正常展示 | Pass | +| 移动节点 | 设备正常运行 | 点击MoveTo进入页面,点击按钮MoveTo | Stack节点会移动到目标位置 | Pass | +| OH_ArkUI_NodeUtils_GetAttachedNodeHandleById接口 | 设备正常运行 | 点击GetNodeById进入页面,点击按钮 | 打印节点获取成功信息 | Pass | +| 获取对应下标的子节点 | 设备正常运行 | 点击FetchAndLoad进入页面,点击按钮 | 日志打印对应错误码 | Pass | \ No newline at end of file diff --git a/ArkUIKit/NdkNodeQueryOperate/screenshot/Attribute.jpg b/ArkUIKit/NdkNodeQueryOperate/screenshot/Attribute.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0abea312ec1820d2b74ff9ab6402d219b8c19ef3 GIT binary patch literal 41351 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�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 literal 0 HcmV?d00001 diff --git a/ArkUIKit/NdkNodeQueryOperate/screenshot/GetNodeById.jpg b/ArkUIKit/NdkNodeQueryOperate/screenshot/GetNodeById.jpg new file mode 100644 index 0000000000000000000000000000000000000000..141c398d47d4e07dba26de92c9e184c4639d6b96 GIT binary patch literal 33763 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 asxu-cdPNh(-(vZX{{g`N=9S(b-2V$o$9U=h literal 0 HcmV?d00001 diff --git a/ArkUIKit/NdkNodeQueryOperate/screenshot/InquireUniqueId.jpg b/ArkUIKit/NdkNodeQueryOperate/screenshot/InquireUniqueId.jpg new file mode 100644 index 0000000000000000000000000000000000000000..acce959fd5aada80e846578e82855e7c766037f8 GIT binary patch literal 18626 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π$gbse2&66a=Rl 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

  • N+lFb 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