4

我开始在我的 react-native 项目中为图像设置动画,但不知何故我无法为blurRadius属性设置动画。Translate并且Scale工作得很好。这是我interpolat用于模糊、缩放和平移值的代码:

// Compute image position
const imageTranslate = this.state.scrollY.interpolate({
  inputRange: [-IMAGE_MAX_HEIGHT, 0, IMAGE_MAX_HEIGHT],
  outputRange: [IMAGE_MAX_HEIGHT / 2, 0, -IMAGE_MAX_HEIGHT / 3],
  extrapolate: 'clamp',
});
// Compute image blur
const imageBlur = this.state.scrollY.interpolate({
  inputRange: [0, IMAGE_MAX_HEIGHT],
  outputRange: [0, 100],
  extrapolate: 'clamp',
});
// Compute image scale
const imageScale = this.state.scrollY.interpolate({
  inputRange: [-IMAGE_MAX_HEIGHT, 0, IMAGE_MAX_HEIGHT],
  outputRange: [2, 1, 1],
  extrapolate: 'clamp',
});

这是我的形象:

return (
  <Animated.Image
    blurRadius={imageBlur}
    source={this.props.imgSrc}
    style={[
      animatedImageStyles.backgroundImage,
      { transform: [{ translateY: imageTranslate }, { scale: imageScale }] }
    ]}
  />
);

我将this.state.scrollY值绑定在ScrollView滚动条上。

4

2 回答 2

1

您可以添加一个事件侦听器来获取动画模糊值并更改状态。然后将您的blurValue状态放入blurRadius道具中。

this.state.blurAnimation.addListener(({value}) => this.setState({blurValue:value}));
于 2019-06-11T18:30:35.590 回答
0

您的问题出现的时间表明解决方案应该像升级 React Native 一样简单。在 0.46 版中添加了对图像的模糊半径支持。我刚刚创建了一个新的 react-native 应用程序并在图像上实现了 3 个动画,其中一个是 blurRadius,一切正常。这是版本 0.49.5。升级应该可以解决您的问题!

请注意,Android 上目前似乎存在问题,请参阅https://github.com/facebook/react-native/issues/16494

我注意到 blurRadius 在 RN 0.48 的 iOS 上也不起作用,但 0.49.5(可能更早)就可以了。在 0.48 和 0.49 的发行说明中没有提到 blurRadius。

于 2017-11-02T12:19:09.433 回答