React Native封装颜色渐变的导航栏

前言

最近在RN技术交流群中发现有不少同学在问渐变颜色的导航栏ReactNative怎么实现,有的同学说虽然实现了功能,但是滑动列表时,界面很卡顿。体验很差,正好之前开发个人RN项目OneM中也使用到了这个效果,索性就直接开源一个导航栏渐变颜色的Demo共大家学习

预览效果图

gif

技术要点

  • onScroll={this._onScroll.bind(this)} ListView组件中的onScroll 函数是在列表滚动的就时候触发的,注意: 此函数调用频率极高
  • onEndReachedThreshold={20} 此属性是用来控制ListView滚动时调用onScroll函数的频率
  • setNativeProps 此属性是直接局部刷新页面UI,而不需要执行this.setState({}),大大的减少了render()函数的调用,极大的提高了列表滑动时的性能和用户体验。

注意点

  • 最好不要在onScroll回调函数中执行this.setState({}),如果这样使用,列表页面渲染频率过高,导致列表滑动很卡顿,体验极差。

项目核心代码

_onScroll(event) {
    let y = event.nativeEvent.contentOffset.y
    let opacityPercent = y / 64
    if (y < 64) {
      this.navBar.setNativeProps({
        style: {opacity: opacityPercent}
      })
    } else {
      this.navBar.setNativeProps({
        style: {opacity: 1}
      })
    }
  }

示例Demo源码地址

https://github.com/guangqiang-liu/react-native-gradientNavigationBarDemo

总结

此Demo项目导航栏渐变效果是按照天猫APP首页渐变导航栏开发的,同学们后期如果开发类似的功能,重新自定义UI即可。如果感觉文章对你有帮助,请 给个 star 给个 关注 谢谢。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,638评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,259评论 4 61
  • 在什么场景下会出现外边距合并?如何合并?如何不让相邻元素外边距合并?给个父子外边距合并的范例块元素直接接触的垂直外...
    老虎爱吃母鸡阅读 478评论 0 0
  • 希望是指针对自己、伴侣和群体的能力形成积极态度的能力,这些能力超越了此时此刻。从这个意义上讲,我们希望明天、明年或...
    寇廷聚阅读 292评论 0 0
  • 临睡前女儿自己念叨道:“我不想去上学,妈妈明天给我请假吧!”我背对着她没有搭理她,连续四天没有去幼儿园玩疯了,估计...
    东风满树花阅读 574评论 3 7