mirror of
https://github.com/zoriya/react-native-svg.git
synced 2026-06-06 00:12:21 +00:00
Implement useNativeDriver support for animation of some text properties
This commit is contained in:
@@ -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,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)
|
||||
|
||||
Reference in New Issue
Block a user