mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-09 22:43:10 +08:00
Support for stopping animations that run on UI thread.
Summary:This change extends animated native module API with `stopAnimation` method that is responsible for interrupting actively running animation as a reslut of a JS call. In order for the `stopAnimation` to understand `animationId` argument I also had to add `animationId` to `startAnimation` method. As JS thread runs in parallel to the thread which executes the animation there is a chance that JS may call `stopAnimation` after the animation has finished. Because of that we are not doing any checks on the `animationId` parameter passed to `stopAnimation` in native and if the animation does not exists in the registry we ignore that call. **Test Plan** Run JS tests: `npm test Libraries/Animated/src/__tests__/AnimatedNative-test.js` Run java tests: `buck test ReactAndroid/src/test/java/com/facebook/react/animated` Closes https://github.com/facebook/react-native/pull/7058 Differential Revision: D3211906 fb-gh-sync-id: 3761509651de36a550b00d33e2a631c379d3900f fbshipit-source-id: 3761509651de36a550b00d33e2a631c379d3900f
This commit is contained in:
committed by
Facebook Github Bot 8
parent
63adb48dc4
commit
cd11738819
@@ -212,6 +212,7 @@ public class NativeAnimatedModule extends ReactContextBaseJavaModule implements
|
||||
|
||||
@ReactMethod
|
||||
public void startAnimatingNode(
|
||||
final int animationId,
|
||||
final int animatedNodeTag,
|
||||
final ReadableMap animationConfig,
|
||||
final Callback endCallback) {
|
||||
@@ -219,6 +220,7 @@ public class NativeAnimatedModule extends ReactContextBaseJavaModule implements
|
||||
@Override
|
||||
public void execute(NativeAnimatedNodesManager animatedNodesManager) {
|
||||
animatedNodesManager.startAnimatingNode(
|
||||
animationId,
|
||||
animatedNodeTag,
|
||||
animationConfig,
|
||||
endCallback);
|
||||
@@ -226,6 +228,16 @@ public class NativeAnimatedModule extends ReactContextBaseJavaModule implements
|
||||
});
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
public void stopAnimation(final int animationId) {
|
||||
mOperations.add(new UIThreadOperation() {
|
||||
@Override
|
||||
public void execute(NativeAnimatedNodesManager animatedNodesManager) {
|
||||
animatedNodesManager.stopAnimation(animationId);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
public void connectAnimatedNodes(final int parentNodeTag, final int childNodeTag) {
|
||||
mOperations.add(new UIThreadOperation() {
|
||||
|
||||
Reference in New Issue
Block a user