反应原生动画

时间:2016-12-05 05:21:55

标签: android react-native

我正在寻找徽标,从实际尺寸减少到某个默认尺寸,完成后应显示一些文字数据....

但是当我看到facebook网站时,没有找到我从默认情况下缩小徽标大小的地方。

我应该如何实现这个

 Animated.timing(
this.spinValue,
{
  toValue: 1,
  duration: 4000,
  easing: Easing.linear
}

我没有得到如何更改图片的大小...

随着图像尺寸的减小,我希望图像在顶部移动,以便在底部留下一些空间,我希望在完成动画时显示其他文字......

很抱歉,如果我错了,请帮我解决一些文档或参考资料

我试过了:

const imagePos = this.state.scaleValue.interpolate({
      inputRange: [0, 1],
      outputRange: [500, 200]
    })
    const imageTop = this.state.scaleValue.interpolate({
        inputRange: [0, 1],
        outputRange: [400, 100]
      })

  return <View>
  <Animated.Image style={{ height:imagePos ,width:imagePos ,top : imageTop }} resizeMode={'contain'} source={require('../assets/new_images/logo1.png')} />

  </View>

2 个答案:

答案 0 :(得分:1)

例如,您可以使用“scale”缩小componentDidMount上的图像大小。如果我理解正确,这就是你想要的

class Playground extends React.Component {
  state = {
    scaleValue: new Animated.Value(1),
  }

  componentDidMount() {
    Animated.spring(                          
      this.state.scaleValue,                 
      {toValue: 0.5}
    ).start();                                
  }

  render() {
    return (
      <Animated.Image                         
        source={{uri: 'http://i.imgur.com/XMKOH81.jpg'}}
        style={{
          flex: 1,
          transform: [                        
            {scale: this.state.scaleValue},  
          ]
        }}
      />
    );
  }
}

答案 1 :(得分:0)

我通过使用多个动画来实现这一目标

这是我的componentdidmount

Animated.timing(
        this.state.scaleValue,
        {toValue: 1 ,duration : 1000 ,easing : Easing.ease ,delay:0}
      ).start();

这是我的rendet

   const imagePos = this.state.scaleValue.interpolate({
      inputRange: [0, 1],
      outputRange: [200, 150]
    })
    const imageTop = this.state.scaleValue.interpolate({
        inputRange: [0, 1],
        outputRange: [0.35*windowHeight, 0.1*windowHeight]
      })
      const content = this.state.scaleValue.interpolate({
          inputRange: [0, 1],
          outputRange: [0.6*windowHeight, 0]
        })

  return <View style={{flex:1,alignItems:'center'}}>
  <Animated.Image style={{ height:imagePos ,width:imagePos ,top :imageTop}} resizeMode={'contain'} source={require('../assets/new_images/main_screen.png')} />
  <Animated.View style={{flex:1,alignItems:'center',top : content}}>

    <View><Text>Hi this is bottom content</Text></View>
    </Animated.View>
  </View>