native react 可伸缩背景_React Native 插件系列之foldview(可折叠视图)

一、插件简介

一种可折叠的视图插件,官方示例图如下:

二、插件适用范围

非常适合列表页面单项展示不开的情况

三、使用代码示例

下载下来,有Demo,改改就行;

expanded={this.state.expanded}

onAnimationStart={this.handleAnimationStart}

perspective={1000}

renderBackface={this.renderBackface}

renderFrontface={this.renderFrontface}

isRefresh={this.state.isRefresh}

>

其中,renderFrontface={this.renderFrontface}为折叠状态就展示的内容;renderBackface={this.renderBackface}为展开状态展示的第二块内容;为展开状态展示的第一块内容;

此插件只是嵌套,所以PhotoCard也可以是foldview;所以才能有例子上的效果;

四、相关错误及解答

1、报错:Invalid layout for (119)...

为什么会出现这个错误呢?

后来看官方的Issues,居然需要修改插件的源代码,那干脆把文件直接copy到本地修改好了。

找到FoldView.js,在432行修改代码如下:

五、生产运用

再好的例子也得运行到生产环境

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React Native中实现侧滑菜单可以使用第三方组件库,如react-native-drawer、react-native-side-menu等,也可以自己手写实现。以下是手写实现的简单示例: 1. 安装react-native-gesture-handler库 ```bash npm install react-native-gesture-handler ``` 2. 在App.js中引入GestureHandlerRootView,并在render方法中添加侧滑菜单和主页布局 ```javascript import { GestureHandlerRootView } from 'react-native-gesture-handler'; class App extends Component { constructor(props) { super(props); this.state = { isMenuOpen: false, }; } render() { return ( <GestureHandlerRootView style={{ flex: 1 }}> <View style={{ flex: 1 }}> {this.state.isMenuOpen ? <View style={{ flex: 1, backgroundColor: 'white' }}> <Text>侧滑菜单</Text> </View> : <View style={{ flex: 1, backgroundColor: 'white' }}> <Text>主页布局</Text> </View> } </View> </GestureHandlerRootView> ); } } ``` 3. 添加手势识别和动画 ```javascript import { PanGestureHandler, State } from 'react-native-gesture-handler'; class App extends Component { constructor(props) { super(props); this.state = { isMenuOpen: false, gestureState: State.UNDETERMINED, translateX: new Animated.Value(0), }; this.onGestureEvent = Animated.event( [{ nativeEvent: { translationX: this.state.translateX } }], { useNativeDriver: true } ); } onHandlerStateChange = event => { if (event.nativeEvent.oldState === State.ACTIVE) { const { translationX } = event.nativeEvent; if (translationX < -50) { this.setState({ isMenuOpen: true }); Animated.spring(this.state.translateX, { toValue: -200, useNativeDriver: true, }).start(); } else { Animated.spring(this.state.translateX, { toValue: 0, useNativeDriver: true, }).start(); } } }; render() { return ( <GestureHandlerRootView style={{ flex: 1 }}> <View style={{ flex: 1 }}> <PanGestureHandler onGestureEvent={this.onGestureEvent} onHandlerStateChange={this.onHandlerStateChange} > <Animated.View style={{ flex: 1, transform: [{ translateX: this.state.translateX }], }} > {this.state.isMenuOpen ? <View style={{ flex: 1, backgroundColor: 'white' }}> <Text>侧滑菜单</Text> </View> : <View style={{ flex: 1, backgroundColor: 'white' }}> <Text>主页布局</Text> </View> } </Animated.View> </PanGestureHandler> </View> </GestureHandlerRootView> ); } } ``` 这样就可以实现一个简单的侧滑菜单了。需要注意的是,手写实现的侧滑菜单可能会存在一些问题,如滑动冲突、性能问题等,使用第三方组件库可以避免这些问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值