mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-02-11 22:32:38 +08:00
LayoutAnimation support for Android RN
Reviewed By: astreet Differential Revision: D2217731 fb-gh-sync-id: d990af4b630995f95433690d5dcf510382dc34d2
This commit is contained in:
committed by
facebook-github-bot-9
parent
4890424562
commit
593a45e319
@@ -23,6 +23,7 @@ import com.facebook.react.bridge.ReactApplicationContext;
|
||||
import com.facebook.react.bridge.SoftAssertions;
|
||||
import com.facebook.react.bridge.ReactContext;
|
||||
import com.facebook.react.bridge.ReadableArray;
|
||||
import com.facebook.react.bridge.ReadableMap;
|
||||
import com.facebook.react.bridge.UiThreadUtil;
|
||||
import com.facebook.react.uimanager.debug.NotThreadSafeViewHierarchyUpdateDebugListener;
|
||||
import com.facebook.systrace.Systrace;
|
||||
@@ -322,6 +323,32 @@ public class UIViewOperationQueue {
|
||||
}
|
||||
}
|
||||
|
||||
private class SetLayoutAnimationEnabledOperation implements UIOperation {
|
||||
private final boolean mEnabled;
|
||||
|
||||
private SetLayoutAnimationEnabledOperation(final boolean enabled) {
|
||||
mEnabled = enabled;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
mNativeViewHierarchyManager.setLayoutAnimationEnabled(mEnabled);
|
||||
}
|
||||
}
|
||||
|
||||
private class ConfigureLayoutAnimationOperation implements UIOperation {
|
||||
private final ReadableMap mConfig;
|
||||
|
||||
private ConfigureLayoutAnimationOperation(final ReadableMap config) {
|
||||
mConfig = config;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
mNativeViewHierarchyManager.configureLayoutAnimation(mConfig);
|
||||
}
|
||||
}
|
||||
|
||||
private final class MeasureOperation implements UIOperation {
|
||||
|
||||
private final int mReactTag;
|
||||
@@ -576,6 +603,18 @@ public class UIViewOperationQueue {
|
||||
mOperations.add(new RemoveAnimationOperation(animationID));
|
||||
}
|
||||
|
||||
public void enqueueSetLayoutAnimationEnabled(
|
||||
final boolean enabled) {
|
||||
mOperations.add(new SetLayoutAnimationEnabledOperation(enabled));
|
||||
}
|
||||
|
||||
public void enqueueConfigureLayoutAnimation(
|
||||
final ReadableMap config,
|
||||
final Callback onSuccess,
|
||||
final Callback onError) {
|
||||
mOperations.add(new ConfigureLayoutAnimationOperation(config));
|
||||
}
|
||||
|
||||
public void enqueueMeasure(
|
||||
final int reactTag,
|
||||
final Callback callback) {
|
||||
@@ -672,6 +711,9 @@ public class UIViewOperationQueue {
|
||||
mDispatchUIRunnables.get(i).run();
|
||||
}
|
||||
mDispatchUIRunnables.clear();
|
||||
|
||||
// Clear layout animation, as animation only apply to current UI operations batch.
|
||||
mNativeViewHierarchyManager.clearLayoutAnimation();
|
||||
}
|
||||
|
||||
ReactChoreographer.getInstance().postFrameCallback(
|
||||
|
||||
Reference in New Issue
Block a user