- 内容简介
- 译者序
- 前言
- 第 1 章 安装配置新项目
- 第 2 章 Flexbox 布局介绍
- 第 3 章 用 React Native 开发一个应用
- 第 4 章 在 React Native 中使用导航
- 第 5 章 动画和滑动菜单
- 第 6 章 用 React Native 绘制 Canvas
- 第 7 章 使用 React Native 播放音频
- 第 8 章 你的第一个自定义视图
- 第 9 章 Flux 介绍
- 第 10 章 处理复杂的应用程序状态
- 第 11 章 使用 Node 来实现服务端 API
- 第 12 章 在 React Native 中使用文件上传
- 第 13 章 理解 JavaScript Promise
- 第 14 章 fetch 简介
- 第 15 章 在 iOS 中使用 SQLite
- 第 16 章 集成 Google Admob
- 第 17 章 React Native 组件国际化
- 附录 A React.js 快速介绍
- 附录 B Objective-C Primer
- 附录 C webpack 入门
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
它是如何运行的
正如你通过代码看到的,它非常短。实现这个 SlideMenu,我们仅需要如下 5 个现有的 React Native 组件。
- LayoutAnimation:用于完成 center view 的拖动。
- PanResponder:处理用户拖动。
- StyleSheet:设置正确的尺寸和坐标。
- View:为 leftview 与 center view 创建容器。
- Dimensions:获得屏幕尺寸。
有 center view 和 leftview 两个容器,leftview 绝对定位在下面,不能移动,center view 定位在上面。向右拖动 center view 可以看到 leftview, leftview 可以是菜单或者其他什么组件,并没有特别限制。
this.offset 的值是当 center view 开始拖动时相对于左边的坐标值,而 this.left 是 center view 拖动后基于 this.offset 的位移值。
以下关键代码能够保证只有当横向拖动大于竖向拖动时,center view 才可以开始移动。
onMoveShouldSetPanResponder: (evt, gestureState) => { return Math.abs(gestureState.dx) > Math.abs(gestureState.dy) && Math.abs(gestureState.dx) > 10 },
因此,你可以在 center view 放一个 scroll view 或者 list view,它们的滚动与滑动菜单互不干扰。最后,当用户滑动打开屏幕宽度的 1/4 以上时,抬起手指后其余的部分将自动打开,当用户滑动关闭了屏幕宽度的一半以上时,抬起手指后其余部分将自动关闭。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论