Skip to content

Commit 99ed1ff

Browse files
committed
feat(android): compatible with custom event register
1 parent 718cc9c commit 99ed1ff

File tree

4 files changed

+22
-1
lines changed

4 files changed

+22
-1
lines changed

docs/development/android-3.0-upgrade-guidelines.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,16 @@
4545
@Nullable Object params);
4646
```
4747

48+
6. 自定义事件controller属性注册方式变更 <br>
49+
由于3.0事件名称从2.0的驼峰写法统一转换为全小写命名,会导致之前开发者自定义事件无法接收到属性设置,需要在事件属性注解中将defaultType值改为HippyControllerProps.EVENT:
50+
51+
```java
52+
@HippyControllerProps(name = "onMyEvent", defaultType = HippyControllerProps.EVENT, defaultBoolean = false)
53+
public void setMyEvent(HippyScrollView scrollView, boolean isEnable) {
54+
55+
}
56+
```
57+
4858
</br>
4959

5060
# 组件变更

modules/android/hippy_support/src/main/java/com/tencent/mtt/hippy/annotation/HippyControllerProps.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
String DEFAULT = "";
3535
String ARRAY = "array";
3636
String MAP = "map";
37+
String EVENT = "event";
3738

3839
String name();
3940

renderer/native/android/src/main/java/com/tencent/mtt/hippy/uimanager/ControllerUpdateManger.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package com.tencent.mtt.hippy.uimanager;
1818

19+
import static com.tencent.renderer.NativeRenderer.EVENT_PREFIX;
20+
1921
import android.graphics.Color;
2022
import android.view.View;
2123

@@ -112,6 +114,13 @@ private static void collectMethodHolder(@NonNull Class<?> cls,
112114
propsMethodHolder.defaultBoolean = controllerProps.defaultBoolean();
113115
propsMethodHolder.method = method;
114116
propsMethodHolder.hostClass = cls;
117+
if (propsMethodHolder.defaultType.equals(HippyControllerProps.EVENT)) {
118+
style = style.toLowerCase();
119+
// Compatible with events prefixed with on in old version
120+
if (style.startsWith(EVENT_PREFIX)) {
121+
style = style.substring(EVENT_PREFIX.length());
122+
}
123+
}
115124
methodHolderMap.put(style, propsMethodHolder);
116125
}
117126
}
@@ -170,6 +179,7 @@ private void invokePropMethod(@NonNull Object obj, @NonNull Object arg1,
170179
if (value == null) {
171180
switch (methodHolder.defaultType) {
172181
case HippyControllerProps.BOOLEAN:
182+
case HippyControllerProps.EVENT:
173183
methodHolder.method.invoke(obj, arg1, methodHolder.defaultBoolean);
174184
break;
175185
case HippyControllerProps.NUMBER:

renderer/native/android/src/main/java/com/tencent/renderer/NativeRenderer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ public class NativeRenderer extends Renderer implements NativeRender, NativeRend
9999
public static final String NODE_ID = "id";
100100
public static final String NODE_INDEX = "index";
101101
public static final String NODE_PROPS = "props";
102+
public static final String EVENT_PREFIX = "on";
102103
private static final String TAG = "NativeRenderer";
103104
private static final String NODE_PID = "pId";
104105
private static final String NODE_DELETE_PROPS = "deleteProps";
@@ -107,7 +108,6 @@ public class NativeRenderer extends Renderer implements NativeRender, NativeRend
107108
private static final String LAYOUT_TOP = "top";
108109
private static final String LAYOUT_WIDTH = "width";
109110
private static final String LAYOUT_HEIGHT = "height";
110-
private static final String EVENT_PREFIX = "on";
111111
private static final String SNAPSHOT_CREATE_NODE = "createNode";
112112
private static final String SNAPSHOT_UPDATE_LAYOUT = "updateLayout";
113113
private static final String PAINT_TYPE_KEY = "paintType";

0 commit comments

Comments
 (0)