From 05373857f26ed35f8624c34ba57ce9490efb95ff Mon Sep 17 00:00:00 2001 From: liuyongkai2 Date: Tue, 23 Sep 2025 11:42:23 +0800 Subject: [PATCH] add swiper to nodesample Signed-off-by: liuyongkai2 --- .../NativeNodeBaseSample/AppScope/app.json5 | 2 +- .../resources/base/element/string.json | 2 +- ArkUIKit/NativeNodeBaseSample/README.md | 2 +- .../NativeNodeBaseSample/build-profile.json5 | 21 +- .../entry/build-profile.json5 | 2 +- .../entry/oh-package-lock.json5 | 18 + .../entry/src/main/cpp/CMakeLists.txt | 4 +- .../entry/src/main/cpp/SwiperMaker.cpp | 764 ++++++++++++++++++ .../entry/src/main/cpp/SwiperMaker.h | 90 +++ .../entry/src/main/cpp/TextMaker.h | 4 +- .../entry/src/main/cpp/manager.cpp | 28 + .../entry/src/main/cpp/manager.h | 1 + .../entry/src/main/cpp/napi_init.cpp | 2 + .../src/main/cpp/types/libentry/Index.d.ts | 3 +- .../entry/src/main/ets/pages/Index.ets | 1 + .../entry/src/main/ets/pages/page_swiper.ets | 34 + .../resources/base/profile/main_pages.json | 3 +- ArkUIKit/NativeNodeBaseSample/log.txt | 642 --------------- .../oh-package-lock.json5 | 27 + ArkUIKit/StyledStringSample/README.md | 6 +- 20 files changed, 984 insertions(+), 672 deletions(-) create mode 100644 ArkUIKit/NativeNodeBaseSample/entry/oh-package-lock.json5 create mode 100644 ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/SwiperMaker.cpp create mode 100644 ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/SwiperMaker.h create mode 100644 ArkUIKit/NativeNodeBaseSample/entry/src/main/ets/pages/page_swiper.ets delete mode 100644 ArkUIKit/NativeNodeBaseSample/log.txt create mode 100644 ArkUIKit/NativeNodeBaseSample/oh-package-lock.json5 diff --git a/ArkUIKit/NativeNodeBaseSample/AppScope/app.json5 b/ArkUIKit/NativeNodeBaseSample/AppScope/app.json5 index 6bfccda26..b20ebf274 100644 --- a/ArkUIKit/NativeNodeBaseSample/AppScope/app.json5 +++ b/ArkUIKit/NativeNodeBaseSample/AppScope/app.json5 @@ -14,7 +14,7 @@ */ { "app": { - "bundleName": "com.example.native_type_sample", + "bundleName": "com.example.native_node_sample", "vendor": "example", "versionCode": 1000000, "versionName": "1.0.0", diff --git a/ArkUIKit/NativeNodeBaseSample/AppScope/resources/base/element/string.json b/ArkUIKit/NativeNodeBaseSample/AppScope/resources/base/element/string.json index 63f6db99c..de144fc63 100644 --- a/ArkUIKit/NativeNodeBaseSample/AppScope/resources/base/element/string.json +++ b/ArkUIKit/NativeNodeBaseSample/AppScope/resources/base/element/string.json @@ -2,7 +2,7 @@ "string": [ { "name": "app_name", - "value": "native_type_sample" + "value": "native_node_sample" } ] } diff --git a/ArkUIKit/NativeNodeBaseSample/README.md b/ArkUIKit/NativeNodeBaseSample/README.md index c6eb7de06..7c8de8b81 100644 --- a/ArkUIKit/NativeNodeBaseSample/README.md +++ b/ArkUIKit/NativeNodeBaseSample/README.md @@ -8,7 +8,7 @@ | 预览 | | -------------------------------------------- | - + ## 使用说明 1. 安装编译生成的hap包,并打开应用; diff --git a/ArkUIKit/NativeNodeBaseSample/build-profile.json5 b/ArkUIKit/NativeNodeBaseSample/build-profile.json5 index fad9fdc84..11e19dc1c 100644 --- a/ArkUIKit/NativeNodeBaseSample/build-profile.json5 +++ b/ArkUIKit/NativeNodeBaseSample/build-profile.json5 @@ -19,9 +19,10 @@ { "name": "default", "signingConfig": "default", - "compileSdkVersion": 20, - "compatibleSdkVersion": 20, - "runtimeOS": "OpenHarmony", + "compileSdkVersion": "6.0.0(20)", + "compatibleSdkVersion": "6.0.0(20)", + "targetSdkVersion": "6.0.0(20)", + "runtimeOS": "HarmonyOS", "buildOption": { "strictMode": { "caseSensitiveCheck": true, @@ -38,20 +39,6 @@ "name": "release" } ], - "signingConfigs": [ - { - "name": "default", - "material": { - "certpath": "C:/Users/mengbin/.ohos/config/openharmony/default_native_node_sample_chM8J6e_8dDNvGCBjfAkjWpumQsw6Odr2vOZoY9aYsQ=.cer", - "keyAlias": "debugKey", - "keyPassword": "0000001B93DC0C18E4E80E972908BD6DDAD1A7A23708F713AE4EAC9F4A8150864E9BF213DAE8CCD1EAE461", - "profile": "C:/Users/mengbin/.ohos/config/openharmony/default_native_node_sample_chM8J6e_8dDNvGCBjfAkjWpumQsw6Odr2vOZoY9aYsQ=.p7b", - "signAlg": "SHA256withECDSA", - "storeFile": "C:/Users/mengbin/.ohos/config/openharmony/default_native_node_sample_chM8J6e_8dDNvGCBjfAkjWpumQsw6Odr2vOZoY9aYsQ=.p12", - "storePassword": "0000001B14C8C965757EEB795058C932CF032B4275280291C134D1B8C12CA7DAF6B9EE19C0061639ADE130" - } - } - ] }, "modules": [ { diff --git a/ArkUIKit/NativeNodeBaseSample/entry/build-profile.json5 b/ArkUIKit/NativeNodeBaseSample/entry/build-profile.json5 index 400a41af2..cde7025c2 100644 --- a/ArkUIKit/NativeNodeBaseSample/entry/build-profile.json5 +++ b/ArkUIKit/NativeNodeBaseSample/entry/build-profile.json5 @@ -21,7 +21,7 @@ "arguments": "", "cppFlags": "", "abiFilters": [ - "armeabi-v7a","arm64-v8a", "x86_64" + "arm64-v8a", "x86_64" ] } }, diff --git a/ArkUIKit/NativeNodeBaseSample/entry/oh-package-lock.json5 b/ArkUIKit/NativeNodeBaseSample/entry/oh-package-lock.json5 new file mode 100644 index 000000000..5c8c8d647 --- /dev/null +++ b/ArkUIKit/NativeNodeBaseSample/entry/oh-package-lock.json5 @@ -0,0 +1,18 @@ +{ + "meta": { + "stableOrder": true + }, + "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": "src/main/cpp/types/libentry", + "registryType": "local" + } + } +} \ No newline at end of file diff --git a/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/CMakeLists.txt b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/CMakeLists.txt index 3b5c8ddf0..cfabe964b 100644 --- a/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/CMakeLists.txt +++ b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/CMakeLists.txt @@ -1,13 +1,13 @@ # the minimum version of CMake. cmake_minimum_required(VERSION 3.5.0) -project(native_type_sample) +project(native_node_sample) set(NATIVERENDER_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${NATIVERENDER_ROOT_PATH} ${NATIVERENDER_ROOT_PATH}/include) -add_library(entry SHARED napi_init.cpp manager.cpp baseUtils.cpp TextMaker.cpp) +add_library(entry SHARED napi_init.cpp manager.cpp baseUtils.cpp SwiperMaker.cpp TextMaker.cpp) find_library(hilog-lib hilog_ndk.z) diff --git a/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/SwiperMaker.cpp b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/SwiperMaker.cpp new file mode 100644 index 000000000..7bb753382 --- /dev/null +++ b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/SwiperMaker.cpp @@ -0,0 +1,764 @@ +/* + * 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 "SwiperMaker.h" +#include "baseUtils.h" +#include +#include + +namespace ConstIde { + const float TEXT_WIDTH_VP = 500.0f; // 宽度 + const float TEXT_HEIGHT_VP = 200.0f; // 高度 + const uint32_t TEXT_BG_COLOR = 0xFFAFEEEE; // 淡蓝色 + const int32_t TEXT_ALIGN_CENTER = 1; // 居中 + const float TEXT_FONT_SIZE_VP = 30.0f; // 字体大小 + + const uint32_t SHOW_BACKGROUND_ENABLED = 1; + const uint32_t SHOW_SIDEBAR_MIDDLE_ENABLED = 1; + const float ARROW_BACKGROUND_SIZE = 50.0; + const uint32_t ARROW_BACKGROUND_COLOR = 0xffffffff; // 白色 + const float ARROW_SIZE = 37.5; + const uint32_t ARROW_COLOR = 0xa9a9a9; // 浅灰色 + + const float INDICATOR_START_DISTANCE_VP = 10.0; // 距左侧 + const float INDICATOR_END_DISTANCE_VP = 0.0; // 距右侧 + const float INDICATOR_TOP_DISTANCE_VP = 10.0; // 距顶部 + const float INDICATOR_BOTTOM_DISTANCE_VP = 0.0; // 距底部 + const float ITEM_WIDTH_VP = 12.0; + const float ITEM_HEIGHT_VP = 6.0; + const float SELECTED_ITEM_WIDTH_VP = 20.0; + const float SELECTED_ITEM_HEIGHT_VP = 10.0; + const uint32_t IGNORE_BOTTOM_SIZE_DISABLED = 0; // 不忽略 SetBottomPosition + const uint32_t MASK_ENABLED = 1; // 显示蒙版 + const uint32_t INDICATOR_COLOR_DEFAULT = 0xA9A9A9A9; // 灰色 + const uint32_t INDICATOR_COLOR_SELECTED = 0xFFFF0000; // 红色 + const uint32_t MAX_DISPLAY_COUNT = 6; // 有效范围 [6,9] + + const float DIGIT_INDICATOR_START_DISTANCE_VP = 10.0; // 距左侧 + const float DIGIT_INDICATOR_END_DISTANCE_VP = 0.0; // 距右侧 + const float DIGIT_INDICATOR_TOP_DISTANCE_VP = 10.0; // 距顶部 + const float DIGIT_INDICATOR_BOTTOM_DISTANCE_VP = 0.0; // 距底部 + const uint32_t DIGIT_FONT_COLOR_DEFAULT = 0xA9A9A9A9; // 淡灰色 + const uint32_t DIGIT_FONT_COLOR_SELECTED = 0xFFFF0000; // 红色 + const float DIGIT_FONT_SIZE_DEFAULT = 30.0; // 默认字体大小 + const float DIGIT_FONT_SIZE_SELECTED = 50.0; // 选中字体大小 + + const uint32_t NUMBER_0 = 0; + const uint32_t NUMBER_1 = 1; + const uint32_t NUMBER_2 = 2; + const uint32_t NUMBER_10 = 10; + const uint32_t MARGIN_NUMBER_30 = 30; + const float NUMBER_5_F = 5.0; + const float NUMBER_400_F = 400.0; + const float NUMBER_3000_MS = 3000.0; + const uint32_t BACKGROUND_COLOR = 0x2AA1A6B1; + const uint32_t DURATION = 1000; +} // namespace ConstIde + +void SwiperMaker::createSwiperNode(ArkUI_NodeHandle &swiper) +{ + const int size = 11; + // 设置swiper内容为0,1,2…… + const char *arr[size] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"}; + + for (int j = ConstIde::NUMBER_0; j < size; j++) { + ArkUI_NodeHandle textNode = Manager::nodeAPI_->createNode(ARKUI_NODE_TEXT); + ArkUI_AttributeItem content = {.string = arr[j]}; + Manager::nodeAPI_->setAttribute(textNode, NODE_TEXT_CONTENT, &content); + + ArkUI_NumberValue value[] = {0}; + ArkUI_AttributeItem item = {.value = value, .size = 1}; + value[ConstIde::NUMBER_0].f32 = ConstIde::TEXT_WIDTH_VP; + Manager::nodeAPI_->setAttribute(textNode, NODE_WIDTH, &item); + value[ConstIde::NUMBER_0].f32 = ConstIde::TEXT_HEIGHT_VP; + Manager::nodeAPI_->setAttribute(textNode, NODE_HEIGHT, &item); + value[ConstIde::NUMBER_0].u32 = ConstIde::TEXT_BG_COLOR; + Manager::nodeAPI_->setAttribute(textNode, NODE_BACKGROUND_COLOR, &item); + value[ConstIde::NUMBER_0].i32 = ConstIde::TEXT_ALIGN_CENTER; + Manager::nodeAPI_->setAttribute(textNode, NODE_TEXT_ALIGN, &item); + value[ConstIde::NUMBER_0].f32 = ConstIde::TEXT_FONT_SIZE_VP; + Manager::nodeAPI_->setAttribute(textNode, NODE_FONT_SIZE, &item); + + ArkUI_AttributeItem textId = {.string = "SwiperAutoPlayText"}; + Manager::nodeAPI_->setAttribute(textNode, NODE_ID, &textId); + Manager::nodeAPI_->addChild(swiper, textNode); + } + BaseUtils::SetNodeMargin(swiper, ConstIde::MARGIN_NUMBER_30); // 设置边距宽度为30vp +} + +void SwiperMaker::SetSwiperArrowStyle(ArkUI_NodeHandle &swiper) +{ + ArkUI_SwiperArrowStyle *arrowStyle = OH_ArkUI_SwiperArrowStyle_Create(); + OH_ArkUI_SwiperArrowStyle_SetShowBackground(arrowStyle, ConstIde::SHOW_BACKGROUND_ENABLED); + OH_ArkUI_SwiperArrowStyle_SetShowSidebarMiddle(arrowStyle, ConstIde::SHOW_SIDEBAR_MIDDLE_ENABLED); + OH_ArkUI_SwiperArrowStyle_SetBackgroundSize(arrowStyle, ConstIde::ARROW_BACKGROUND_SIZE); + OH_ArkUI_SwiperArrowStyle_SetBackgroundColor(arrowStyle, ConstIde::ARROW_BACKGROUND_COLOR); + OH_ArkUI_SwiperArrowStyle_SetArrowSize(arrowStyle, ConstIde::ARROW_SIZE); + OH_ArkUI_SwiperArrowStyle_SetArrowColor(arrowStyle, ConstIde::ARROW_COLOR); + + ArkUI_NumberValue value[ConstIde::NUMBER_1]; + ArkUI_AttributeItem item = {.value = value, .size = ConstIde::NUMBER_1, .object = arrowStyle}; + value[ConstIde::NUMBER_0].i32 = ARKUI_SWIPER_ARROW_SHOW; // default ARKUI_SWIPER_ARROW_HIDE + Manager::nodeAPI_->setAttribute(swiper, NODE_SWIPER_SHOW_DISPLAY_ARROW, &item); + OH_ArkUI_SwiperArrowStyle_Destroy(arrowStyle); +} + +void SwiperMaker::GetSwiperArrowStyle(ArkUI_NodeHandle swiper) +{ + auto nodeSwiperShowDisplayArrow = Manager::nodeAPI_->getAttribute(swiper, NODE_SWIPER_SHOW_DISPLAY_ARROW); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "Arrow NODE_SWIPER_SHOW_DISPLAY_ARROW %{public}d", + nodeSwiperShowDisplayArrow->value[ConstIde::NUMBER_0].i32); + auto arrowStyleObject = static_cast(nodeSwiperShowDisplayArrow->object); + auto iRet = OH_ArkUI_SwiperArrowStyle_GetShowBackground(arrowStyleObject); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "Arrow GetShowBackground %{public}d", iRet); + iRet = OH_ArkUI_SwiperArrowStyle_GetShowSidebarMiddle(arrowStyleObject); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "Arrow GetShowSidebarMiddle %{public}d", iRet); + auto fRet = OH_ArkUI_SwiperArrowStyle_GetBackgroundSize(arrowStyleObject); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "Arrow GetBackgroundSize %{public}f", fRet); + auto uRet = OH_ArkUI_SwiperArrowStyle_GetBackgroundColor(arrowStyleObject); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "Arrow GetBackgroundColor %{public}x", uRet); + fRet = OH_ArkUI_SwiperArrowStyle_GetArrowSize(arrowStyleObject); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "Arrow GetArrowSize %{public}f", fRet); + uRet = OH_ArkUI_SwiperArrowStyle_GetArrowColor(arrowStyleObject); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "Arrow GetArrowColor %{public}x", uRet); +} + +void SwiperMaker::SetSwiperIndicatorTypeDot(ArkUI_NodeHandle &swiper) +{ + ArkUI_SwiperIndicator *swiperIndicatorStyle = OH_ArkUI_SwiperIndicator_Create(ARKUI_SWIPER_INDICATOR_TYPE_DOT); + OH_ArkUI_SwiperIndicator_SetStartPosition(swiperIndicatorStyle, ConstIde::INDICATOR_START_DISTANCE_VP); + OH_ArkUI_SwiperIndicator_SetEndPosition(swiperIndicatorStyle, ConstIde::INDICATOR_END_DISTANCE_VP); + OH_ArkUI_SwiperIndicator_SetTopPosition(swiperIndicatorStyle, ConstIde::INDICATOR_TOP_DISTANCE_VP); + OH_ArkUI_SwiperIndicator_SetBottomPosition(swiperIndicatorStyle, ConstIde::INDICATOR_BOTTOM_DISTANCE_VP); + OH_ArkUI_SwiperIndicator_SetIgnoreSizeOfBottom(swiperIndicatorStyle, ConstIde::IGNORE_BOTTOM_SIZE_DISABLED); + OH_ArkUI_SwiperIndicator_SetItemWidth(swiperIndicatorStyle, ConstIde::ITEM_WIDTH_VP); + OH_ArkUI_SwiperIndicator_SetItemHeight(swiperIndicatorStyle, ConstIde::ITEM_HEIGHT_VP); + OH_ArkUI_SwiperIndicator_SetSelectedItemWidth(swiperIndicatorStyle, ConstIde::SELECTED_ITEM_WIDTH_VP); + OH_ArkUI_SwiperIndicator_SetSelectedItemHeight(swiperIndicatorStyle, ConstIde::SELECTED_ITEM_HEIGHT_VP); + OH_ArkUI_SwiperIndicator_SetMask(swiperIndicatorStyle, ConstIde::MASK_ENABLED); + OH_ArkUI_SwiperIndicator_SetColor(swiperIndicatorStyle, ConstIde::INDICATOR_COLOR_DEFAULT); + OH_ArkUI_SwiperIndicator_SetSelectedColor(swiperIndicatorStyle, ConstIde::INDICATOR_COLOR_SELECTED); + OH_ArkUI_SwiperIndicator_SetMaxDisplayCount(swiperIndicatorStyle, ConstIde::MAX_DISPLAY_COUNT); + + ArkUI_NumberValue value[ConstIde::NUMBER_1]; + ArkUI_AttributeItem item = {.value = value, .size = ConstIde::NUMBER_1, .object = swiperIndicatorStyle}; + value[ConstIde::NUMBER_0].i32 = ARKUI_SWIPER_INDICATOR_TYPE_DOT; // Different enum use different objects + Manager::nodeAPI_->setAttribute(swiper, NODE_SWIPER_INDICATOR, &item); + + OH_ArkUI_SwiperIndicator_Dispose(swiperIndicatorStyle); +} + +void SwiperMaker::GetSwiperIndicatorTypeDot(ArkUI_NodeHandle swiper) +{ + auto nodeSwiperIndicator = Manager::nodeAPI_->getAttribute(swiper, NODE_SWIPER_INDICATOR); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "NODE_SWIPER_INDICATOR %{public}d", + nodeSwiperIndicator->value[ConstIde::NUMBER_0].i32); + auto swiperIndicatorStyleObject = static_cast(nodeSwiperIndicator->object); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "StartPosition: %{public}f", + OH_ArkUI_SwiperIndicator_GetStartPosition(swiperIndicatorStyleObject)); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "EndPosition: %{public}f", + OH_ArkUI_SwiperIndicator_GetEndPosition(swiperIndicatorStyleObject)); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "TopPosition: %{public}f", + OH_ArkUI_SwiperIndicator_GetTopPosition(swiperIndicatorStyleObject)); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "BottomPosition: %{public}f", + OH_ArkUI_SwiperIndicator_GetBottomPosition(swiperIndicatorStyleObject)); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "IgnoreSizeOfBottom: %{public}d", + OH_ArkUI_SwiperIndicator_GetIgnoreSizeOfBottom(swiperIndicatorStyleObject)); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "ItemWidth: %{public}f", + OH_ArkUI_SwiperIndicator_GetItemWidth(swiperIndicatorStyleObject)); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "ItemHeight: %{public}f", + OH_ArkUI_SwiperIndicator_GetItemHeight(swiperIndicatorStyleObject)); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "ItemHeight: %{public}f", + OH_ArkUI_SwiperIndicator_GetSelectedItemWidth(swiperIndicatorStyleObject)); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "ItemHeight: %{public}f", + OH_ArkUI_SwiperIndicator_GetSelectedItemHeight(swiperIndicatorStyleObject)); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "Mask: %{public}d", + OH_ArkUI_SwiperIndicator_GetMask(swiperIndicatorStyleObject)); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "Color: %{public}x", + OH_ArkUI_SwiperIndicator_GetColor(swiperIndicatorStyleObject)); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "SelectedColor: %{public}x", + OH_ArkUI_SwiperIndicator_GetSelectedColor(swiperIndicatorStyleObject)); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "MaxDisplayCount: %{public}d", + OH_ArkUI_SwiperIndicator_GetMaxDisplayCount(swiperIndicatorStyleObject)); +} + +void SwiperMaker::SetSwiperIndicatorTypeDigit(ArkUI_NodeHandle &swiper) +{ + ArkUI_SwiperDigitIndicator *swiperIndicatorStyle = OH_ArkUI_SwiperDigitIndicator_Create(); + OH_ArkUI_SwiperDigitIndicator_SetStartPosition(swiperIndicatorStyle, ConstIde::DIGIT_INDICATOR_START_DISTANCE_VP); + OH_ArkUI_SwiperDigitIndicator_SetEndPosition(swiperIndicatorStyle, ConstIde::DIGIT_INDICATOR_END_DISTANCE_VP); + OH_ArkUI_SwiperDigitIndicator_SetTopPosition(swiperIndicatorStyle, ConstIde::DIGIT_INDICATOR_TOP_DISTANCE_VP); + OH_ArkUI_SwiperDigitIndicator_SetBottomPosition(swiperIndicatorStyle, ConstIde::DIGIT_INDICATOR_BOTTOM_DISTANCE_VP); + OH_ArkUI_SwiperDigitIndicator_SetFontColor(swiperIndicatorStyle, ConstIde::DIGIT_FONT_COLOR_DEFAULT); + OH_ArkUI_SwiperDigitIndicator_SetSelectedFontColor(swiperIndicatorStyle, ConstIde::DIGIT_FONT_COLOR_SELECTED); + OH_ArkUI_SwiperDigitIndicator_SetFontSize(swiperIndicatorStyle, ConstIde::DIGIT_FONT_SIZE_DEFAULT); + OH_ArkUI_SwiperDigitIndicator_SetSelectedFontSize(swiperIndicatorStyle, ConstIde::DIGIT_FONT_SIZE_SELECTED); + OH_ArkUI_SwiperDigitIndicator_SetFontWeight(swiperIndicatorStyle, ARKUI_FONT_WEIGHT_W200); + OH_ArkUI_SwiperDigitIndicator_SetSelectedFontWeight(swiperIndicatorStyle, ARKUI_FONT_WEIGHT_W700); + + ArkUI_NumberValue value[ConstIde::NUMBER_1]; + ArkUI_AttributeItem item = {.value = value, .size = ConstIde::NUMBER_1, .object = swiperIndicatorStyle}; + value[ConstIde::NUMBER_0].i32 = ARKUI_SWIPER_INDICATOR_TYPE_DIGIT; // Different enum use different objects + Manager::nodeAPI_->setAttribute(swiper, NODE_SWIPER_INDICATOR, &item); + + OH_ArkUI_SwiperDigitIndicator_Destroy(swiperIndicatorStyle); +} + +void SwiperMaker::GetSwiperIndicatorTypeDigit(ArkUI_NodeHandle swiper) +{ + auto nodeSwiperIndicator = Manager::nodeAPI_->getAttribute(swiper, NODE_SWIPER_INDICATOR); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "NODE_SWIPER_INDICATOR %{public}d", + nodeSwiperIndicator->value[ConstIde::NUMBER_0].i32); + auto swiperIndicatorStyleObject = static_cast(nodeSwiperIndicator->object); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "StartPosition: %{public}f", + OH_ArkUI_SwiperDigitIndicator_GetStartPosition(swiperIndicatorStyleObject)); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "EndPosition: %{public}f", + OH_ArkUI_SwiperDigitIndicator_GetEndPosition(swiperIndicatorStyleObject)); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "TopPosition: %{public}f", + OH_ArkUI_SwiperDigitIndicator_GetBottomPosition(swiperIndicatorStyleObject)); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "BottomPosition: %{public}f", + OH_ArkUI_SwiperDigitIndicator_GetTopPosition(swiperIndicatorStyleObject)); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "FontColor: %{public}x", + OH_ArkUI_SwiperDigitIndicator_GetFontColor(swiperIndicatorStyleObject)); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "SelectedFontColor: %{public}x", + OH_ArkUI_SwiperDigitIndicator_GetSelectedFontColor(swiperIndicatorStyleObject)); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "FontSize: %{public}f", + OH_ArkUI_SwiperDigitIndicator_GetFontSize(swiperIndicatorStyleObject)); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "SelectedFontColor: %{public}f", + OH_ArkUI_SwiperDigitIndicator_GetSelectedFontSize(swiperIndicatorStyleObject)); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "FontWeight: %{public}d", + OH_ArkUI_SwiperDigitIndicator_GetFontWeight(swiperIndicatorStyleObject)); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "SelectedFontWeight: %{public}d", + OH_ArkUI_SwiperDigitIndicator_GetSelectedFontWeight(swiperIndicatorStyleObject)); +} + +void SwiperMaker::SetSwiperAttributeLoop(ArkUI_NodeHandle &swiper) +{ + ArkUI_NumberValue value[1]; + ArkUI_AttributeItem item = {.value=value, .size=1}; + value[0].i32 = 1; // default 1 + Manager::nodeAPI_->setAttribute(swiper, NODE_SWIPER_LOOP, &item); + + auto nodeSwiperLoop = Manager::nodeAPI_->getAttribute(swiper, NODE_SWIPER_LOOP); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_SWIPER_LOOP %{public}d", nodeSwiperLoop->value[0].i32); +} + +void SwiperMaker::SetSwiperAttributeAutoPlay(ArkUI_NodeHandle &swiper) +{ + ArkUI_NumberValue value[2]; + ArkUI_AttributeItem item = {.value=value, .size=2}; + value[0].i32 = 1; // default 0 + value[1].i32 = 0; // default 0 + Manager::nodeAPI_->setAttribute(swiper, NODE_SWIPER_AUTO_PLAY, &item); + + auto nodeSwiperAutoPlay = Manager::nodeAPI_->getAttribute(swiper, NODE_SWIPER_AUTO_PLAY); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_SWIPER_AUTO_PLAY_0 %{public}d", + nodeSwiperAutoPlay->value[0].i32); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_SWIPER_AUTO_PLAY_1 %{public}d", + nodeSwiperAutoPlay->value[1].i32); +} + +void SwiperMaker::SetSwiperAttributeShowIndicator(ArkUI_NodeHandle &swiper) +{ + ArkUI_NumberValue value[1]; + ArkUI_AttributeItem item = {.value = value, .size = 1}; + value[0].i32 = 0; // default 1 + Manager::nodeAPI_->setAttribute(swiper, NODE_SWIPER_SHOW_INDICATOR, &item); + + auto nodeSwiperShowIndicator = Manager::nodeAPI_->getAttribute(swiper, NODE_SWIPER_SHOW_INDICATOR); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_SWIPER_SHOW_INDICATOR %{public}d", + nodeSwiperShowIndicator->value[0].i32); +} + +void SwiperMaker::SetSwiperAttributeInterval(ArkUI_NodeHandle &swiper) +{ + ArkUI_NumberValue value[1]; + ArkUI_AttributeItem item = {.value = value, .size = 1}; + value[0].f32 = ConstIde::NUMBER_3000_MS; + Manager::nodeAPI_->setAttribute(swiper, NODE_SWIPER_INTERVAL, &item); + + auto nodeSwiperInterval = Manager::nodeAPI_->getAttribute(swiper, NODE_SWIPER_INTERVAL); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_SWIPER_INTERVAL %{public}f", + nodeSwiperInterval->value[0].f32); +} + +void SwiperMaker::SetSwiperAttributeVertical(ArkUI_NodeHandle &swiper) +{ + ArkUI_NumberValue value[1]; + ArkUI_AttributeItem item = {.value = value, .size = 1}; + value[0].i32 = 0; // default 0 + Manager::nodeAPI_->setAttribute(swiper, NODE_SWIPER_VERTICAL, &item); + + auto nodeSwiperVertical = Manager::nodeAPI_->getAttribute(swiper, NODE_SWIPER_VERTICAL); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_SWIPER_VERTICAL %{public}d", + nodeSwiperVertical->value[0].i32); +} + +void SwiperMaker::SetSwiperAttributeDuration(ArkUI_NodeHandle &swiper) +{ + ArkUI_NumberValue value[1]; + ArkUI_AttributeItem item = {.value = value, .size = 1}; + value[0].f32 = ConstIde::DURATION; // default 400 + Manager::nodeAPI_->setAttribute(swiper, NODE_SWIPER_DURATION, &item); + + auto nodeSwiperDuration = Manager::nodeAPI_->getAttribute(swiper, NODE_SWIPER_DURATION); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_SWIPER_DURATION %{public}f", + nodeSwiperDuration->value[0].f32); +} + +void SwiperMaker::SetSwiperAttributeCurve(ArkUI_NodeHandle &swiper) +{ + ArkUI_NumberValue value[1]; + ArkUI_AttributeItem item = {.value = value, .size = 1}; + value[0].i32 = ARKUI_CURVE_LINEAR; // default ARKUI_CURVE_LINEAR + Manager::nodeAPI_->setAttribute(swiper, NODE_SWIPER_CURVE, &item); + + auto nodeSwiperCurve = Manager::nodeAPI_->getAttribute(swiper, NODE_SWIPER_CURVE); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_SWIPER_CURVE %{public}d", nodeSwiperCurve->value[0].i32); +} + +void SwiperMaker::SetSwiperAttributeItemSpace(ArkUI_NodeHandle &swiper) +{ + ArkUI_NumberValue value[1]; + ArkUI_AttributeItem item = {.value = value, .size = 1}; + value[0].f32 = ConstIde::NUMBER_5_F; + Manager::nodeAPI_->setAttribute(swiper, NODE_SWIPER_ITEM_SPACE, &item); + + auto nodeSwiperItemSpace = Manager::nodeAPI_->getAttribute(swiper, NODE_SWIPER_ITEM_SPACE); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_SWIPER_ITEM_SPACE %{public}f", + nodeSwiperItemSpace->value[0].f32); +} + +void SwiperMaker::SetSwiperAttributeIndex(ArkUI_NodeHandle &swiper) +{ + ArkUI_NumberValue value[2]; + ArkUI_AttributeItem item = {.value = value, .size = 2}; + value[0].i32 = 1; + value[1].i32 = ARKUI_SWIPER_NO_ANIMATION; + Manager::nodeAPI_->setAttribute(swiper, NODE_SWIPER_INDEX, &item); + + auto nodeSwiperIndex = Manager::nodeAPI_->getAttribute(swiper, NODE_SWIPER_INDEX); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_SWIPER_INDEX %{public}d", nodeSwiperIndex->value[0].i32); +} + +void SwiperMaker::SetSwiperAttributeDisplayCount(ArkUI_NodeHandle &swiper) +{ + ArkUI_NumberValue value[2]; + ArkUI_AttributeItem item = {.value = value, .size = 2}; + value[0].i32 = ConstIde::NUMBER_2; + value[1].i32 = 0; // default 0 + Manager::nodeAPI_->setAttribute(swiper, NODE_SWIPER_DISPLAY_COUNT, &item); + + auto nodeSwiperDisplayCount = Manager::nodeAPI_->getAttribute(swiper, NODE_SWIPER_DISPLAY_COUNT); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_SWIPER_DISPLAY_COUNT_0 %{public}d", + nodeSwiperDisplayCount->value[0].i32); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_SWIPER_DISPLAY_COUNT_1 %{public}i", + nodeSwiperDisplayCount->value[1].i32); +} + +void SwiperMaker::SetSwiperAttributeDisableSwipe(ArkUI_NodeHandle &swiper) +{ + ArkUI_NumberValue value[1]; + ArkUI_AttributeItem item = {.value = value, .size = 1}; + value[0].i32 = 0; // default 0 + Manager::nodeAPI_->setAttribute(swiper, NODE_SWIPER_DISABLE_SWIPE, &item); + + auto nodeSwiperDisableSwipe = Manager::nodeAPI_->getAttribute(swiper, NODE_SWIPER_DISABLE_SWIPE); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_SWIPER_DISABLE_SWIPE %{public}d", + nodeSwiperDisableSwipe->value[0].i32); +} + +void SwiperMaker::SetSwiperAttributeEdgeEffectMode(ArkUI_NodeHandle &swiper) +{ + ArkUI_NumberValue value[1]; + ArkUI_AttributeItem item = {.value = value, .size = 1}; + value[0].i32 = ARKUI_EDGE_EFFECT_SPRING; // default ARKUI_EDGE_EFFECT_SPRING + Manager::nodeAPI_->setAttribute(swiper, NODE_SWIPER_EDGE_EFFECT_MODE, &item); + + auto nodeSwiperEdgeEffectMode = Manager::nodeAPI_->getAttribute(swiper, NODE_SWIPER_EDGE_EFFECT_MODE); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_SWIPER_EDGE_EFFECT_MODE %{public}d", + nodeSwiperEdgeEffectMode->value[0].i32); +} + +ArkUI_NodeAdapterHandle SwiperMaker::creatNodeAdapter() +{ + ArkUI_NodeAdapterHandle adapter = OH_ArkUI_NodeAdapter_Create(); + OH_ArkUI_NodeAdapter_SetTotalNodeCount(adapter, ConstIde::NUMBER_10); + + UserCallback *adapterCallback = new UserCallback(); + adapterCallback->callback = [](void *event) { + auto *adapterEvent = reinterpret_cast(event); + auto type = OH_ArkUI_NodeAdapterEvent_GetType(adapterEvent); + switch (type) { + case NODE_ADAPTER_EVENT_WILL_ATTACH_TO_NODE: { + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "Adapter attach to node."); + break; + } + case NODE_ADAPTER_EVENT_WILL_DETACH_FROM_NODE: { + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "Adapter detach from node."); + break; + } + case NODE_ADAPTER_EVENT_ON_GET_NODE_ID: { + auto index = OH_ArkUI_NodeAdapterEvent_GetItemIndex(adapterEvent); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "On get node id. %{public}d", index); + // ...... + break; + } + case NODE_ADAPTER_EVENT_ON_ADD_NODE_TO_ADAPTER: { + auto index = OH_ArkUI_NodeAdapterEvent_GetItemIndex(adapterEvent); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "On add node to adapter. %{public}d", index); + // ...... + break; + } + case NODE_ADAPTER_EVENT_ON_REMOVE_NODE_FROM_ADAPTER: { + auto index = OH_ArkUI_NodeAdapterEvent_GetItemIndex(adapterEvent); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "On remove node from adapter. %{public}d", index); + // ...... + break; + } + } + }; + OH_ArkUI_NodeAdapter_RegisterEventReceiver(adapter, adapterCallback, [](ArkUI_NodeAdapterEvent *event) { + auto *userData = reinterpret_cast(OH_ArkUI_NodeAdapterEvent_GetUserData(event)); + userData->callback(event); + }); + return adapter; +} + +void SwiperMaker::SetSwiperAttributeNodeAdapter(ArkUI_NodeHandle &swiper) +{ + ArkUI_NodeAdapterHandle adapter = creatNodeAdapter(); + ArkUI_AttributeItem item = {.object = adapter}; + Manager::nodeAPI_->setAttribute(swiper, NODE_SWIPER_NODE_ADAPTER, &item); + + auto elementSize = OH_ArkUI_NodeAdapter_GetTotalNodeCount(adapter); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NodeAdapter_SetTotalNodeCount %{public}d", elementSize); +} + +void SwiperMaker::SetSwiperAttributeCachedCount(ArkUI_NodeHandle &swiper) +{ + ArkUI_NumberValue value[2]; + ArkUI_AttributeItem item = {.value = value, .size = 2}; + value[0].i32 = ConstIde::NUMBER_2; + value[1].i32 = 0; // default 0 + Manager::nodeAPI_->setAttribute(swiper, NODE_SWIPER_CACHED_COUNT, &item); + + auto nodeSwiperCachedCount = Manager::nodeAPI_->getAttribute(swiper, NODE_SWIPER_CACHED_COUNT); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_SWIPER_CACHED_COUNT_0 %{public}d", + nodeSwiperCachedCount->value[0].i32); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_SWIPER_CACHED_COUNT_1 %{public}d", + nodeSwiperCachedCount->value[1].i32); +} + +void SwiperMaker::SetSwiperAttributePrevMargin(ArkUI_NodeHandle &swiper) +{ + ArkUI_NumberValue value[2]; + ArkUI_AttributeItem item = {.value = value, .size = 2}; + value[0].f32 = ConstIde::NUMBER_5_F; + value[1].i32 = 1; // default 0 + Manager::nodeAPI_->setAttribute(swiper, NODE_SWIPER_PREV_MARGIN, &item); + + auto nodeSwiperPrevMargin = Manager::nodeAPI_->getAttribute(swiper, NODE_SWIPER_PREV_MARGIN); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_SWIPER_PREV_MARGIN_0 %{public}f", + nodeSwiperPrevMargin->value[0].f32); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_SWIPER_PREV_MARGIN_1 %{public}d", + nodeSwiperPrevMargin->value[1].i32); +} + +void SwiperMaker::SetSwiperAttributeNextMargin(ArkUI_NodeHandle &swiper) +{ + ArkUI_NumberValue value[2]; + ArkUI_AttributeItem item = {.value = value, .size = 2}; + value[0].f32 = ConstIde::NUMBER_5_F; + value[1].i32 = 1; // default 0 + Manager::nodeAPI_->setAttribute(swiper, NODE_SWIPER_NEXT_MARGIN, &item); + + auto nodeSwiperNextMargin = Manager::nodeAPI_->getAttribute(swiper, NODE_SWIPER_NEXT_MARGIN); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_SWIPER_NEXT_MARGIN_0 %{public}f", + nodeSwiperNextMargin->value[0].f32); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_SWIPER_NEXT_MARGIN_1 %{public}d", + nodeSwiperNextMargin->value[1].i32); +} + +void SwiperMaker::SetSwiperAttributeNestedScroll(ArkUI_NodeHandle &swiper) +{ + ArkUI_NumberValue value[1]; + ArkUI_AttributeItem item = {.value = value, .size = 1}; + value[0].i32 = ARKUI_SWIPER_NESTED_SRCOLL_SELF_ONLY; // default ARKUI_SWIPER_NESTED_SRCOLL_SELF_ONLY + Manager::nodeAPI_->setAttribute(swiper, NODE_SWIPER_NESTED_SCROLL, &item); + + auto nodeSwiperNestedScroll = Manager::nodeAPI_->getAttribute(swiper, NODE_SWIPER_NESTED_SCROLL); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_SWIPER_NESTED_SCROLL %{public}d", + nodeSwiperNestedScroll->value[0].i32); +} + +void SwiperMaker::SetSwiperAttributeSwipeToIndex(ArkUI_NodeHandle &swiper) +{ + ArkUI_NumberValue value[2]; + ArkUI_AttributeItem item = {.value = value, .size = 2}; + value[0].i32 = 1; + value[1].i32 = 1; // default 0 + Manager::nodeAPI_->setAttribute(swiper, NODE_SWIPER_SWIPE_TO_INDEX, &item); +} + +void SwiperMaker::SetSwiperAttributeIndicatorInteractive(ArkUI_NodeHandle &swiper) +{ + ArkUI_NumberValue value[1]; + ArkUI_AttributeItem item = {.value = value, .size = 1}; + value[0].i32 = 1; // default 1 + Manager::nodeAPI_->setAttribute(swiper, NODE_SWIPER_INDICATOR_INTERACTIVE, &item); + + auto nodeSwiperIndicatorInteractive = Manager::nodeAPI_->getAttribute(swiper, NODE_SWIPER_INDICATOR_INTERACTIVE); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_SWIPER_INDICATOR_INTERACTIVE %{public}d", + nodeSwiperIndicatorInteractive->value[0].i32); +} + +void SwiperMaker::SetSwiperAttributePageFlipMode(ArkUI_NodeHandle &swiper) +{ + ArkUI_NumberValue value[1]; + ArkUI_AttributeItem item = {.value = value, .size = 1}; + value[0].i32 = ARKUI_PAGE_FLIP_MODE_SINGLE; // ARKUI_PAGE_FLIP_MODE_CONTINUOUS or ARKUI_PAGE_FLIP_MODE_SINGLE + Manager::nodeAPI_->setAttribute(swiper, NODE_SWIPER_PAGE_FLIP_MODE, &item); + + auto nodeSwiperPageFlipMode = Manager::nodeAPI_->getAttribute(swiper, NODE_SWIPER_PAGE_FLIP_MODE); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_SWIPER_PAGE_FLIP_MODE %{public}d", + nodeSwiperPageFlipMode->value[0].i32); +} + +void SwiperMaker::SetSwiperAttributeAutoFill(ArkUI_NodeHandle &swiper) +{ + ArkUI_NumberValue value[2]; + ArkUI_AttributeItem item = {.value = value, .size = 2}; + value[0].f32 = ConstIde::NUMBER_400_F; + value[1].i32 = 1; // default 0 + Manager::nodeAPI_->setAttribute(swiper, NODE_SWIPER_AUTO_FILL, &item); + + auto nodeSwiperAutoFill = Manager::nodeAPI_->getAttribute(swiper, NODE_SWIPER_AUTO_FILL); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_SWIPER_AUTO_FILL_0 %{public}f", + nodeSwiperAutoFill->value[0].f32); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_SWIPER_AUTO_FILL_1 %{public}d", + nodeSwiperAutoFill->value[1].i32); +} + +void SwiperMaker::SetSwiperAttributeMaintainVisibleContentPosition(ArkUI_NodeHandle &swiper) +{ + ArkUI_NumberValue value[1]; + ArkUI_AttributeItem item = {.value = value, .size = 1}; + value[0].i32 = 1; // default 0 + Manager::nodeAPI_->setAttribute(swiper, NODE_SWIPER_MAINTAIN_VISIBLE_CONTENT_POSITION, &item); + + auto MaintainVisibleContentPosition = + Manager::nodeAPI_->getAttribute(swiper, NODE_SWIPER_MAINTAIN_VISIBLE_CONTENT_POSITION); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_SWIPER_MAINTAIN_VISIBLE_CONTENT_POSITION %{public}d", + MaintainVisibleContentPosition->value[0].i32); +} + +void SwiperMaker::SetSwiperEvent(ArkUI_NodeHandle &swiper) +{ + Manager::nodeAPI_->registerNodeEvent(swiper, NODE_SWIPER_EVENT_ON_CHANGE, ON_CHANGE, nullptr); + Manager::nodeAPI_->registerNodeEvent(swiper, NODE_SWIPER_EVENT_ON_ANIMATION_START, ON_ANIMATION_START, nullptr); + Manager::nodeAPI_->registerNodeEvent(swiper, NODE_SWIPER_EVENT_ON_ANIMATION_END, ON_ANIMATION_END, nullptr); + Manager::nodeAPI_->registerNodeEvent(swiper, NODE_SWIPER_EVENT_ON_GESTURE_SWIPE, ON_GESTURE_SWIPE, nullptr); + Manager::nodeAPI_->registerNodeEvent(swiper, NODE_SWIPER_EVENT_ON_CONTENT_DID_SCROLL, ON_CONTENT_DID_SCROLL, + nullptr); + Manager::nodeAPI_->registerNodeEvent(swiper, NODE_SWIPER_EVENT_ON_SELECTED, ON_SELECTED, nullptr); + Manager::nodeAPI_->registerNodeEvent(swiper, NODE_SWIPER_EVENT_ON_UNSELECTED, ON_UNSELECTED, nullptr); + Manager::nodeAPI_->registerNodeEvent(swiper, NODE_SWIPER_EVENT_ON_CONTENT_WILL_SCROLL, ON_CONTENT_WILL_SCROLL, + nullptr); +// Manager::nodeAPI_->registerNodeEvent(swiper, NODE_SWIPER_EVENT_ON_SCROLL_STATE_CHANGED, ON_SCROLL_STATE_CHANGED, +// nullptr); + Manager::nodeAPI_->registerNodeEventReceiver([](ArkUI_NodeEvent *event) { + auto eventId = OH_ArkUI_NodeEvent_GetTargetId(event); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "eventID is %{public}d", eventId); + if (eventId == ON_CHANGE) { + EventOnChange(event); + } else if (eventId == ON_ANIMATION_START) { + EventOnAnimationStart(event); + } else if (eventId == ON_ANIMATION_END) { + EventOnAnimationEnd(event); + } else if (eventId == ON_GESTURE_SWIPE) { + EventOnGestureSwipe(event); + } else if (eventId == ON_CONTENT_DID_SCROLL) { + EventOnContentDidScroll(event); + } else if (eventId == ON_SELECTED) { + EventOnSelected(event); + } else if (eventId == ON_UNSELECTED) { + EventOnUnselected(event); + } else if (eventId == ON_CONTENT_WILL_SCROLL) { + EventOnContentWillScroll(event); + } else if (eventId == ON_SCROLL_STATE_CHANGED) { + EventOnScrollStateChanged(event); + } + }); +} + +void SwiperMaker::EventOnChange(ArkUI_NodeEvent *event) +{ + auto componentEvent = OH_ArkUI_NodeEvent_GetNodeComponentEvent(event); + if (componentEvent) { + auto index = componentEvent->data[0].i32; + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "index is %{public}d", index); + } +} + +void SwiperMaker::EventOnAnimationStart(ArkUI_NodeEvent *event) +{ + auto componentEvent = OH_ArkUI_NodeEvent_GetNodeComponentEvent(event); + if (componentEvent) { + auto currIdx = componentEvent->data[0].i32; // index of the currently-displayed item + auto targetIdx = componentEvent->data[1].i32; // index of the item the animation is moving to + auto currOffset = componentEvent->data[2].f32; // current item's displacement from Swiper start + auto targetOffset = componentEvent->data[3].f32; // target item's displacement from Swiper start + auto velocity = componentEvent->data[4].f32; // velocity when finger lifts (px/s) + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "currIdx is %{public}d", currIdx); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "targetIdx is %{public}d", targetIdx); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "currOffset is %{public}f", currOffset); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "targetOffset is %{public}f", targetOffset); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "velocity is %{public}f", velocity); + } +} + +void SwiperMaker::EventOnAnimationEnd(ArkUI_NodeEvent *event) +{ + auto componentEvent = OH_ArkUI_NodeEvent_GetNodeComponentEvent(event); + if (componentEvent) { + auto currentIndex = componentEvent->data[0].i32; // index of the currently-displayed item + auto currentOffset = componentEvent->data[1].f32; // current item's displacement from Swiper start + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "currentIndex is %{public}d", currentIndex); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "currentOffset is %{public}f", currentOffset); + } +} + +void SwiperMaker::EventOnGestureSwipe(ArkUI_NodeEvent *event) +{ + auto componentEvent = OH_ArkUI_NodeEvent_GetNodeComponentEvent(event); + if (componentEvent) { + auto currentIndex = componentEvent->data[0].i32; // index of the currently-displayed item + auto currentOffset = componentEvent->data[1].f32; // current item's displacement from Swiper start + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "currentIndex is %{public}d", currentIndex); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "currentOffset is %{public}f", currentOffset); + } +} + +void SwiperMaker::EventOnContentDidScroll(ArkUI_NodeEvent *event) +{ + auto componentEvent = OH_ArkUI_NodeEvent_GetNodeComponentEvent(event); + if (componentEvent) { + auto selectedIdx = componentEvent->data[0].i32; // Swiper selected index (matches onChange index) + auto pageIdx = componentEvent->data[1].i32; // index of a page visible in viewport + auto offsetRatio = componentEvent->data[2].f32; // page shift ratio vs. selected-page start (0 = aligned) + auto pageSize = componentEvent->data[3].f32; // page length along Swiper main axis + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "selectedIdx is %{public}d", selectedIdx); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "pageIdx is %{public}d", pageIdx); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "offsetRatio is %{public}f", offsetRatio); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "pageSize is %{public}f", pageSize); + } +} + +void SwiperMaker::EventOnSelected(ArkUI_NodeEvent *event) +{ + auto componentEvent = OH_ArkUI_NodeEvent_GetNodeComponentEvent(event); + if (componentEvent) { + auto selectedIndex = componentEvent->data[0].i32; // index of the currently selected item + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "selectedIndex is %{public}d", selectedIndex); + } +} + +void SwiperMaker::EventOnUnselected(ArkUI_NodeEvent *event) +{ + auto componentEvent = OH_ArkUI_NodeEvent_GetNodeComponentEvent(event); + if (componentEvent) { + auto unselectedIndex = componentEvent->data[0].i32; // index of the currently unselected item + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "unselectedIndex is %{public}d", unselectedIndex); + } +} + +void SwiperMaker::EventOnContentWillScroll(ArkUI_NodeEvent *event) +{ + auto componentEvent = OH_ArkUI_NodeEvent_GetNodeComponentEvent(event); + if (componentEvent) { + auto currIdx = componentEvent->data[0].i32; // index of currently-displayed element + auto targetIdx = componentEvent->data[1].i32; // index of element being animated to + auto frameDx = + componentEvent->data[2].f32; // per-frame slide offset: + = backward (e.g. 1→0), − = forward (e.g. 0→1) + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "currIdx is %{public}d", currIdx); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "targetIdx is %{public}d", targetIdx); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "frameDx is %{public}f", frameDx); + } +} + +void SwiperMaker::EventOnScrollStateChanged(ArkUI_NodeEvent *event) +{ + auto componentEvent = OH_ArkUI_NodeEvent_GetNodeComponentEvent(event); + if (componentEvent) { + auto scrollState = componentEvent->data[0].i32; // Current scroll status + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "scrollState is %{public}d", scrollState); + } +} + +void SwiperMaker::SetSwiperAttribute(ArkUI_NodeHandle &swiper) +{ + SetSwiperAttributeLoop(swiper); + SetSwiperAttributeAutoPlay(swiper); + SetSwiperAttributeShowIndicator(swiper); + SetSwiperAttributeInterval(swiper); + SetSwiperAttributeVertical(swiper); + SetSwiperAttributeDuration(swiper); + SetSwiperAttributeCurve(swiper); + SetSwiperAttributeItemSpace(swiper); + SetSwiperAttributeIndex(swiper); + SetSwiperAttributeDisplayCount(swiper); + SetSwiperAttributeDisableSwipe(swiper); + SetSwiperAttributeEdgeEffectMode(swiper); + SetSwiperAttributeNodeAdapter(swiper); + SetSwiperAttributeCachedCount(swiper); + SetSwiperAttributePrevMargin(swiper); + SetSwiperAttributeNextMargin(swiper); + SetSwiperAttributeNestedScroll(swiper); + SetSwiperAttributeSwipeToIndex(swiper); + SetSwiperAttributeIndicatorInteractive(swiper); + SetSwiperAttributePageFlipMode(swiper); + SetSwiperAttributeAutoFill(swiper); + SetSwiperAttributeMaintainVisibleContentPosition(swiper); + SetSwiperEvent(swiper); +} + +ArkUI_NodeHandle SwiperMaker::createSwiperPage() +{ + static ArkUI_NodeHandle swiper1 = Manager::nodeAPI_->createNode(ARKUI_NODE_SWIPER); + static ArkUI_NodeHandle swiper2 = Manager::nodeAPI_->createNode(ARKUI_NODE_SWIPER); + static ArkUI_NodeHandle swiper3 = Manager::nodeAPI_->createNode(ARKUI_NODE_SWIPER); + static ArkUI_NodeHandle swiper4 = Manager::nodeAPI_->createNode(ARKUI_NODE_SWIPER); + ArkUI_NodeHandle scroll = Manager::nodeAPI_->createNode(ARKUI_NODE_SCROLL); + BaseUtils::SetNodeBackGroundColor(scroll, ConstIde::BACKGROUND_COLOR); // 设置节点背景颜色为淡灰色 + ArkUI_NodeHandle column = Manager::nodeAPI_->createNode(ARKUI_NODE_COLUMN); + SwiperMaker::createSwiperNode(swiper1); + SwiperMaker::SetSwiperArrowStyle(swiper1); + SwiperMaker::GetSwiperArrowStyle(swiper1); + SwiperMaker::createSwiperNode(swiper2); + SwiperMaker::SetSwiperIndicatorTypeDot(swiper2); + SwiperMaker::GetSwiperIndicatorTypeDot(swiper2); + SwiperMaker::createSwiperNode(swiper3); + SwiperMaker::SetSwiperIndicatorTypeDigit(swiper3); + SwiperMaker::GetSwiperIndicatorTypeDigit(swiper3); + SwiperMaker::createSwiperNode(swiper4); + SwiperMaker::SetSwiperAttribute(swiper4); + Manager::nodeAPI_->addChild(column, swiper1); + Manager::nodeAPI_->addChild(column, swiper2); + Manager::nodeAPI_->addChild(column, swiper3); + Manager::nodeAPI_->addChild(column, swiper4); + Manager::nodeAPI_->addChild(scroll, column); + return scroll; +} \ No newline at end of file diff --git a/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/SwiperMaker.h b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/SwiperMaker.h new file mode 100644 index 000000000..c2dc80694 --- /dev/null +++ b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/SwiperMaker.h @@ -0,0 +1,90 @@ +/* + * 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 SWIPER_MAKER_H +#define SWIPER_MAKER_H + +#include "manager.h" +#include + + +class SwiperMaker { +public: + SwiperMaker(){}; + ~SwiperMaker(){}; + static void createSwiperNode(ArkUI_NodeHandle &swiper); + static void SetSwiperArrowStyle(ArkUI_NodeHandle &swiper); + static void GetSwiperArrowStyle(ArkUI_NodeHandle swiper); + static void SetSwiperIndicatorTypeDot(ArkUI_NodeHandle &swiper); + static void GetSwiperIndicatorTypeDot(ArkUI_NodeHandle swiper); + static void SetSwiperIndicatorTypeDigit(ArkUI_NodeHandle &swiper); + static void GetSwiperIndicatorTypeDigit(ArkUI_NodeHandle swiper); + static void SetSwiperAttributeLoop(ArkUI_NodeHandle &swiper); + static void SetSwiperAttributeAutoPlay(ArkUI_NodeHandle &swiper); + static void SetSwiperAttributeShowIndicator(ArkUI_NodeHandle &swiper); + static void SetSwiperAttributeInterval(ArkUI_NodeHandle &swiper); + static void SetSwiperAttributeVertical(ArkUI_NodeHandle &swiper); + static void SetSwiperAttributeDuration(ArkUI_NodeHandle &swiper); + static void SetSwiperAttributeCurve(ArkUI_NodeHandle &swiper); + static void SetSwiperAttributeItemSpace(ArkUI_NodeHandle &swiper); + static void SetSwiperAttributeIndex(ArkUI_NodeHandle &swiper); + static void SetSwiperAttributeDisplayCount(ArkUI_NodeHandle &swiper); + static void SetSwiperAttributeDisableSwipe(ArkUI_NodeHandle &swiper); + static void SetSwiperAttributeEdgeEffectMode(ArkUI_NodeHandle &swiper); + static ArkUI_NodeAdapterHandle creatNodeAdapter(); + static void SetSwiperAttributeNodeAdapter(ArkUI_NodeHandle &swiper); + static void SetSwiperAttributeCachedCount(ArkUI_NodeHandle &swiper); + static void SetSwiperAttributePrevMargin(ArkUI_NodeHandle &swiper); + static void SetSwiperAttributeNextMargin(ArkUI_NodeHandle &swiper); + static void SetSwiperAttributeNestedScroll(ArkUI_NodeHandle &swiper); + static void SetSwiperAttributeSwipeToIndex(ArkUI_NodeHandle &swiper); + static void SetSwiperAttributeIndicatorInteractive(ArkUI_NodeHandle &swiper); + static void SetSwiperAttributePageFlipMode(ArkUI_NodeHandle &swiper); + static void SetSwiperAttributeAutoFill(ArkUI_NodeHandle &swiper); + static void SetSwiperAttributeMaintainVisibleContentPosition(ArkUI_NodeHandle &swiper); + static void SetSwiperAttribute(ArkUI_NodeHandle &swiper); + static void EventOnChange(ArkUI_NodeEvent *event); + static void EventOnAnimationStart(ArkUI_NodeEvent *event); + static void EventOnAnimationEnd(ArkUI_NodeEvent *event); + static void EventOnGestureSwipe(ArkUI_NodeEvent *event); + static void EventOnContentDidScroll(ArkUI_NodeEvent *event); + static void EventOnSelected(ArkUI_NodeEvent *event); + static void EventOnUnselected(ArkUI_NodeEvent *event); + static void EventOnContentWillScroll(ArkUI_NodeEvent *event); + static void EventOnScrollStateChanged(ArkUI_NodeEvent *event); + + static void SetSwiperEvent(ArkUI_NodeHandle &swiper); + + static ArkUI_NodeHandle createSwiperPage(); + + struct UserCallback { + std::function callback; + UserCallback(){}; + }; + + typedef enum { + ON_CHANGE = 0, + ON_ANIMATION_START = 1, + ON_ANIMATION_END = 2, + ON_GESTURE_SWIPE = 3, + ON_CONTENT_DID_SCROLL = 4, + ON_SELECTED = 5, + ON_UNSELECTED = 6, + ON_CONTENT_WILL_SCROLL = 7, + ON_SCROLL_STATE_CHANGED = 8, + } SwiperEventId; +}; + +#endif // NATIVE_TYPE_SAMPLE_SWIPERMAKER_H diff --git a/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/TextMaker.h b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/TextMaker.h index d6e24e3a9..c380cd668 100644 --- a/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/TextMaker.h +++ b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/TextMaker.h @@ -13,8 +13,8 @@ * limitations under the License. */ -#ifndef NATIVE_TYPE_SAMPLE_SWIPERMAKER_H -#define NATIVE_TYPE_SAMPLE_SWIPERMAKER_H +#ifndef TEXT_MAKER_H +#define TEXT_MAKER_H #include "manager.h" diff --git a/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/manager.cpp b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/manager.cpp index b7abd35af..ed2671a00 100644 --- a/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/manager.cpp +++ b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/manager.cpp @@ -15,6 +15,7 @@ #include "manager.h" #include "TextMaker.h" +#include "SwiperMaker.h" #include "baseUtils.h" #include "napi/native_api.h" #include @@ -34,6 +35,33 @@ Manager Manager::manager_; ArkUI_NativeNodeAPI_1 *Manager::nodeAPI_ = reinterpret_cast( OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1")); +napi_value Manager::CreateSwiperNativeNode(napi_env env, napi_callback_info info) +{ + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "CreateNativeNode BEGIN"); + if ((env == nullptr) || (info == nullptr)) { + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "CreateNativeNode env or info is null"); + return nullptr; + } + size_t argCnt = ConstIde::NUMBER_1; + napi_value args[ConstIde::NUMBER_1] = {nullptr}; + if (napi_get_cb_info(env, info, &argCnt, args, nullptr, nullptr) != napi_ok) { + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "CreateNativeNode napi_get_cb_info failed"); + } + + ArkUI_NodeContentHandle nodeContentHandle = nullptr; + + OH_ArkUI_GetNodeContentFromNapiValue(env, args[ConstIde::NUMBER_0], &nodeContentHandle); + + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "OH_ArkUI_GetBasicNodeAPI after"); + if (nodeAPI_ != nullptr) { + if (nodeAPI_->createNode != nullptr && nodeAPI_->addChild != nullptr) { + ArkUI_NodeHandle testNode = SwiperMaker::createSwiperPage(); + OH_ArkUI_NodeContent_AddNode(nodeContentHandle, testNode); + } + } + return nullptr; +} + napi_value Manager::CreateNativeTextNode(napi_env env, napi_callback_info info) { OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "CreateNativeNode BEGIN"); diff --git a/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/manager.h b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/manager.h index f152ab2f7..c48bca628 100644 --- a/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/manager.h +++ b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/manager.h @@ -32,6 +32,7 @@ public: ~Manager(){}; static napi_value CreateNativeTextNode(napi_env env, napi_callback_info info); + static napi_value CreateSwiperNativeNode(napi_env env, napi_callback_info info); private: static Manager manager_; diff --git a/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/napi_init.cpp b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/napi_init.cpp index bd65cea63..137fd9a4d 100644 --- a/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/napi_init.cpp +++ b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/napi_init.cpp @@ -28,6 +28,8 @@ static napi_value Init(napi_env env, napi_value exports) napi_property_descriptor desc[] = { {"createNativeTextNode", nullptr, Manager::CreateNativeTextNode, nullptr, nullptr, nullptr, napi_default, nullptr}, + {"createSwiperNativeNode", nullptr, Manager::CreateSwiperNativeNode, nullptr, nullptr, nullptr, napi_default, + nullptr}, // 参考新增其他createNative方法和Maker类 }; diff --git a/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/types/libentry/Index.d.ts b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/types/libentry/Index.d.ts index e45a977ac..53b54fda2 100644 --- a/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/types/libentry/Index.d.ts +++ b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/types/libentry/Index.d.ts @@ -13,4 +13,5 @@ * limitations under the License. */ -export const createNativeTextNode: (content: Object) =>void; \ No newline at end of file +export const createNativeTextNode: (content: Object) =>void; +export const createSwiperNativeNode: (content: Object) =>void; \ No newline at end of file diff --git a/ArkUIKit/NativeNodeBaseSample/entry/src/main/ets/pages/Index.ets b/ArkUIKit/NativeNodeBaseSample/entry/src/main/ets/pages/Index.ets index bc0367fc4..33921092f 100644 --- a/ArkUIKit/NativeNodeBaseSample/entry/src/main/ets/pages/Index.ets +++ b/ArkUIKit/NativeNodeBaseSample/entry/src/main/ets/pages/Index.ets @@ -26,6 +26,7 @@ struct MenuIndex { private items: ListCategories[] = [ { title: 'Text', url: 'pages/page_text' }, + { title: 'Swiper', url: 'pages/page_swiper' }, { title: 'add your router', url: '' }, ]; diff --git a/ArkUIKit/NativeNodeBaseSample/entry/src/main/ets/pages/page_swiper.ets b/ArkUIKit/NativeNodeBaseSample/entry/src/main/ets/pages/page_swiper.ets new file mode 100644 index 000000000..16941e60a --- /dev/null +++ b/ArkUIKit/NativeNodeBaseSample/entry/src/main/ets/pages/page_swiper.ets @@ -0,0 +1,34 @@ +/* + * 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 Napi from 'libentry.so'; +import { NodeContent } from '@kit.ArkUI'; + +@Entry +@Component +struct Index { + private nodeContent = new NodeContent(); + aboutToAppear() { + // 通过C-API创建节点,并添加到管理器nodeContent上 + Napi.createSwiperNativeNode(this.nodeContent); + } + build() { + Column() { + ContentSlot(this.nodeContent) + } + .width('100%') + .height('100%') + } +} diff --git a/ArkUIKit/NativeNodeBaseSample/entry/src/main/resources/base/profile/main_pages.json b/ArkUIKit/NativeNodeBaseSample/entry/src/main/resources/base/profile/main_pages.json index 17e8e7cb8..d6193374a 100644 --- a/ArkUIKit/NativeNodeBaseSample/entry/src/main/resources/base/profile/main_pages.json +++ b/ArkUIKit/NativeNodeBaseSample/entry/src/main/resources/base/profile/main_pages.json @@ -1,6 +1,7 @@ { "src": [ "pages/Index", - "pages/page_text" + "pages/page_text", + "pages/page_swiper" ] } diff --git a/ArkUIKit/NativeNodeBaseSample/log.txt b/ArkUIKit/NativeNodeBaseSample/log.txt deleted file mode 100644 index 1a39aab2c..000000000 --- a/ArkUIKit/NativeNodeBaseSample/log.txt +++ /dev/null @@ -1,642 +0,0 @@ -16:01:36:072 log task queue not empty -16:01:36:073 log task size: 1 -16:01:36:073 log before pop task size: 1 -16:01:36:074 log after task size: 0 -16:01:36:386 log task queue not empty -16:01:36:386 log task size: 1 -16:01:36:386 log before pop task size: 1 -16:01:36:386 log after task size: 0 -16:01:36:576 log timer task size: 1 -16:01:36:648 log task queue not empty -16:01:36:649 log task size: 1 -16:01:36:649 log before pop task size: 1 -16:01:36:649 log after task size: 0 -16:01:36:893 log timer task size: 1 -16:01:37:160 log timer task size: 1 -16:01:37:947 log task queue not empty -16:01:37:948 log task size: 1 -16:01:37:948 log before pop task size: 1 -16:01:37:948 log after task size: 0 -16:01:38:106 log task queue not empty -16:01:38:107 log task size: 1 -16:01:38:107 log before pop task size: 1 -16:01:38:107 log after task size: 0 -16:01:38:458 log timer task size: 1 -16:01:38:616 log timer task size: 1 -16:01:38:728 log task queue not empty -16:01:38:729 log task size: 1 -16:01:38:729 log before pop task size: 1 -16:01:38:729 log after task size: 0 -16:01:39:232 log timer task size: 1 -16:06:36:691 log task queue not empty -16:06:36:691 log task size: 1 -16:06:36:691 log before pop task size: 1 -16:06:36:692 log after task size: 0 -16:06:36:875 log task queue not empty -16:06:36:876 log task size: 1 -16:06:36:877 log before pop task size: 1 -16:06:36:877 log after task size: 0 -16:06:36:997 log task queue not empty -16:06:36:997 log task size: 1 -16:06:36:997 log before pop task size: 1 -16:06:36:998 log after task size: 0 -16:06:37:139 log task queue not empty -16:06:37:140 log task size: 1 -16:06:37:140 log before pop task size: 1 -16:06:37:140 log after task size: 0 -16:06:37:203 log timer task size: 1 -16:06:37:275 log task queue not empty -16:06:37:276 log task size: 1 -16:06:37:276 log before pop task size: 1 -16:06:37:276 log after task size: 0 -16:06:37:394 log timer task size: 1 -16:06:37:503 log timer task size: 1 -16:06:37:579 log task queue not empty -16:06:37:579 log task size: 1 -16:06:37:579 log before pop task size: 1 -16:06:37:580 log after task size: 0 -16:06:37:644 log timer task size: 1 -16:06:37:785 log timer task size: 1 -16:06:38:086 log timer task size: 1 -16:06:38:196 log task queue not empty -16:06:38:196 log task size: 1 -16:06:38:196 log before pop task size: 1 -16:06:38:196 log after task size: 0 -16:06:38:440 log task queue not empty -16:06:38:441 log task size: 1 -16:06:38:442 log before pop task size: 1 -16:06:38:443 log after task size: 0 -16:06:38:666 log task queue not empty -16:06:38:666 log task size: 1 -16:06:38:667 log before pop task size: 1 -16:06:38:667 log after task size: 0 -16:06:38:702 log timer task size: 1 -16:06:38:874 log task queue not empty -16:06:38:874 log task size: 1 -16:06:38:874 log before pop task size: 1 -16:06:38:874 log after task size: 0 -16:06:38:953 log timer task size: 1 -16:06:39:174 log timer task size: 1 -16:06:39:377 log timer task size: 1 -16:06:42:082 log task queue not empty -16:06:42:082 log task size: 1 -16:06:42:083 log before pop task size: 1 -16:06:42:083 log after task size: 0 -16:06:42:201 log task queue not empty -16:06:42:201 log task size: 1 -16:06:42:201 log before pop task size: 1 -16:06:42:202 log after task size: 0 -16:06:42:381 log task queue not empty -16:06:42:381 log task size: 1 -16:06:42:381 log before pop task size: 1 -16:06:42:382 log after task size: 0 -16:06:42:514 log task queue not empty -16:06:42:514 log task size: 1 -16:06:42:515 log before pop task size: 1 -16:06:42:515 log after task size: 0 -16:06:42:598 log timer task size: 1 -16:06:42:654 log task queue not empty -16:06:42:654 log task size: 1 -16:06:42:654 log before pop task size: 1 -16:06:42:654 log after task size: 0 -16:06:42:707 log timer task size: 1 -16:06:42:898 log timer task size: 1 -16:06:42:954 log task queue not empty -16:06:42:954 log task size: 1 -16:06:42:954 log before pop task size: 1 -16:06:42:954 log after task size: 0 -16:06:43:023 log timer task size: 1 -16:06:43:162 log timer task size: 1 -16:06:43:464 log timer task size: 1 -16:06:44:098 log task queue not empty -16:06:44:099 log task size: 1 -16:06:44:099 log before pop task size: 1 -16:06:44:099 log after task size: 0 -16:06:44:280 log task queue not empty -16:06:44:280 log task size: 1 -16:06:44:280 log before pop task size: 1 -16:06:44:281 log after task size: 0 -16:06:44:493 log task queue not empty -16:06:44:494 log task size: 1 -16:06:44:494 log before pop task size: 1 -16:06:44:494 log after task size: 0 -16:06:44:612 log timer task size: 1 -16:06:44:692 log task queue not empty -16:06:44:693 log task size: 1 -16:06:44:693 log before pop task size: 1 -16:06:44:693 log after task size: 0 -16:06:44:785 log timer task size: 1 -16:06:45:006 log timer task size: 1 -16:06:45:198 log timer task size: 1 -16:06:47:624 log task queue not empty -16:06:47:624 log task size: 1 -16:06:47:624 log before pop task size: 1 -16:06:47:624 log after task size: 0 -16:06:47:774 log task queue not empty -16:06:47:774 log task size: 1 -16:06:47:774 log before pop task size: 1 -16:06:47:774 log after task size: 0 -16:06:47:921 log task queue not empty -16:06:47:921 log task size: 1 -16:06:47:921 log before pop task size: 1 -16:06:47:922 log after task size: 0 -16:06:48:071 log task queue not empty -16:06:48:072 log task size: 1 -16:06:48:072 log before pop task size: 1 -16:06:48:072 log after task size: 0 -16:06:48:139 log timer task size: 1 -16:06:48:233 log task queue not empty -16:06:48:234 log task size: 1 -16:06:48:234 log before pop task size: 1 -16:06:48:234 log after task size: 0 -16:06:48:278 log timer task size: 1 -16:06:48:435 log timer task size: 1 -16:06:48:493 log task queue not empty -16:06:48:493 log task size: 1 -16:06:48:493 log before pop task size: 1 -16:06:48:494 log after task size: 0 -16:06:48:579 log timer task size: 1 -16:06:48:737 log timer task size: 1 -16:06:49:008 log timer task size: 1 -16:06:49:050 log task queue not empty -16:06:49:050 log task size: 1 -16:06:49:050 log before pop task size: 1 -16:06:49:050 log after task size: 0 -16:06:49:243 log task queue not empty -16:06:49:243 log task size: 1 -16:06:49:246 log before pop task size: 1 -16:06:49:246 log after task size: 0 -16:06:49:488 log task queue not empty -16:06:49:488 log task size: 1 -16:06:49:489 log before pop task size: 1 -16:06:49:489 log after task size: 0 -16:06:49:561 log timer task size: 1 -16:06:49:749 log timer task size: 1 -16:06:49:784 log task queue not empty -16:06:49:784 log task size: 1 -16:06:49:785 log before pop task size: 1 -16:06:49:785 log after task size: 0 -16:06:50:002 log timer task size: 1 -16:06:50:288 log timer task size: 1 -16:08:45:925 log task queue not empty -16:08:45:925 log task size: 1 -16:08:45:926 log before pop task size: 1 -16:08:45:926 log after task size: 0 -16:08:46:431 log timer task size: 1 -16:11:07:398 log task queue not empty -16:11:07:399 log task size: 1 -16:11:07:399 log before pop task size: 1 -16:11:07:399 log after task size: 0 -16:11:07:903 log timer task size: 1 -16:11:08:516 log task queue not empty -16:11:08:516 log task size: 1 -16:11:08:517 log before pop task size: 1 -16:11:08:517 log after task size: 0 -16:11:09:019 log timer task size: 1 -16:11:16:662 log task queue not empty -16:11:16:662 log task size: 1 -16:11:16:662 log before pop task size: 1 -16:11:16:663 log after task size: 0 -16:11:16:665 log task queue not empty -16:11:16:665 log task size: 1 -16:11:16:665 log before pop task size: 1 -16:11:16:665 log after task size: 0 -16:11:16:871 log task queue not empty -16:11:16:871 log task size: 1 -16:11:16:872 log before pop task size: 1 -16:11:16:872 log after task size: 0 -16:11:17:110 log task queue not empty -16:11:17:110 log task size: 1 -16:11:17:111 log before pop task size: 1 -16:11:17:111 log after task size: 0 -16:11:17:169 log timer task size: 1 -16:11:17:318 log task queue not empty -16:11:17:318 log task size: 1 -16:11:17:319 log before pop task size: 1 -16:11:17:319 log after task size: 0 -16:11:17:373 log timer task size: 1 -16:11:17:626 log timer task size: 1 -16:11:17:830 log timer task size: 1 -16:11:24:501 log task queue not empty -16:11:24:501 log task size: 1 -16:11:24:501 log before pop task size: 1 -16:11:24:501 log after task size: 0 -16:11:25:015 log timer task size: 1 -16:11:26:299 log task queue not empty -16:11:26:299 log task size: 1 -16:11:26:299 log before pop task size: 1 -16:11:26:300 log after task size: 0 -16:11:26:813 log timer task size: 1 -16:11:28:189 log task queue not empty -16:11:28:189 log task size: 1 -16:11:28:190 log before pop task size: 1 -16:11:28:190 log after task size: 0 -16:11:28:697 log timer task size: 1 -16:11:30:930 log task queue not empty -16:11:30:930 log task size: 1 -16:11:30:930 log before pop task size: 1 -16:11:30:931 log after task size: 0 -16:11:31:431 log timer task size: 1 -16:11:33:229 log task queue not empty -16:11:33:230 log task size: 1 -16:11:33:230 log before pop task size: 1 -16:11:33:230 log after task size: 0 -16:11:33:734 log timer task size: 1 -16:13:21:847 log task queue not empty -16:13:21:848 log task size: 1 -16:13:21:848 log before pop task size: 1 -16:13:21:848 log after task size: 0 -16:13:22:363 log timer task size: 1 -16:13:51:149 log task queue not empty -16:13:51:150 log task size: 1 -16:13:51:150 log before pop task size: 1 -16:13:51:150 log after task size: 0 -16:13:51:152 log task queue not empty -16:13:51:152 log task size: 1 -16:13:51:152 log before pop task size: 1 -16:13:51:153 log after task size: 0 -16:13:51:240 log task queue not empty -16:13:51:241 log task size: 1 -16:13:51:241 log before pop task size: 1 -16:13:51:241 log after task size: 0 -16:13:51:554 log task queue not empty -16:13:51:554 log task size: 1 -16:13:51:554 log before pop task size: 1 -16:13:51:555 log after task size: 0 -16:13:51:656 log timer task size: 1 -16:13:51:750 log timer task size: 1 -16:13:51:763 log task queue not empty -16:13:51:764 log task size: 1 -16:13:51:764 log before pop task size: 1 -16:13:51:764 log after task size: 0 -16:13:52:068 log timer task size: 1 -16:13:52:273 log timer task size: 1 -16:13:56:946 log task queue not empty -16:13:56:946 log task size: 1 -16:13:56:947 log before pop task size: 1 -16:13:56:947 log after task size: 0 -16:13:57:454 log timer task size: 1 -16:13:58:519 log task queue not empty -16:13:58:519 log task size: 1 -16:13:58:519 log before pop task size: 1 -16:13:58:519 log after task size: 0 -16:13:59:022 log timer task size: 1 -16:13:59:298 log task queue not empty -16:13:59:298 log task size: 1 -16:13:59:298 log before pop task size: 1 -16:13:59:298 log after task size: 0 -16:13:59:808 log timer task size: 1 -16:14:00:342 log task queue not empty -16:14:00:343 log task size: 1 -16:14:00:343 log before pop task size: 1 -16:14:00:343 log after task size: 0 -16:14:00:847 log timer task size: 1 -16:14:01:145 log task queue not empty -16:14:01:145 log task size: 1 -16:14:01:146 log before pop task size: 1 -16:14:01:146 log after task size: 0 -16:14:01:653 log timer task size: 1 -16:14:01:956 log task queue not empty -16:14:01:957 log task size: 1 -16:14:01:957 log before pop task size: 1 -16:14:01:957 log after task size: 0 -16:14:02:471 log timer task size: 1 -16:31:37:896 log task queue not empty -16:31:37:897 log task size: 1 -16:31:37:897 log before pop task size: 1 -16:31:37:897 log after task size: 0 -16:31:38:410 log timer task size: 1 -16:32:53:971 log task queue not empty -16:32:53:972 log task size: 1 -16:32:53:972 log before pop task size: 1 -16:32:53:972 log after task size: 0 -16:32:54:479 log timer task size: 1 -16:32:54:831 log task queue not empty -16:32:54:832 log task size: 1 -16:32:54:832 log before pop task size: 1 -16:32:54:833 log after task size: 0 -16:32:54:999 log task queue not empty -16:32:55:000 log task size: 1 -16:32:55:000 log before pop task size: 1 -16:32:55:000 log after task size: 0 -16:32:55:155 log task queue not empty -16:32:55:155 log task size: 1 -16:32:55:156 log before pop task size: 1 -16:32:55:156 log after task size: 0 -16:32:55:276 log task queue not empty -16:32:55:276 log task size: 1 -16:32:55:276 log before pop task size: 1 -16:32:55:277 log after task size: 0 -16:32:55:343 log timer task size: 1 -16:32:55:516 log timer task size: 1 -16:32:55:658 log timer task size: 1 -16:32:55:781 log timer task size: 1 -16:32:56:423 log task queue not empty -16:32:56:423 log task size: 1 -16:32:56:424 log before pop task size: 1 -16:32:56:424 log after task size: 0 -16:32:56:734 log task queue not empty -16:32:56:734 log task size: 1 -16:32:56:735 log before pop task size: 1 -16:32:56:735 log after task size: 0 -16:32:56:842 log task queue not empty -16:32:56:843 log task size: 1 -16:32:56:843 log before pop task size: 1 -16:32:56:843 log after task size: 0 -16:32:56:926 log timer task size: 1 -16:32:56:990 log task queue not empty -16:32:56:991 log task size: 1 -16:32:56:991 log before pop task size: 1 -16:32:56:991 log after task size: 0 -16:32:57:243 log timer task size: 1 -16:32:57:354 log timer task size: 1 -16:32:57:424 log task queue not empty -16:32:57:424 log task size: 1 -16:32:57:424 log before pop task size: 1 -16:32:57:424 log after task size: 0 -16:32:57:494 log timer task size: 1 -16:32:57:935 log timer task size: 1 -16:33:18:834 log task queue not empty -16:33:18:835 log task size: 1 -16:33:18:835 log before pop task size: 1 -16:33:18:835 log after task size: 0 -16:33:19:023 log task queue not empty -16:33:19:024 log task size: 1 -16:33:19:024 log before pop task size: 1 -16:33:19:024 log after task size: 0 -16:33:19:220 log task queue not empty -16:33:19:220 log task size: 1 -16:33:19:221 log before pop task size: 1 -16:33:19:221 log after task size: 0 -16:33:19:293 log task queue not empty -16:33:19:293 log task size: 1 -16:33:19:293 log before pop task size: 1 -16:33:19:293 log after task size: 0 -16:33:19:343 log timer task size: 1 -16:33:19:402 log task queue not empty -16:33:19:403 log task size: 1 -16:33:19:403 log before pop task size: 1 -16:33:19:403 log after task size: 0 -16:33:19:529 log timer task size: 1 -16:33:19:734 log timer task size: 1 -16:33:19:798 log timer task size: 1 -16:33:19:906 log timer task size: 1 -16:33:21:294 log task queue not empty -16:33:21:295 log task size: 1 -16:33:21:295 log before pop task size: 1 -16:33:21:295 log after task size: 0 -16:33:21:806 log timer task size: 1 -16:33:21:971 log task queue not empty -16:33:21:972 log task size: 1 -16:33:21:972 log before pop task size: 1 -16:33:21:972 log after task size: 0 -16:33:22:147 log task queue not empty -16:33:22:147 log task size: 1 -16:33:22:147 log before pop task size: 1 -16:33:22:147 log after task size: 0 -16:33:22:476 log timer task size: 1 -16:33:22:592 log task queue not empty -16:33:22:593 log task size: 1 -16:33:22:593 log before pop task size: 1 -16:33:22:593 log after task size: 0 -16:33:22:648 log timer task size: 1 -16:33:22:689 log task queue not empty -16:33:22:690 log task size: 1 -16:33:22:690 log before pop task size: 1 -16:33:22:690 log after task size: 0 -16:33:22:798 log task queue not empty -16:33:22:799 log task size: 1 -16:33:22:799 log before pop task size: 1 -16:33:22:799 log after task size: 0 -16:33:23:069 log task queue not empty -16:33:23:070 log task size: 1 -16:33:23:070 log before pop task size: 1 -16:33:23:070 log after task size: 0 -16:33:23:103 log timer task size: 1 -16:33:23:197 log timer task size: 1 -16:33:23:240 log task queue not empty -16:33:23:240 log task size: 1 -16:33:23:240 log before pop task size: 1 -16:33:23:241 log after task size: 0 -16:33:23:310 log timer task size: 1 -16:33:23:401 log task queue not empty -16:33:23:401 log task size: 1 -16:33:23:401 log before pop task size: 1 -16:33:23:401 log after task size: 0 -16:33:23:576 log timer task size: 1 -16:33:23:749 log timer task size: 1 -16:33:23:813 log task queue not empty -16:33:23:813 log task size: 1 -16:33:23:813 log before pop task size: 1 -16:33:23:814 log after task size: 0 -16:33:23:906 log timer task size: 1 -16:33:24:175 log task queue not empty -16:33:24:176 log task size: 1 -16:33:24:177 log before pop task size: 1 -16:33:24:178 log after task size: 0 -16:33:24:314 log timer task size: 1 -16:33:24:384 log task queue not empty -16:33:24:384 log task size: 1 -16:33:24:385 log before pop task size: 1 -16:33:24:385 log after task size: 0 -16:33:24:543 log task queue not empty -16:33:24:544 log task size: 1 -16:33:24:544 log before pop task size: 1 -16:33:24:544 log after task size: 0 -16:33:24:652 log task queue not empty -16:33:24:653 log task size: 1 -16:33:24:653 log before pop task size: 1 -16:33:24:653 log after task size: 0 -16:33:24:694 log timer task size: 1 -16:33:24:900 log timer task size: 1 -16:33:25:056 log timer task size: 1 -16:33:25:084 log task queue not empty -16:33:25:086 log task size: 1 -16:33:25:086 log before pop task size: 1 -16:33:25:087 log after task size: 0 -16:33:25:146 log task queue not empty -16:33:25:146 log task size: 1 -16:33:25:146 log before pop task size: 1 -16:33:25:146 log after task size: 0 -16:33:25:168 log timer task size: 1 -16:33:25:597 log timer task size: 1 -16:33:25:660 log timer task size: 1 -16:33:27:073 log task queue not empty -16:33:27:074 log task size: 1 -16:33:27:074 log before pop task size: 1 -16:33:27:075 log after task size: 0 -16:33:27:299 log task queue not empty -16:33:27:300 log task size: 1 -16:33:27:300 log before pop task size: 1 -16:33:27:300 log after task size: 0 -16:33:27:473 log task queue not empty -16:33:27:473 log task size: 1 -16:33:27:474 log before pop task size: 1 -16:33:27:474 log after task size: 0 -16:33:27:581 log timer task size: 1 -16:33:27:660 log task queue not empty -16:33:27:660 log task size: 1 -16:33:27:661 log before pop task size: 1 -16:33:27:661 log after task size: 0 -16:33:27:816 log timer task size: 1 -16:33:27:989 log timer task size: 1 -16:33:28:164 log timer task size: 1 -16:33:29:769 log task queue not empty -16:33:29:769 log task size: 1 -16:33:29:769 log before pop task size: 1 -16:33:29:769 log after task size: 0 -16:33:30:066 log task queue not empty -16:33:30:066 log task size: 1 -16:33:30:066 log before pop task size: 1 -16:33:30:067 log after task size: 0 -16:33:30:144 log task queue not empty -16:33:30:144 log task size: 1 -16:33:30:144 log before pop task size: 1 -16:33:30:145 log after task size: 0 -16:33:30:276 log timer task size: 1 -16:33:30:299 log task queue not empty -16:33:30:300 log task size: 1 -16:33:30:300 log before pop task size: 1 -16:33:30:300 log after task size: 0 -16:33:30:575 log timer task size: 1 -16:33:30:655 log timer task size: 1 -16:33:30:771 log task queue not empty -16:33:30:771 log task size: 1 -16:33:30:772 log before pop task size: 1 -16:33:30:772 log after task size: 0 -16:33:30:773 log task queue not empty -16:33:30:773 log task size: 1 -16:33:30:774 log before pop task size: 1 -16:33:30:774 log after task size: 0 -16:33:30:810 log timer task size: 1 -16:33:31:280 log timer task size: 1 -16:33:31:280 log timer task size: 1 -16:33:32:231 log task queue not empty -16:33:32:232 log task size: 1 -16:33:32:232 log before pop task size: 1 -16:33:32:232 log after task size: 0 -16:33:32:434 log task queue not empty -16:33:32:434 log task size: 1 -16:33:32:434 log before pop task size: 1 -16:33:32:434 log after task size: 0 -16:33:32:609 log task queue not empty -16:33:32:610 log task size: 1 -16:33:32:610 log before pop task size: 1 -16:33:32:610 log after task size: 0 -16:33:32:741 log timer task size: 1 -16:33:32:948 log timer task size: 1 -16:33:33:121 log timer task size: 1 -16:33:33:859 log task queue not empty -16:33:33:859 log task size: 1 -16:33:33:859 log before pop task size: 1 -16:33:33:859 log after task size: 0 -16:33:33:941 log task queue not empty -16:33:33:942 log task size: 1 -16:33:33:942 log before pop task size: 1 -16:33:33:942 log after task size: 0 -16:33:34:372 log timer task size: 1 -16:33:34:450 log timer task size: 1 -16:33:34:552 log task queue not empty -16:33:34:553 log task size: 1 -16:33:34:553 log before pop task size: 1 -16:33:34:553 log after task size: 0 -16:33:35:059 log timer task size: 1 -16:33:35:606 log task queue not empty -16:33:35:606 log task size: 1 -16:33:35:607 log before pop task size: 1 -16:33:35:607 log after task size: 0 -16:33:35:931 log task queue not empty -16:33:35:932 log task size: 1 -16:33:35:932 log before pop task size: 1 -16:33:35:932 log after task size: 0 -16:33:36:115 log timer task size: 1 -16:33:36:443 log timer task size: 1 -16:33:37:327 log task queue not empty -16:33:37:328 log task size: 1 -16:33:37:329 log before pop task size: 1 -16:33:37:329 log after task size: 0 -16:33:37:521 log task queue not empty -16:33:37:522 log task size: 1 -16:33:37:522 log before pop task size: 1 -16:33:37:523 log after task size: 0 -16:33:37:581 log task queue not empty -16:33:37:581 log task size: 1 -16:33:37:581 log before pop task size: 1 -16:33:37:582 log after task size: 0 -16:33:37:718 log task queue not empty -16:33:37:719 log task size: 1 -16:33:37:719 log before pop task size: 1 -16:33:37:719 log after task size: 0 -16:33:37:832 log timer task size: 1 -16:33:38:036 log timer task size: 1 -16:33:38:084 log timer task size: 1 -16:33:38:226 log timer task size: 1 -16:33:39:540 log task queue not empty -16:33:39:541 log task size: 1 -16:33:39:541 log before pop task size: 1 -16:33:39:541 log after task size: 0 -16:33:40:050 log timer task size: 1 -16:33:40:192 log task queue not empty -16:33:40:192 log task size: 1 -16:33:40:192 log before pop task size: 1 -16:33:40:192 log after task size: 0 -16:33:40:206 log task queue not empty -16:33:40:206 log task size: 1 -16:33:40:206 log before pop task size: 1 -16:33:40:207 log after task size: 0 -16:33:40:210 log task queue not empty -16:33:40:210 log task size: 1 -16:33:40:211 log before pop task size: 1 -16:33:40:211 log after task size: 0 -16:33:40:708 log timer task size: 1 -16:33:40:724 log timer task size: 1 -16:33:41:032 log task queue not empty -16:33:41:033 log task size: 1 -16:33:41:033 log before pop task size: 1 -16:33:41:033 log after task size: 0 -16:33:41:541 log timer task size: 1 -16:33:42:458 log task queue not empty -16:33:42:459 log task size: 1 -16:33:42:459 log before pop task size: 1 -16:33:42:459 log after task size: 0 -16:33:42:960 log timer task size: 1 -16:33:43:033 log task queue not empty -16:33:43:034 log task size: 1 -16:33:43:034 log before pop task size: 1 -16:33:43:035 log after task size: 0 -16:33:43:538 log timer task size: 1 -16:33:44:629 log task queue not empty -16:33:44:629 log task size: 1 -16:33:44:630 log before pop task size: 1 -16:33:44:630 log after task size: 0 -16:33:45:130 log timer task size: 1 -16:33:48:948 log task queue not empty -16:33:48:949 log task size: 1 -16:33:48:949 log before pop task size: 1 -16:33:48:949 log after task size: 0 -16:33:48:950 log task queue not empty -16:33:48:950 log task size: 1 -16:33:48:951 log before pop task size: 1 -16:33:48:951 log after task size: 0 -16:33:48:952 log task queue not empty -16:33:48:952 log task size: 1 -16:33:48:952 log before pop task size: 1 -16:33:48:953 log after task size: 0 -16:33:48:954 log task queue not empty -16:33:48:954 log task size: 1 -16:33:48:954 log before pop task size: 1 -16:33:48:955 log after task size: 0 -16:33:49:455 log timer task size: 1 -16:33:49:455 log timer task size: 1 -16:33:49:455 log timer task size: 1 -16:33:49:455 log timer task size: 1 -16:35:02:470 log task queue not empty -16:35:02:470 log task size: 1 -16:35:02:471 log before pop task size: 1 -16:35:02:471 log after task size: 0 -16:35:02:972 log timer task size: 1 -16:35:02:989 log task queue not empty -16:35:02:990 log task size: 1 -16:35:02:990 log before pop task size: 1 -16:35:02:991 log after task size: 0 -16:35:03:506 log timer task size: 1 diff --git a/ArkUIKit/NativeNodeBaseSample/oh-package-lock.json5 b/ArkUIKit/NativeNodeBaseSample/oh-package-lock.json5 new file mode 100644 index 000000000..7fcf81827 --- /dev/null +++ b/ArkUIKit/NativeNodeBaseSample/oh-package-lock.json5 @@ -0,0 +1,27 @@ +{ + "meta": { + "stableOrder": true + }, + "lockfileVersion": 3, + "ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.", + "specifiers": { + "@ohos/hamock@1.0.0": "@ohos/hamock@1.0.0", + "@ohos/hypium@1.0.21": "@ohos/hypium@1.0.21" + }, + "packages": { + "@ohos/hamock@1.0.0": { + "name": "@ohos/hamock", + "version": "1.0.0", + "integrity": "sha512-K6lDPYc6VkKe6ZBNQa9aoG+ZZMiwqfcR/7yAVFSUGIuOAhPvCJAo9+t1fZnpe0dBRBPxj2bxPPbKh69VuyAtDg==", + "resolved": "https://ohpm.openharmony.cn/ohpm/@ohos/hamock/-/hamock-1.0.0.har", + "registryType": "ohpm" + }, + "@ohos/hypium@1.0.21": { + "name": "@ohos/hypium", + "version": "1.0.21", + "integrity": "sha512-iyKGMXxE+9PpCkqEwu0VykN/7hNpb+QOeIuHwkmZnxOpI+dFZt6yhPB7k89EgV1MiSK/ieV/hMjr5Z2mWwRfMQ==", + "resolved": "https://ohpm.openharmony.cn/ohpm/@ohos/hypium/-/hypium-1.0.21.har", + "registryType": "ohpm" + } + } +} \ No newline at end of file diff --git a/ArkUIKit/StyledStringSample/README.md b/ArkUIKit/StyledStringSample/README.md index a0cbff2f1..baf1c1b70 100644 --- a/ArkUIKit/StyledStringSample/README.md +++ b/ArkUIKit/StyledStringSample/README.md @@ -6,9 +6,9 @@ ## 效果预览 -| 预览 | -| -------------------------------------------- | - +| 预览 | +| --------------------------------------------------------- | +| | ## 使用说明 1. 安装编译生成的hap包,并打开应用; -- Gitee