Редактировать: вам также нужно убедиться, что у вас есть анимируемый FlatList.
В React Native 0.57.0 вы можете просто использовать Animated.FlatList
.Ниже RN 0,57 вы можете сделать это:
const AnimatedFlatList = Animated.createAnimatedComponent(FlatList)
В вашем конструкторе:
constructor(props) {
super(props)
this.state = {
//you only need this one
scale: new Animated.Value(0),
}
}
изменить свой стиль pic
:
const pic = {
margin: SCREEN_WIDTH/35,
width: SCREEN_WIDTH/3,
height: SCREEN_HEIGHT/3,
transform: [{ scale: this.state.scale }],
opacity: this.state.scale
};
и ваш show
style:
const show ={
opacity: this.state.scale
};
Так как масштаб начинается с 0
, у элемента будет высота 0. Если вы анимируете scale
к 1, то он будет иметь ширину SCREEN_WIDTH/3
и высотуSCREEN_HEIGHT/3
Теперь ваша анимация просто:
Animated.timing(
this.state.scale,
{ toValue: 1, duration: 750 }
).start()
Теперь любые компоненты с этими стилями будут анимированы.Если вы хотите, чтобы они анимировались в поле зрения, вам, вероятно, следует вызвать анимацию в componentDidMount
. Вы также можете изменить значения this.state.scale
, чтобы подогнать другие анимации через interpolation
.Например, если вы хотите скрыть компонент во время анимации, вы можете создать стиль:
const hide = {
opacity: this.state.scale.interpolate({ inputRange: [0,1], outputRange: [1,0]})
}