mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-16 12:12:20 +08:00
Summary: Modulus animation computation should use the value adjusted for offset, not the raw value. See the JS implementation here: https://github.com/facebook/react-native/blob/master/Libraries/Animated/src/AnimatedImplementation.js#L1338 cc ryangomba Closes https://github.com/facebook/react-native/pull/15502 Differential Revision: D5638901 Pulled By: shergin fbshipit-source-id: cbf47bd4082897a969e2e561ec090366884a8349
41 lines
1.4 KiB
Java
41 lines
1.4 KiB
Java
/**
|
|
* 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).getValue() % mModulus;
|
|
} else {
|
|
throw new JSApplicationCausedNativeException("Illegal node ID set as an input for " +
|
|
"Animated.modulus node");
|
|
}
|
|
}
|
|
}
|