mirror of
https://github.com/zoriya/react-native-svg.git
synced 2026-06-03 23:16:13 +00:00
[android] Only render once per frame when animating several svg nodes.
This commit is contained in:
@@ -11,10 +11,6 @@ public class RenderableView<T extends VirtualNode> extends ViewGroup {
|
||||
super(reactContext);
|
||||
}
|
||||
|
||||
T getShadowNode() {
|
||||
return shadowNode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setId(int id) {
|
||||
super.setId(id);
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
|
||||
package com.horcrux.svg;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
import android.util.SparseArray;
|
||||
|
||||
import com.facebook.react.bridge.Dynamic;
|
||||
@@ -781,8 +780,7 @@ class RenderableViewManager<T extends VirtualNode> extends ViewGroupManager<Rend
|
||||
if (root == null) {
|
||||
return;
|
||||
}
|
||||
Bitmap output = view.drawOutput();
|
||||
root.setBitmap(output);
|
||||
root.invalidate();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -84,20 +84,22 @@ public class SvgView extends ViewGroup {
|
||||
SvgViewManager.dropSvgView(this);
|
||||
}
|
||||
|
||||
public void setBitmap(Bitmap bitmap) {
|
||||
@Override
|
||||
public void invalidate() {
|
||||
super.invalidate();
|
||||
if (mBitmap != null) {
|
||||
mBitmap.recycle();
|
||||
}
|
||||
mBitmap = bitmap;
|
||||
invalidate();
|
||||
mBitmap = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDraw(Canvas canvas) {
|
||||
super.onDraw(canvas);
|
||||
if (mBitmap != null) {
|
||||
canvas.drawBitmap(mBitmap, 0, 0, null);
|
||||
if (mBitmap == null) {
|
||||
mBitmap = getShadowNode().drawOutput();
|
||||
}
|
||||
canvas.drawBitmap(mBitmap, 0, 0, null);
|
||||
}
|
||||
|
||||
private SvgViewShadowNode getShadowNode() {
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
|
||||
package com.horcrux.svg;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
import android.util.SparseArray;
|
||||
|
||||
import com.facebook.react.uimanager.ThemedReactContext;
|
||||
@@ -90,7 +89,7 @@ class SvgViewManager extends ViewGroupManager<SvgView> {
|
||||
|
||||
@Override
|
||||
public void updateExtraData(SvgView root, Object extraData) {
|
||||
root.setBitmap((Bitmap) extraData);
|
||||
root.invalidate();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -55,7 +55,6 @@ public class SvgViewShadowNode extends LayoutShadowNode {
|
||||
private boolean mInvertible = true;
|
||||
private boolean mRendered = false;
|
||||
|
||||
|
||||
public SvgViewShadowNode() {
|
||||
mScale = DisplayMetricsHolder.getScreenDisplayMetrics().density;
|
||||
}
|
||||
@@ -144,7 +143,7 @@ public class SvgViewShadowNode extends LayoutShadowNode {
|
||||
@Override
|
||||
public void onCollectExtraUpdates(UIViewOperationQueue uiUpdater) {
|
||||
super.onCollectExtraUpdates(uiUpdater);
|
||||
uiUpdater.enqueueUpdateExtraData(getReactTag(), drawOutput());
|
||||
uiUpdater.enqueueUpdateExtraData(getReactTag(), null);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user