如何使Fadein与Zindex的反应性淡化动画



我正在尝试为一个带有可滚动视图的屏幕上的消息动画。从我的flatlist组件中单击onButtonClick,可以很好地发挥作用。但是存在一个小问题,因为Animated.View位置绝对始终在屏幕顶部,因此,由于这是flatlist的最高元素,因此无法单击。我尝试了Zindex,似乎没有影响。如何修复单击动画现在的工作?

//styles
 notification: {
    position: 'absolute',
    top: 50,
    alignSelf: 'center',
    zIndex: 100
  },
  notificationWrapper: {
    height: 100,
    width: 270,
    backgroundColor: 'rgba(255,255,255,1)',
    borderRadius: 10,
    marginTop: 40,
    marginBottom: 40,
    marginLeft: 28,
    marginRight: 28,
    flexDirection: 'row',
    alignItems: 'center',
    paddingLeft: 28
  }
//js
onButtonClick = () => {
    this.fadeIn.setValue(0);
    Animated.timing(
      this.fadeIn,           
      {
        toValue: 1,
        duration: 1000,
      }
    ).start(() => {
      setTimeout(() => {
        this.fadeOut();
      }, 2000);
    });
}
fadeOut = () => {
    this.fadeIn.setValue(1);
    Animated.timing(
       this.fadeIn,
       {
         toValue: 0,
         duration: 1000,
       }
    ).start();
}
<Fragment>
  <ScrollView style={[styles.mainContainer, {flex: 1}]}>
   <FlatList
     style={{ paddingTop: 10, paddingLeft: 20, paddingRight: 20 }}
     data={favouriteData}
     keyExtractor={this.keyExtractor}
     renderItem={this.rendeCampus}
   />
 </ScrollView>
   <Animated.View                 
     style={[styles.notification, {opacity: this.fadeIn, zIndex: 
          this.fadeIn}]}
    >
      <View style={styles.notificationWrapper}>
        <Text style={{
          fontSize: 12,
          lineHeight: 15,
          color: 'rgba(42,36,66,1)',
          width: 270
        }}>This restaurant has been added to your favourites list</Text>
      </View>
   </Animated.View>
</Fragment>

我猜其他所有内容都在默认情况下zIndex: 0

尝试使用这样的插值:

this.zAnimate = this.fadeIn.interpolate({
  inputRange: [ 0, 1],
  outputRange: [-1, 9]
})

并将this.zAnimate分配给您的zIndex。您可能必须根据想要何时褪色的何时逐步使用OutputRange,然后进入前面。

您可能需要使用transform推开视图。例如。

this.fadeIn.setValue(1);
    Animated.timing(
       this.fadeIn,
       {
         toValue: 0,
         duration: 1000,
       }
    ).start(() => {
      this.transform.setValue(-200);
    });

相关内容

  • 没有找到相关文章

最新更新