日常项目中,经常遇到一些表情雨/金币雨/彩带雨 等下落的动画,之前做android原生的时候,写过类似的效果,主要通过自定义view 在onDraw里绘制下落的过程,具体可以看下我的这篇github地址android 仿微信表情雨下落,现在转战 react-native,同样可以实现这样的效果,主要用到的动画库 react-native-animatable

AAffA0nNPuCLAAAAAElFTkSuQmCC

安装 yarn add react-native-animatable库

主要用到的动画是移动下落,即translateY,从屏幕顶部下落至底部,同时过程中可以左右摇摆,每次随机图片下落。

_FailAnimation = ({style,duration,delay,startY,speed,children}) => {

return

style={style}

duration={duration}

delay={delay}

animation={{

from: {translateY: startY},

to: {translateY: this.state.parentHeight + speed}

}}

easing={t => Math.pow(t, 1.2)}

useNativeDriver>

{children}

}

_SwingAnimation = ({delay, duration, children}) => {

return

animation={{

0: {

translateX: -12,

rotate: '10deg',

},

0.5: {

translateX: 0,

rotate: '0deg',

},

1: {

translateX: 12,

rotate: '-10deg',

},

}}

delay={delay}

duration={duration}

direction="alternate"

easing="ease-in-out"

iterationCount="infinite"

useNativeDriver>

{children}

}

主要用到的动画,动画是可以相互嵌套的

range(count).map((i) =>(

key={i}

startY={startY}

speed={speed}

style={{

position: "absolute",

left: Math.random() * this.state.parentWidth

}}

duration={duration}

delay={i * (duration / count)}

>

delay={Math.random() * duration }

duration={duration}

>

{this._imgRandom(imgs)}

))

通过外部传属性imgs图片数组

imgs={imgs}

count={35}

duration={1500}>

这个github地址里后续会记录平时学习工作中用到的rn方面的知识点,这会是一个长期的过程,我自己也会坚持下去。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐