Permalink
Browse files

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 #10681

Differential Revision: D4120162

fbshipit-source-id: 4e58e1b6309c1c7a12ef835547a3f3d321c20714
  • Loading branch information...
1 parent 96cf9bb commit 9b4927c9c444c61b8ddf3c1f17325d1b85bf6a2d @ryangomba ryangomba committed with Facebook Github Bot Nov 2, 2016
@@ -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 @@ public void createAnimatedNode(int tag, ReadableMap config) {
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)) {

0 comments on commit 9b4927c

Please sign in to comment.