Implement NativeAnimated modulus node on Android
Summary: This diff implements ModulusAnimatedNode on Android, bringing Android up to date with JS and iOS native animation APIs. Closes https://github.com/facebook/react-native/pull/10681 Differential Revision: D4120162 fbshipit-source-id: 4e58e1b6309c1c7a12ef835547a3f3d321c20714
This commit is contained in:
parent
96cf9bb0c0
commit
9b4927c9c4
|
@ -0,0 +1,40 @@
|
|||
/**
|
||||
* Copyright (c) 2015-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*/
|
||||
|
||||
package com.facebook.react.animated;
|
||||
|
||||
import com.facebook.react.bridge.JSApplicationCausedNativeException;
|
||||
import com.facebook.react.bridge.ReadableArray;
|
||||
import com.facebook.react.bridge.ReadableMap;
|
||||
|
||||
/*package*/ class ModulusAnimatedNode extends ValueAnimatedNode {
|
||||
|
||||
private final NativeAnimatedNodesManager mNativeAnimatedNodesManager;
|
||||
private final int mInputNode;
|
||||
private final int mModulus;
|
||||
|
||||
public ModulusAnimatedNode(
|
||||
ReadableMap config,
|
||||
NativeAnimatedNodesManager nativeAnimatedNodesManager) {
|
||||
mNativeAnimatedNodesManager = nativeAnimatedNodesManager;
|
||||
mInputNode = config.getInt("input");
|
||||
mModulus = config.getInt("modulus");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update() {
|
||||
AnimatedNode animatedNode = mNativeAnimatedNodesManager.getNodeById(mInputNode);
|
||||
if (animatedNode != null && animatedNode instanceof ValueAnimatedNode) {
|
||||
mValue = ((ValueAnimatedNode) animatedNode).mValue % mModulus;
|
||||
} else {
|
||||
throw new JSApplicationCausedNativeException("Illegal node ID set as an input for " +
|
||||
"Animated.modulus node");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -93,6 +93,8 @@ import javax.annotation.Nullable;
|
|||
node = new DivisionAnimatedNode(config, this);
|
||||
} else if ("multiplication".equals(type)) {
|
||||
node = new MultiplicationAnimatedNode(config, this);
|
||||
} else if ("modulus".equals(type)) {
|
||||
node = new ModulusAnimatedNode(config, this);
|
||||
} else if ("diffclamp".equals(type)) {
|
||||
node = new DiffClampAnimatedNode(config, this);
|
||||
} else if ("transform".equals(type)) {
|
||||
|
|
Loading…
Reference in New Issue