Kak*_*kar 6 react-native react-animated expo react-native-flatlist
我想做一个动画标题。
onScroll函数更新动画值。动画效果很好,但动画一点也不流畅。
我看到了使用如何scrollEventThrottle帮助平滑度的问题。所以我认为使用 FlatList 会很顺利,但事实并非如此。如果您在按下时滚动,则很流畅。但是如果你滚动并离开手指,它会很紧张(我不知道如何描述它。抱歉)。滚动很流畅,但动画视图(标题)动画一点也不流畅。
环境
目标平台: iOS 和 Android
构建工具: expo
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>
)
}
}Run Code Online (Sandbox Code Playgroud)
更新
因此,我尝试使用 ScrollView 实现相同的功能。但是,我认为,与 FlatList 相比,使用 ScrollView 的情况更糟。
我想我需要先提一下我是如何来到这里的。因此,我尝试通过Medium 中的一个非常好的教程来实现这一点,并且还通过观看Brent 的这个很棒的 youtube react conf 视频来实现。但是,在 youtube 视频上使用的确切代码具有相同的效果。另外,在Medium教程上,作者给了他的expo Animated header link的链接,运行起来非常流畅。但是当我复制粘贴代码时,相同的代码不能顺利工作。所以,我认为问题在于 react 或 react native 版本。如果我有任何新的更新,我会更新。谢谢你。
| 归档时间: |
|
| 查看次数: |
9835 次 |
| 最近记录: |