我们常见某些APP上滑的时候,NavBar颜色会从透明渐变为某种颜色

原理非常简单,根据scrollView的回调动态修改NavBar的透明度即可。

在RN中,尤其是ListView中这个回调不是很好找,故贴一下方便别人找到。

1.scrollView

<ScrollView onScroll={(event)=>{this.setState({scrollOffset:event.nativeEvent.contentOffset.y});}} scrollEventThrottle={15}/>

scrollView有一个onScroll的函数,会回调event,其中event中包含了滑动的距离,我们设置在state的参数名为  scrollOffset

上滑时该值为负,下滑时为正。

所以我们只要对于Navbar设定透明度为:

var opacity;
var maxDistance = 100;
if(this.state.scrollOffset<=0){
   opacity = 0;
}else if(this.state.scrollOffset<=maxDistance){
   opacity = this.state.scrollOffset/maxDistance*1;
}else{
   opacity = 1;
}

  

假如下面的View是我们的NavBar,我们就可以通过设定如下的背景色的方式来实现这种效果。

<View style={{position:'absolute',width:screenWidth,height:64,top:0,zIndex:99,backgroundColor:'rgba(108,193,224,'+opacity+')'}}/>

 

2.listView

listView有个数据源回调,能传递当前listView的scrollView,然后定义该scrollView中onScroll函数,即可获得listView的滑动距离

          <ListView
            ref = {"listView"}
            style={styles.listView}
            dataSource={this.state.data}
            renderRow={this._renderRow.bind(this) }
            enableEmptySections={true}
            removeClippedSubviews={false}
            renderScrollComponent ={props => <ScrollView {...props} refreshControl={this.renderRefreshView()} onScroll={(event)=>{this.setState({scrollOffset:event.nativeEvent.contentOffset.y});}} scrollEventThrottle={15}/>}
            >
          </ListView>

关于scrollEventThrottle参数:
该参数只在iOS上有效,指的是onScroll回调的频率,默认值回调1次。值越高,每秒回调次数越多,也意味着显示更精确,但更耗资源。

scrollView的官方文档页面:
http://facebook.github.io/react-native/releases/0.37/docs/scrollview.html

ReactNative 根据scrollView/listview滑动距离动态修改NavBar颜色的更多相关文章

  1. echarts系列之动态修改柱状图颜色

    echarts根据某一变量动态修改柱状图颜色 1.option中参数配置项series { "name":"Android", "type" ...

  2. Android动态修改图片颜色的实现方式分析

    版权声明:本文为博主原创文章,未经博主允许不得转载. 1.修改色相.饱和度.亮度 参看:http://blog.csdn.NET/sjf0115/article/details/7267063 2.使 ...

  3. ScrollView 与ListView 滑动冲突完美解决

    一.介绍ListView高度的设置方法 二.根据实际需求解决冲突问题 一.介绍ListView高度的设置方法 在ScrollView中使用ListView,ListView的高度会不正常. 方式一:在 ...

  4. ScrollView和ListView滑动冲突问题

    1.在ScrollView里面嵌套ListView时,ListView的滑动事件无法响应. 先看下事件分发的过程: 由父View层的  onInterceptTouchEvent    到中间层的on ...

  5. Android实践之ScrollView中滑动冲突处理

    转载注明出处:http://blog.csdn.net/xiaohanluo/article/details/52130923 1. 前言 在Android开发中,假设是一些简单的布局.都非常easy ...

  6. android中随着ScrollView的滑动,titleBar状态的改变

    今天项目有一个需求,,类是于QQ空间里面的一个功能,于是就研究了一下,嗯,说这么多,可能还有人不知道指的是那个,直接上效果图.见谅,不会弄动态图:   对,就是这种效果,我研究了一下,思路如下: 1. ...

  7. 当ViewPager嵌套在ScrollView/ListView里时,手势冲突如何处理?

    有时我们需要将ViewPager嵌套在其他已经含有手势动作的ViewGroup里,如ScrollView,ListView时,会造成手势冲突,如表现为ViewPager向左划时,不小心向上移动了一点距 ...

  8. Scroller应用:ListView滑动删除

    1.设计思路 在Scroller的应用--滑屏实现中使用Scroller实现滑屏效果,这里使用Scroller与ListView实现相似QQ滑动.然后点击删除功能.设计思路是Item使用Scrolle ...

  9. iOS 动态修改导航栏颜色 UINavigationBar

    示例 所谓动态修改  意思是 在当前页面滚动的过程中 亦或 是在 触发返回事件\进入一个新的页面  导航栏的动态变化 由于系统级别的navBar 高度集成  很多自己想实现的功能 很不好弄 如果是通过 ...

随机推荐

  1. Waud.js – 使用HTML5降级处理的Web音频库

    Waud.js 是一个Web音频库,有一个HTML5音频降级处理方案. 它允许您利用Web音频API为你的Web应用程序控制音频功能.在不支持Web音频API的非现代浏览器使用HTML5音频降级方案. ...

  2. 从Java String实例来理解ANSI、Unicode、BMP、UTF等编码概念

    转(http://www.codeceo.com/article/java-string-ansi-unicode-bmp-utf.html#0-tsina-1-10971-397232819ff9a ...

  3. 15-static和extern关键字1-对函数的作用

    一.extern与函数 如果一个程序中有多个源文件(.c),编译成功会生成对应的多个目标文件(.obj),这些目标文件还不能单独运行,因为这些目标文件之间可能会有关联,比如a.obj可能会调用c.ob ...

  4. vs2010中如何设置Visual Assist方便地使用现成的代码编辑器风格

    风格setting可以在下面网站上获取: http://studiostyl.es/ 在VS2010+VA直接使用会有2个显著的问题: 1,有些符号颜色太深,与黑色背景几乎融为一体: 2,光标落入大小 ...

  5. 关于WCF测试时出现无法从***获取元数据问题

    在我们已经创建成功一个WCF服务后,通过本机localhost访问和测试均没有任何问题.但是寄宿在IIS/其他平台下时便会出现以下的错误信息 1.使用WCF Test Client错误 2.通过C#引 ...

  6. 返回人民币大写方式(num2rmb)

    CREATE OR REPLACE FUNCTION num2rmb(Pi_MONEY NVARCHAR2) RETURN NVARCHAR2 IS -- PURPOSE :返回人民币大写方式 v_N ...

  7. PHP语法(一):基础和变量

    相关链接: PHP语法(一):基础和变量 PHP语法(二):数据类型.运算符和函数 PHP语法(三):控制结构(For循环/If/Switch/While) 最近有个H5项目的需求,需要服务端,考察过 ...

  8. 2015-12-01 SQL查询语句基础

    1.查询全体学生的学号与姓名select sno,snamefrom student;3.查询全体学生的详细信息select *from student;4.查询全体学生的姓名及其出生年份select ...

  9. JAVA UUID 生成

    UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.通常平台会提供生成UUID的API.UUID按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址.纳秒级时间.芯 ...

  10. 域普通用户执行金蝶K/3权限不够解决方法

    一.问题 公司财务部的机器加入域后,用户一直授予本地管理员的权限,主管坚持要撤销管理员权限,而金蝶K3没管理员权限又无法执行. 报错信息为“注册表许可权不够,请参考安装目录的帮助档案进行许可权的配置. ...