Ton*_*haz 5 scrollview reactjs react-native android-collapsingtoolbarlayout react-animated
我在 ReactNative 中制作了一个折叠收费栏,当Animated.ScrollView contentOffset.y 等于 240时,我需要停止动画。如果我在外部函数中放置任何条件或调用 Animated.event,它就无法工作。
\n\nAnimated.Value.stopAnimation ()也不起作用。
\n\n这有效:
\n\n<Animated.ScrollView\n scrollEventThrottle={1}\n onScroll={\n Animated.event(\n [{nativeEvent: {contentOffset: {y: this.state.scrollY}}}],\n {useNativeDriver: true}\n )\n }\n>\n...\nRun Code Online (Sandbox Code Playgroud)\n\n这不起作用:
\n\nhandlerScroll() {\n Animated.event(\n [{nativeEvent: {contentOffset: {y: this.state.scrollY}}}]\n {useNativeDriver: true}\n )\n}\n...\nrender() {\n return(\n <Animated.ScrollView\n scrollEventThrottle={1}\n onScroll={this.handlerScroll.bind(this)}\n >\n )\n}\n...\nRun Code Online (Sandbox Code Playgroud)\n\n这也不起作用\xc2\xb4t
\n\n<Animated.ScrollView\n scrollEventThrottle={1}\n onScroll={\n this.state.canScroll &&\n Animated.event(\n [{nativeEvent: {contentOffset: {y: this.state.scrollY}}}],\n {useNativeDriver: true}\n )\n }\n>\n...\nRun Code Online (Sandbox Code Playgroud)\n\n我不知道我还能用什么来停止我的动画。
\n\n我需要做出这样的效果:
\n\n\n小智 1
为什么不将滚动事件映射用于设置为“clamp”的interpolate动画,而不是停止滚动事件映射?extrapolate这将阻止您的动画超出输入和输出值的范围。
不确定您\xe2\x80\x99尝试设置什么样式的动画,但为了展示示例,让\xe2\x80\x99s说它是一个translateY变换:
\n\n// onScroll map data to Animated value\nonScroll={Animated.event(\n [{ nativeEvent: { contentOffset: { y: this.state.scrollY } } }],\n { useNativeDriver: true }\n)}\n\n<Animated.View\n style={{\n transform: [{\n translateY: this.state.scrollY.interpolate({\n inputRange: [0, 240],\n outputRange: [0, -160],\n extrapolate: \'clamp\' // clamp so translateY can\xe2\x80\x99t go beyond -160\n })\n }]\n }}\n>\n ...\n</Animated.View>\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
9900 次 |
| 最近记录: |