React native react本机动画无法正常工作
我试图创建动画标题,其中的高度,字体大小和位置正在改变,而滚动像uber的标题 它可以工作,但并不顺利 当我慢慢滚动时,它震动得很快 建造商:React native react本机动画无法正常工作,react-native,React Native,我试图创建动画标题,其中的高度,字体大小和位置正在改变,而滚动像uber的标题 它可以工作,但并不顺利 当我慢慢滚动时,它震动得很快 建造商: constructor(props) { super(props); this.state = { fontSizeAnimation: new Animated.Value(30), positionX: new Animated.Value(0), positionY: new Animated.Value(0), height:
constructor(props) {
super(props);
this.state = {
fontSizeAnimation: new Animated.Value(30),
positionX: new Animated.Value(0),
positionY: new Animated.Value(0),
height: new Animated.Value(0),
positionAnimation: new Animated.ValueXY(),
scrollY: 0,
counter: 0,
}
}
动画的功能:
animateTitle = (e) => {
const scrollY = e.nativeEvent.contentOffset.y;
if(scrollY - this.state.scrollY > 5 || scrollY - this.state.scrollY < -5) {
this.setState({counter: this.state.counter+1})
this.setState({scrollY});
Animated.parallel([
Animated.timing(this.state.height, {
toValue: this.state.scrollY,
duration: 0,
easing: Easing.linear
}),
Animated.timing(this.state.fontSizeAnimation, {
toValue: this.state.scrollY,
duration: 0,
easing: Easing.linear
})
]).start(() => {
this.state.positionAnimation.setValue({
x: this.state.scrollY > 50? 50 : this.state.scrollY,
y: this.state.scrollY > 50? -50 : -this.state.scrollY,
})
})
}
背面:{
位置:“绝对”,
前20名,
左:10,,
身高:30,
宽度:30
},
标题:{
位置:“绝对”,
paddingTop:5,
排名:60,
左:10
},
标题:{
职位:“相对”,
背景颜色:“灰色”,
}
}); 您的动画当前正在JS线程上运行。您可以通过以下方式轻松地将动画移动到本机线程:
Animated.timing(this.state.animatedValue, {
toValue: 1,
duration: 500,
useNativeDriver: true, // <-- Adding this line
}).start();
Animated.time(this.state.animatedValue{
toValue:1,
持续时间:500,
useNativeDriver:true,//您的动画当前正在JS线程上运行。您可以通过以下方式轻松将动画移动到本机线程:
Animated.timing(this.state.animatedValue, {
toValue: 1,
duration: 500,
useNativeDriver: true, // <-- Adding this line
}).start();
Animated.time(this.state.animatedValue{
toValue:1,
持续时间:500,
useNativeDriver:true,//如果您想平滑地设置布局动画(height
),您应该使用LayoutImation
。下面是一个开始。如果您想平滑地设置布局动画(height
),您应该使用LayoutImation
)。下面是一个开始。尝试设置持续时间:300尝试设置持续时间:300@mohdUseNativeDriver不能与height一起使用,或者FontSizeActive驱动程序可以与Animated.timing()和Animated.event()一起使用,这在设置滚动事件的动画时非常有用。所谓本机,我的意思是将代码的动画部分发送到本机端(java或objective C实现),这样它就不必在每次值更改时都跨越JS到本机桥接器。为了更好地理解,您可以阅读本文:@mohd UseNativeDriver不能与height一起使用,或者FontSizeActive驱动程序可以与Animated.timing()和Animated.event()一起使用这在设置滚动事件的动画时非常有用。所谓本机,我指的是将代码的动画部分发送到本机端(java或objective C实现),这样它就不必在每次值更改时都要跨越JS到本机桥接器。为了更好地理解,您可以阅读本文:
Animated.timing(this.state.animatedValue, {
toValue: 1,
duration: 500,
useNativeDriver: true, // <-- Adding this line
}).start();