Skip to content

Commit 94f0026

Browse files
committed
solve some question and update code of lib
1 parent 38ef566 commit 94f0026

11 files changed

+63
-38
lines changed

harmony/smart_refresh_layout.har

270 Bytes
Binary file not shown.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
export default class BuildProfile {
2-
static readonly HAR_VERSION = '0.6.7-0.3.0';
2+
static readonly HAR_VERSION = '0.6.7-0.3.1';
33
static readonly BUILD_MODE_NAME = 'debug';
44
static readonly DEBUG = true;
55
}

harmony/smart_refresh_layout/oh-package.json5

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"name": "@react-native-oh-tpl/react-native-smartrefreshlayout",
77
"description": "Please describe the basic information.",
88
"main": "index.ets",
9-
"version": "0.6.7-0.3.0",
9+
"version": "0.6.7-0.3.1",
1010
"dependencies": {
1111
"rnoh": "file:../rnoh"
1212
},

harmony/smart_refresh_layout/src/main/cpp/PullToRefreshNode.cpp

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,6 @@ namespace rnoh {
2323
ArkUI_NumberValue alignments[] = {{.u32 = ARKUI_ALIGNMENT_BOTTOM}};
2424
ArkUI_AttributeItem alignment = {alignments, sizeof(alignments) / sizeof(ArkUI_NumberValue)};
2525
NativeNodeApi::getInstance()->setAttribute(m_headerArkUINodeHandle, NODE_STACK_ALIGN_CONTENT, &alignment);
26-
// NativeNodeApi::getInstance()->registerNodeEvent(m_headerArkUINodeHandle, NODE_EVENT_ON_AREA_CHANGE, 1263);
27-
// NativeNodeApi::getInstance()->registerNodeEventReceiver([](ArkUI_NodeEvent *event) {
28-
// LOG(INFO) << "[tyBrave] <registerNodeEventReceiver NODE_EVENT_ON_AREA_CHANGE {}:eventID:"
29-
// << event->eventId;
30-
// if (event->kind == ArkUI_NodeEventType::NODE_EVENT_ON_AREA_CHANGE) {
31-
// LOG(INFO) << "[tyBrave] <registerNodeEventReceiver NODE_EVENT_ON_AREA_CHANGE success"
32-
// << event->eventId;
33-
// }
34-
// });
3526
} else if (index == 1) {
3627
m_listArkUINodeHandle = child.getArkUINodeHandle();
3728
}
@@ -47,10 +38,6 @@ namespace rnoh {
4738
}
4839
}
4940

50-
// void PullToRefreshNode::onNodeEvent(ArkUI_NodeEvent *event) {
51-
// LOG(INFO) << "[tyBrave] <RNCDefaultHeaderComponentInstance NODE_EVENT_ON_AREA_CHANGE {}:eventID:"<<event->eventId;
52-
// }
53-
5441
void PullToRefreshNode::setHeaderHeight(float h) {
5542
ArkUI_NumberValue heightNumberValue[] = {h};
5643
ArkUI_AttributeItem heightItem = {heightNumberValue, 1};

harmony/smart_refresh_layout/src/main/cpp/RNCClassicsHeaderComponentInstance.cpp

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ namespace rnoh {
4040
textNode.setFontSize(15);
4141
textNode.setFontColor(0xff666666);
4242

43-
timeTextNode.setTextContent("更新于 早上10:10");
43+
4444
timeTextNode.setFontSize(12);
4545
timeTextNode.setFontColor(0xff7c7c7c);
4646

@@ -51,11 +51,11 @@ namespace rnoh {
5151
std::time_t now_seconds = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
5252
std::tm *now_tm = std::localtime(&now_seconds);
5353

54-
LOG(INFO) << "[tyBrave] <RNCClassicsHeaderComponentInstance {}"
55-
<< "当前时间: " << (now_tm->tm_year + 1900) << '-' << (now_tm->tm_mon + 1) << '-' << now_tm->tm_mday
56-
<< ' ' << now_tm->tm_hour << ':' << now_tm->tm_min << ':' << now_tm->tm_sec;
57-
58-
54+
std::string textMoment = now_tm->tm_hour == 12 ? MOMENTS[0] : MOMENTS[now_tm->tm_hour / 6 + 1];
55+
timeTextNode.setTextContent(
56+
"更新于 " + textMoment + " " + std::to_string(now_tm->tm_hour) + ":" +
57+
(now_tm->tm_min > 9 ? std::to_string(now_tm->tm_min) : '0' + std::to_string(now_tm->tm_min)));
58+
5959
mColumnHandle = NativeNodeApi::getInstance()->createNode(ARKUI_NODE_ROW);
6060

6161
ArkUI_NumberValue heightNumberValue[] = {50};
@@ -66,11 +66,6 @@ namespace rnoh {
6666
NativeNodeApi::getInstance()->insertChildAt(mColumnHandle, updateImageNode.getArkUINodeHandle(), 1);
6767
NativeNodeApi::getInstance()->insertChildAt(mColumnHandle, textColumn, 2);
6868
NativeNodeApi::getInstance()->insertChildAt(m_stackNode.getArkUINodeHandle(), mColumnHandle, 0);
69-
70-
// ArkUI_NumberValue positionArray[] = {{.f32 = -50}, {.f32 = 20}};
71-
// ArkUI_AttributeItem positionValue[] = {positionArray, 2};
72-
// NativeNodeApi::getInstance()->setAttribute(timeTextNode.getArkUINodeHandle(), NODE_POSITION,
73-
// positionValue);
7469
}
7570
void RNCClassicsHeaderComponentInstance::onChildInserted(ComponentInstance::Shared const &childComponentInstance,
7671
std::size_t index) {
@@ -110,7 +105,22 @@ namespace rnoh {
110105
ArkUI_AttributeItem opacityItem = {opacityValue, sizeof(opacityValue) / sizeof(ArkUI_NumberValue)};
111106
NativeNodeApi::getInstance()->setAttribute(imageNode.getArkUINodeHandle(), NODE_ROTATE, &opacityItem);
112107
}
113-
108+
void RNCClassicsHeaderComponentInstance::setRotateAnimate(float angle, int32_t dur, int32_t count) {
109+
ArkUI_NumberValue roateArray[] = {{.f32 = 0},
110+
{.f32 = 0},
111+
{.f32 = 1},
112+
{.f32 = angle},
113+
{.f32 = 0},
114+
{.i32 = dur},
115+
{.i32 = ARKUI_CURVE_LINEAR},
116+
{.i32 = 0},
117+
{.i32 = count},
118+
{.i32 = ARKUI_ANIMATION_PLAY_MODE_NORMAL},
119+
{.f32 = 1}};
120+
ArkUI_AttributeItem roateValue[] = {roateArray, 11};
121+
NativeNodeApi::getInstance()->setAttribute(updateImageNode.getArkUINodeHandle(), NODE_ROTATE_TRANSITION,
122+
roateValue);
123+
}
114124
void RNCClassicsHeaderComponentInstance::onRefreshStatusChange(int32_t status) {
115125

116126
ArkUI_NumberValue imageNodeVisiblyAbleValue[] = {{.u32 = ARKUI_VISIBILITY_VISIBLE}};
@@ -128,6 +138,7 @@ namespace rnoh {
128138
&visiblyAbleItem);
129139
} break;
130140
case IS_REFRESHING: {
141+
setRotateAnimate(360, 1000, -1);
131142
textNode.setTextContent("正在更新");
132143
ArkUI_NumberValue imageNodeVisiblyAbleValue[] = {{.u32 = ARKUI_VISIBILITY_NONE}};
133144
ArkUI_AttributeItem imageNodeVisiblyAbleItem = {imageNodeVisiblyAbleValue, 1};
@@ -155,6 +166,13 @@ namespace rnoh {
155166
ArkUI_AttributeItem visiblyAbleItem = {visiblyAbleValue, 1};
156167
NativeNodeApi::getInstance()->setAttribute(updateImageNode.getArkUINodeHandle(), NODE_VISIBILITY,
157168
&visiblyAbleItem);
169+
std::time_t now_seconds = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
170+
std::tm *now_tm = std::localtime(&now_seconds);
171+
172+
std::string textMoment = now_tm->tm_hour == 12 ? MOMENTS[0] : MOMENTS[now_tm->tm_hour / 6 + 1];
173+
timeTextNode.setTextContent(
174+
"更新于 " + textMoment + " " + std::to_string(now_tm->tm_hour) + ":" +
175+
(now_tm->tm_min > 9 ? std::to_string(now_tm->tm_min) : '0' + std::to_string(now_tm->tm_min)));
158176
} break;
159177
}
160178
}

harmony/smart_refresh_layout/src/main/cpp/RNCClassicsHeaderComponentInstance.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,6 @@ namespace rnoh {
3737
void onRefreshStatusChange(int32_t status) override;
3838
std::string getDefaultHeaderBackGroundColor() { return primaryColor; }
3939
void setImageRotate(float angle);
40+
void setRotateAnimate(float angle, int32_t dur, int32_t count);
4041
};
4142
} // namespace rnoh

harmony/smart_refresh_layout/src/main/cpp/RNCMaterialHeaderComponentInstance.cpp

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ namespace rnoh {
1414
RNCMaterialHeaderComponentInstance::RNCMaterialHeaderComponentInstance(Context context)
1515
: CppComponentInstance(std::move(context)) {
1616
LOG(INFO) << "[tyBrave] <RNCMaterialHeaderComponentInstance {}";
17-
17+
1818
facebook::react::ImageSources imageSources;
1919
imageSources.push_back({.uri = "resource://BASE/media/icon_up.png"});
2020
imageNode.setSources(imageSources);
@@ -39,10 +39,11 @@ namespace rnoh {
3939
NativeNodeApi::getInstance()->setAttribute(imageStack, NODE_BORDER_WIDTH, borderStyValue);
4040

4141
ArkUI_NumberValue radiusArray[] = {{.f32 = 45}};
42-
ArkUI_AttributeItem radiusValue[] = {radiusArray,1};
42+
ArkUI_AttributeItem radiusValue[] = {radiusArray, 1};
4343
NativeNodeApi::getInstance()->setAttribute(imageStack, NODE_BORDER_RADIUS, radiusValue);
4444

45-
ArkUI_NumberValue borderColorArray[] = {{.u32=0xFFaaaaaa},{.u32=0xFFaaaaaa},{.u32=0xFFaaaaaa},{.u32=0xFFaaaaaa},{.u32=0xFFaaaaaa}};
45+
ArkUI_NumberValue borderColorArray[] = {
46+
{.u32 = 0xFFaaaaaa}, {.u32 = 0xFFaaaaaa}, {.u32 = 0xFFaaaaaa}, {.u32 = 0xFFaaaaaa}, {.u32 = 0xFFaaaaaa}};
4647
ArkUI_AttributeItem borderColorValue[] = {borderColorArray, 4};
4748
NativeNodeApi::getInstance()->setAttribute(imageStack, NODE_BORDER_COLOR, borderColorValue);
4849

@@ -67,13 +68,13 @@ namespace rnoh {
6768
ArkUI_AttributeItem positionValue[] = {positionArray, 2};
6869
NativeNodeApi::getInstance()->setAttribute(imageStack, NODE_POSITION, positionValue);
6970

70-
NativeNodeApi::getInstance()->insertChildAt(m_stackNode.getArkUINodeHandle(), imageStack,
71-
0);
71+
NativeNodeApi::getInstance()->insertChildAt(m_stackNode.getArkUINodeHandle(), imageStack, 0);
7272
}
7373
void RNCMaterialHeaderComponentInstance::onChildInserted(ComponentInstance::Shared const &childComponentInstance,
7474
std::size_t index) {
7575
CppComponentInstance::onChildInserted(childComponentInstance, index);
7676
m_stackNode.insertChild(childComponentInstance->getLocalRootArkUINode(), index);
77+
getParent().lock()->getComponentName();
7778
}
7879

7980
void RNCMaterialHeaderComponentInstance::onChildRemoved(ComponentInstance::Shared const &childComponentInstance) {
@@ -86,6 +87,11 @@ namespace rnoh {
8687
void RNCMaterialHeaderComponentInstance::finalizeUpdates() {
8788
m_stackNode.setAlignment(ARKUI_ALIGNMENT_CENTER);
8889
m_stackNode.setBackgroundColor(0XFFFFFF00);
90+
if (getParent().lock()) {
91+
LOG(INFO) << "[tyBrave] <RNCMaterialHeaderComponentInstance finalizeUpdates "
92+
<< getParent().lock()->getComponentName();
93+
}
94+
8995
}
9096

9197
void RNCMaterialHeaderComponentInstance::setImageRotate(float angle) {

harmony/smart_refresh_layout/src/main/cpp/SmartRefreshLayoutComponentInstance.cpp

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include "RNOH/arkui/ArkUINode.h"
44
#include "RNOH/arkui/ScrollNode.h"
55
#include "RNOHCorePackage/ComponentInstances/ScrollViewComponentInstance.h"
6+
#include "react/renderer/components/scrollview/ScrollViewProps.h"
67
#include "react/renderer/graphics/Color.h"
78
#include <arkui/native_interface.h>
89
#include <arkui/native_node.h>
@@ -18,6 +19,7 @@ namespace rnoh {
1819

1920
m_pullToRefreshNode.insertChild(m_headerStackNode, 0);
2021
m_pullToRefreshNode.insertChild(m_listStackNode, 1);
22+
2123
m_pullToRefreshNode.setPullToRefreshNodeDelegate(this);
2224

2325
ArkUI_NumberValue clipValue[] = {{.u32 = 1}};
@@ -75,6 +77,7 @@ namespace rnoh {
7577
}
7678
} else if (actionType == GESTURE_EVENT_ACTION_END) {
7779
instance->onActionEnd();
80+
instance->onHeaderReleased();
7881
}
7982
};
8083
gestureApi->setGestureEventTarget(
@@ -100,11 +103,13 @@ namespace rnoh {
100103
float trY = touchYNew - touchYOld;
101104
// 计算当前需要位移的距离
102105
trYTop = this->getTranslateYOfRefresh(trY);
103-
m_pullToRefreshNode.setHeaderHeight(trYTop);
106+
setPullHeaderHeight(trYTop);
104107
if (trYTop / maxTranslate < 0.5) {
105108
state = IS_PULL_DOWN_1;
106109
} else {
107110
state = IS_PULL_DOWN_2;
111+
// 可释放刷新时触发
112+
this->onReleaseToRefresh();
108113
}
109114
if (trY > 0) {
110115
this->onHeaderPulling(trYTop);
@@ -127,7 +132,7 @@ namespace rnoh {
127132
state = IS_REFRESHING;
128133
trYTop = maxTranslate * 0.5; // 这个位置要设置高度,收回去
129134
this->onRefresh();
130-
m_pullToRefreshNode.setHeaderHeight(trYTop);
135+
setPullHeaderHeight(trYTop);
131136
this->changeStatus();
132137
}
133138
}
@@ -181,11 +186,12 @@ namespace rnoh {
181186
animation->SetAnimationParams(static_cast<std::chrono::milliseconds>(duration), start, target,
182187
[this, &target](double value) {
183188
trYTop = value < 0 ? 0 : value;
184-
m_pullToRefreshNode.setHeaderHeight(trYTop);
189+
setPullHeaderHeight(trYTop);
185190
if (trYTop == 0) {
186191
state = IS_FREE;
187192
m_pullToRefreshNode.markDirty();
188193
}
194+
onHeaderReleasing(trYTop);
189195
});
190196
if (animation->GetAnimationStatus() == ANIMATION_FREE || animation->GetAnimationStatus() == ANIMATION_FINISH) {
191197
animation->Start();
@@ -245,6 +251,11 @@ namespace rnoh {
245251

246252
void SmartRefreshLayoutComponentInstance::onRefresh() { m_eventEmitter->onRefresh({}); };
247253

254+
void SmartRefreshLayoutComponentInstance::setPullHeaderHeight(float h) {
255+
m_pullToRefreshNode.setHeaderHeight(h);
256+
onHeaderMoving(h);
257+
}
258+
248259
void SmartRefreshLayoutComponentInstance::onHeaderPulling(const float &displayedHeaderHeight) {
249260
facebook::react::Float percent = displayedHeaderHeight / headerHeight;
250261
m_eventEmitter->onHeaderPulling({percent, displayedHeaderHeight, headerHeight});

harmony/smart_refresh_layout/src/main/cpp/SmartRefreshLayoutComponentInstance.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ namespace rnoh {
5959
void onActionEnd();
6060
void closeRefresh(float start, float target, int32_t duration);
6161
void finishRefresh();
62-
62+
void setPullHeaderHeight(float h);
63+
6364
void onRefresh() override;
6465
void onHeaderPulling(const float &displayedHeaderHeight) override;
6566
void onHeaderReleasing(const float &displayedHeaderHeight) override;

harmony/smart_refresh_layout/src/main/cpp/SmartRefreshState.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@
55
// please include "napi/native_api.h".
66

77
#include <string>
8-
enum { IS_FREE, IS_PULL_DOWN_1, IS_PULL_DOWN_2, IS_REFRESHING, IS_REFRESHED, IS_PULL_UP_1, IS_PULL_UP_2, IS_LOADING };
8+
enum { IS_FREE, IS_PULL_DOWN_1, IS_PULL_DOWN_2, IS_REFRESHING, IS_REFRESHED, IS_PULL_UP_1, IS_PULL_UP_2, IS_LOADING };
9+
const std::string MOMENTS[]={"中午", "凌晨", "早上", "下午", "晚上"};

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@react-native-oh-tpl/react-native-smartrefreshlayout",
3-
"version": "0.6.7-0.3.0",
3+
"version": "0.6.7-0.3.1",
44
"description": "基于android SmartRefreshLayout的封装",
55
"harmony": {
66
"alias": "react-native-smartrefreshlayout"

0 commit comments

Comments
 (0)