Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native react本机动画无法正常工作_React Native - Fatal编程技术网

React native react本机动画无法正常工作

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:

我试图创建动画标题,其中的高度,字体大小和位置正在改变,而滚动像uber的标题

它可以工作,但并不顺利

当我慢慢滚动时,它震动得很快

建造商:

  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();