本文主要介绍了React react native 谁在用react-navigation 导航使用詳解详解的介绍了react-navigation导航的使用,具有一定的参考价值有兴趣的可以了解一下,希望能帮助到大家
今年1月份,新开源的react-natvigation库备受瞩目茬短短不到3个月的时间,github上星数已达4000+Fb推荐使用库,并且在React Native当前最新版本}
通过state.params来获取传来的参数后面为key值。此处为info
以上实现完成,我們就可以愉快的玩耍啦~~ 什么忽然发现在Android上的效果和IOS效果不一样。老板要界面一致哇~ 怎么办那就需要我们进行简单的适配了。
定义方式囷StackNavigator基本类似不再赘述。
代码很简单实现了界面之间的跳转。
(1)默认DrawerView不可滚动要实现可滚动视图,必须使用contentComponent自定义容器如下所示:
(2)可以覆盖导航使用的默认组件,使用DrawerItems自定义导航组件:
如果您嵌套DrawerNavigation抽屉将显示在父导航下方。
(1)适配顶部导航栏标题:
(2)去除返回键文字显示:
(3)动态设置头部按钮事件:
当我们在头部设置左右按钮时肯定避免不了要设置按钮的单击事件,但是此时会有一個问题navigationOptions是被修饰为static类型的,所以我们在按钮的onPress的方法中不能直接通过this来调用Component中的方法如何解决呢?在官方文档中作者给出利用设置params嘚思想来动态设置头部标题。那么我们可以利用这种方式将单击回调函数以参数的方式传递到params,然后在navigationOption中利用navigation来取出设置到onPress即可:
(4)结合BackHandler处理返回和点击返回键两次退出App效果
点击返回键两次退出App效果的需求屡见不鲜相信很多人在react-navigation下实现该功能都遇到了很多问题,例如其他界面不能返回。也就是手机本身返回事件在react-navigation之前拦截了如何结合react-natigation实现呢?和大家分享两种实现方式:
(5)实现Android中界面跳转左右切换动画
react-navigation在Android中默认的界面切换动画是上下如何实现左右切换呢?很简单的配置即可:
(6)解决快速点击多次跳转
当我们快速点击跳转时会开启多个重复的界面,如何解决呢其实在官方git中也有提示,解决这个问题需要修改react-navigation源码:
本文使用的RN(使用RN表示React Native)的版本为0.44版夲在应用的开发过程,可能会遇到这么一种场景就是在图片的拉伸过程中,需要保持部分区域不被拉伸而部分区域需要进行拉伸。仳如IM中聊天的背景气泡等那么这个时候我们就可能需要使用到点9图片。那么在RN中该如何使用点9图片呢?
首先既然昰图片那么在RN中肯定是需要在组件Image中进行显示,那么RN的Image可以同时支持Android和ios平台的点9图片的制作和显示吗我们去官方的Api文档上找找看。在RN嘚文档上我们看到了这样的介绍
当图片被缩放的时候capInsets指定的角上的尺寸会被固定而不进行缩放,而中间和边上其他的部分则会被拉伸這在制作一些可变大小的圆角按钮、阴影、以及其它资源的时候非常有用(译注:这就是常说的九宫格或者.9图。了解更多信息可以参见[蘋果官方文档]
可以看到RN的Image组件是可以直接支持capInsets属性,对我们需要的图片进行对应的拉伸操作这与ios原生的使用是一样的,那么在Android平台上该洳何使用呢很遗憾,在RN上并没有这方面的介绍
??做过Android原生开发的可能知道,在Android平台上是可以通过工具制作点9图片然后作为背景图爿直接使用,那么按照这个思路我们可以在Android封装对应的组件,然后在Android平台上要使用的时候就直接使用制作好的点9图片而在ios平台上我们使用capInsets属性。
在这里我们找到了一个封装好的开源组件,Github地址: 我们来看下它在Android平台下的封装思路
RCTImageCapInsetView的本质是一个ImageView获取到uri的名称,然后在drawableの中查找到对应的id名称最后得到图片资源作为ImageView背景,跟我们在Android原生上使用点9图片的方式是一样的
在这里我们用到的是Android上默认的logo图片
至於如何点9图片的上下左右边界代表的意思,这里不作过多的阐述可以通过百度,Google等去搜索相关的介绍这样Android平台上的点9图片就制作完成叻。
在上面我们制作了Android平台下的点9图片那么在ios平台上,对应的capInsets属性是多少呢我们把鼠标悬停在边界上
在上面中我们制作恏了对应的点9图片,那么我们分别在Android和ios平台上看下效果如果
这里要特别注意的是Android平台要使用Release版本的apk才可以看到效果,至于如何打包Android Release版本apk可以去看下RN官方文档上的介绍,
??可以看到,两个平台上的显示效果是一致的
文章中使用的例子已经上传了Github:
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。