Implement useNativeDriver support for animation of some text properties

This commit is contained in:
Mikael Sand
2018-10-11 04:19:12 +03:00
parent 2a43579404
commit a87096d3ee
3 changed files with 75 additions and 8 deletions
@@ -112,12 +112,12 @@ class RenderableViewManager<T extends VirtualNode> extends ViewGroupManager<Rend
}
@ReactProp(name = "positionX")
public void setPositionX(RenderableView<TextShadowNode> node, @Nullable ReadableArray positionX) {
public void setPositionX(RenderableView<TextShadowNode> node, Dynamic positionX) {
node.shadowNode.setPositionX(positionX);
}
@ReactProp(name = "positionY")
public void setPositionY(RenderableView<TextShadowNode> node, @Nullable ReadableArray positionY) {
public void setPositionY(RenderableView<TextShadowNode> node, Dynamic positionY) {
node.shadowNode.setPositionY(positionY);
}
@@ -135,6 +135,16 @@ class RenderableViewManager<T extends VirtualNode> extends ViewGroupManager<Rend
public void setContent(RenderableView<TSpanShadowNode> node, @Nullable String content) {
node.shadowNode.setContent(content);
}
@ReactProp(name = "positionX")
public void setPositionX(RenderableView<TSpanShadowNode> node, Dynamic positionX) {
node.shadowNode.setPositionX(positionX);
}
@ReactProp(name = "positionY")
public void setPositionY(RenderableView<TSpanShadowNode> node, Dynamic positionY) {
node.shadowNode.setPositionY(positionY);
}
};
}
@@ -14,6 +14,8 @@ import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Region;
import com.facebook.react.bridge.Dynamic;
import com.facebook.react.bridge.JavaOnlyArray;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.uimanager.ReactShadowNode;
@@ -107,14 +109,48 @@ class TextShadowNode extends GroupShadowNode {
}
@ReactProp(name = "positionX")
public void setPositionX(@Nullable ReadableArray positionX) {
mPositionX = positionX;
public void setPositionX(Dynamic positionX) {
if (positionX.isNull()) {
mPositionX = null;
} else {
switch (positionX.getType()) {
case Array: {
mPositionX = positionX.asArray();
break;
}
case String: {
mPositionX = JavaOnlyArray.of(positionX.asString());
break;
}
case Number: {
mPositionX = JavaOnlyArray.of(String.valueOf(positionX.asDouble()));
break;
}
}
}
markUpdated();
}
@ReactProp(name = "positionY")
public void setPositionY(@Nullable ReadableArray positionY) {
mPositionY = positionY;
public void setPositionY(Dynamic positionY) {
if (positionY.isNull()) {
mPositionY = null;
} else {
switch (positionY.getType()) {
case Array: {
mPositionY = positionY.asArray();
break;
}
case String: {
mPositionY = JavaOnlyArray.of(positionY.asString());
break;
}
case Number: {
mPositionY = JavaOnlyArray.of(String.valueOf(positionY.asDouble()));
break;
}
}
}
markUpdated();
}
+23 -2
View File
@@ -23,8 +23,29 @@ RCT_EXPORT_MODULE()
RCT_EXPORT_VIEW_PROPERTY(textAnchor, RNSVGTextAnchor)
RCT_EXPORT_VIEW_PROPERTY(deltaX, NSArray<NSString *>)
RCT_EXPORT_VIEW_PROPERTY(deltaY, NSArray<NSString *>)
RCT_EXPORT_VIEW_PROPERTY(positionX, NSArray<NSString *>)
RCT_EXPORT_VIEW_PROPERTY(positionY, NSArray<NSString *>)
RCT_CUSTOM_VIEW_PROPERTY(positionX, id, RNSVGText)
{
if ([json isKindOfClass:[NSArray class]]) {
NSArray<NSString *> *arrayValue = (NSArray<NSString *> *)json;
view.positionX = arrayValue;
} else if ([json isKindOfClass:[NSString class]]) {
view.positionX = [NSArray arrayWithObject:json];
} else if ([json isKindOfClass:[NSNumber class]]) {
view.positionX = [NSArray arrayWithObject:[NSString stringWithFormat:@"%f", [json floatValue]]];
}
}
RCT_CUSTOM_VIEW_PROPERTY(positionY, id, RNSVGText)
{
if ([json isKindOfClass:[NSArray class]]) {
NSArray<NSString *> *arrayValue = (NSArray<NSString *> *)json;
view.positionY = arrayValue;
} else if ([json isKindOfClass:[NSString class]]) {
view.positionY = [NSArray arrayWithObject:json];
} else if ([json isKindOfClass:[NSNumber class]]) {
view.positionY = [NSArray arrayWithObject:[NSString stringWithFormat:@"%f", [json floatValue]]];
}
}
RCT_EXPORT_VIEW_PROPERTY(rotate, NSArray<NSString *>)
RCT_EXPORT_VIEW_PROPERTY(font, NSDictionary)
RCT_EXPORT_VIEW_PROPERTY(textLength, NSString)