react仿京东客户端首页导航条动画效果

之前使用好多客户端都做了这样的效果,就是可以随着滑动的距离调节导航条的透明度和颜色。所以说,这个效果学会之后,不管是京东还是qq的个人资料页,都不在话下。
实现原理:既然是随着滑动的距离来调节导航条的透明度和颜色,那么ScrollView就是少不了的了。然后,还需要的一个回调函数,用来监听它的滑动事件,这个时候我们就可以获得ScrollVie的坐标变化。最后,只需要将我们拿到的y轴的坐标变化值与导航条的属性绑定起来即可。

闲话不多说,直接上代码……
代码实现:

<ScrollView style={{flex: 1}} ref='scroll' 
        onScroll={this._onScroll.bind(this) }
        scrollEventThrottle={16}>
        ...
        ...
        ...
</ScrollView>

当ScrollView滑动的时候,onScroll方法会不停的回调,所以我们要在onScroll方法中将y轴的变化值与导航栏的属性值进行绑定。

_onScroll(e) {
        Animated.event(
            [{ nativeEvent: { contentOffset: { y: this.state.scrollY } } }],
            {
                listener: () => {
                    // let y = e.nativeEvent.contentOffset.y;
                }
            }
        )(e);
    }

注:this.state.scrollY要在构造函数中进行初始化,this.state = {scrollY: new Animated.Value(0)}。
最后就是用这个this.state.scrollY的值来动态的改变导航栏的效果。

<Animated.View
    style={{position: 'absolute',top: 0,left: 0,right: 0,height: 64,
    backgroundColor: '#fafafa',
    opacity: this.state.scrollY.interpolate({
        inputRange: [0, 100, 100 + 0.5],
        outputRange: [0, 0.9, 0.9]
        }),
    }}>
</Animated.View>

注:用的是带动画的View(Animated.View),将y轴的变化绑定到opacity属性上,随着滑动,改变导航栏的透明度,滑动100的时候,导航栏效果不变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值