diff --git a/ArkUIKit/NativeNodeBaseSample/AppScope/app.json5 b/ArkUIKit/NativeNodeBaseSample/AppScope/app.json5
index 6bfccda26f1df2cdf0e8b961fefaf6afafe0f425..b20ebf274b647256ab9060f4b17f617cdeb25011 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 63f6db99cd72d23257e11b8def239e69b3733ab7..de144fc6328cdefd4b32c4a70a3288f1f4606856 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 c6eb7de062cafd181f74d28b11e9b62b65f89260..7c8de8b815f2c9fe068b76ac2a69b3c14d018a9b 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 fad9fdc848d85ebfa0e390c9abcc29c0f78e2d3a..11e19dc1ca66d83c53c3d66d57197bb03f63b418 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 400a41af2decdde064672c31400f59b3ef2c75ef..cde7025c2f1abfabf3018c66ae28c544ed107210 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 0000000000000000000000000000000000000000..5c8c8d64769f4712bca04df64e51eb46442cbc59
--- /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 3b5c8ddf0f5699133ae1f086fecb5203dc2662d8..cfabe964bcea4a2ae38e03d1a079b5a2c452ddec 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 0000000000000000000000000000000000000000..7bb75338251082860284e4034264a4084624e7cc
--- /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 0000000000000000000000000000000000000000..c2dc806944c84967c0d3ce3a1d4d320ad84b6448
--- /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 d6e24e3a9e7ec0ba9f3a1e1996b7a56dc8900330..c380cd668bbae146948c7eb8c251cc0e55d1594d 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 b7abd35af44175f36ae9d118a42a2ea60a28e889..ed2671a0052a95e54f365715043c1acdaf03ac38 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 f152ab2f7635037242e09c0b04698afaf753cd64..c48bca62869f5cf86dbefaecaa3bb8428e7213df 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 bd65cea63df750743845f40fa26d85b24bb7bfac..137fd9a4db5b48b7cbb63891c5eb836bef0c1c86 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 e45a977acdf016624d888997fbace93e42a123c6..53b54fda223da77a64fdacddced7837880bf3a09 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 bc0367fc4c963a401c73f3c4163ea3439e40190d..33921092fb8eeca5536a3d5513c014df642a7254 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 0000000000000000000000000000000000000000..16941e60aab559b9fc82d30bc620ed18056fb112
--- /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 17e8e7cb8e186c8b7b913f97e3d1ee2c822dca68..d6193374a0ef570c249f37376c5a922f7b023047 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 1a39aab2c8785f27910a1b1e8d9da3021c999145..0000000000000000000000000000000000000000
--- 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 0000000000000000000000000000000000000000..7fcf818273347b97063c0c0a151bb14770ca1c79
--- /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 a0cbff2f1c0ecf599edcd0b3c58fb0e7d497ea64..baf1c1b706a3881ece54c326881b287c50535f56 100644
--- a/ArkUIKit/StyledStringSample/README.md
+++ b/ArkUIKit/StyledStringSample/README.md
@@ -6,9 +6,9 @@
## 效果预览
-| 预览 |
-| -------------------------------------------- |
-
+| 预览 |
+| --------------------------------------------------------- |
+|
|
## 使用说明
1. 安装编译生成的hap包,并打开应用;