Implement completion callback for LayoutAnimation on Android

Summary: All animations are scheduled by the UIManager while it processes a batch of changes, so we can just wait to see what the longest animation is and cancel+reschedule the callback.

Reviewed By: mdvacca

Differential Revision: D14656733

fbshipit-source-id: 4cbbb7e741219cd43f511f2ce750c53c30e2b2ca
This commit is contained in:
Pieter De Baets
2019-04-03 04:42:14 -07:00
committed by Facebook Github Bot
parent a333c2b202
commit f571c62ddf
7 changed files with 71 additions and 37 deletions
@@ -369,14 +369,16 @@ public class UIViewOperationQueue {
private class ConfigureLayoutAnimationOperation implements UIOperation {
private final ReadableMap mConfig;
private final Callback mAnimationComplete;
private ConfigureLayoutAnimationOperation(final ReadableMap config) {
private ConfigureLayoutAnimationOperation(final ReadableMap config, final Callback animationComplete) {
mConfig = config;
mAnimationComplete = animationComplete;
}
@Override
public void execute() {
mNativeViewHierarchyManager.configureLayoutAnimation(mConfig);
mNativeViewHierarchyManager.configureLayoutAnimation(mConfig, mAnimationComplete);
}
}
@@ -741,9 +743,8 @@ public class UIViewOperationQueue {
public void enqueueConfigureLayoutAnimation(
final ReadableMap config,
final Callback onSuccess,
final Callback onError) {
mOperations.add(new ConfigureLayoutAnimationOperation(config));
final Callback onAnimationComplete) {
mOperations.add(new ConfigureLayoutAnimationOperation(config, onAnimationComplete));
}
public void enqueueMeasure(