我正在使用PanGestureHandler
中的react-native-gesture-handler
:
<PanGestureHandler
onGestureEvent={this._onGestureEvent}
onHandlerStateChange={this._onHandlerStateChange}>
<View/>
</PanGestureHandler>
_onHandlerStateChange = event => {
if (event.nativeEvent.oldState === State.ACTIVE) {
this._lastOffset.y += event.nativeEvent.translationY;
if (this._lastOffset.y <= 200) {
this._lastOffset.y = 0;
Animated.timing(this._translateY, {
toValue: 100,
duration: 500,
}).start();
return;
} else {
this._translateY.setOffset(this._lastOffset.y);
}
this._translateY.setValue(0);
}
};
this._onGestureEvent = ({ nativeEvent }) => {
this._translateY.setValue(nativeEvent.translationY);
};
我希望如果用户将View
拖动到200以下,则动画会平滑地变为100。但是当我拖动View
时,它有时会动画到期望的位置,但是在大多数情况下,它会变高或低于预期排名。我假设这是由于react-native-gesture-handler
提供给Animated.timing
的加速度或速度所致。如何禁用Animated.timing
的加速。