我想制作一个动画标题。
onScroll函数更新动画值。动画工作得很好,但动画一点也不流畅。
我看到了这个问题如何使用scrollEventThrottle帮助平滑。所以我认为使用FlatList会很顺利,但事实并非如此。如果你的卷轴同时按压,它是光滑的。但是,如果你滚动离开手指,它是紧张的(我不知道如何描述它。对不起)。滚动是平滑的,但动画视图(标题)动画一点也不平滑。
环境
目标平台: iOS和Android
构建工具:博览会
export default class AnimatedHeader extends React.Component {
state = {
animatedValue: new Animated.Value(0),
};
_renderItem = ({item}) => {
return (
<View style={styles.nonsenseItem}>
<Text style={styles.itemText}>{item}</Text>
</View>
)
};
render() {
let scaleY = this.state.animatedValue.interpolate({
inputRange: [0, 180],
outputRange: [1, 0.5],
extrapolate: 'clamp',
});
let translateY = this.state.animatedValue.interpolate({
inputRange: [0, 180],
outputRange: [0, -100],
extrapolate: 'clamp',
});
return (
<View style={styles.container}>
<AnimatedFlatList
contentContainerStyle={{marginTop: 200}}
scrollEventThrottle={16} // <-- Use 1 here to make sure no events are ever missed
onScroll={Animated.event(
[{nativeEvent: {contentOffset: {y: this.state.animatedValue}}}],
{useNativeDriver: true} // <-- Add this
)}
data={data}
renderItem={this._renderItem}
keyExtractor={(item, i) => i}/>
<Animated.View style={[styles.headerWrapper, {transform: [{scaleY}, {translateY}]}]}/>
</View>
)
}
}
更新
因此,我尝试使用ScrollView实现相同的功能。但是,我认为,与使用ScrollView相比,使用FlatList更糟糕。
我想我得先提一下我是怎么到这里来的。所以,我尝试通过一个非常好的媒体教程来实现它,并通过观看这个令人敬畏的youtube对布伦特的回应来实现它。然而,youtube视频中使用的确切代码也有同样的效果。此外,在媒体教程中,作者给出了一个链接到他的世博会动画标题链接,这是非常顺利的工作。但是,当我复制粘贴代码时,相同的代码不能顺利工作。因此,我认为问题在于反应或反应的本土化版本。我会更新,如果我有任何新的更新。谢谢。
https://stackoverflow.com/questions/46022639
复制相似问题