【React Native开发】 - ViewParger轮播组件

首先,需要组件的配置安装:


导入组件:

import ViewPager from 'react-native-viewpager'

组件的配置:

dataSource:数据源

renderPager:渲染页面,页面显示的内容

isLoop:是否循环显示

autoPlay:是否自动轮播

locked:设置禁止触摸滚动

onChangePager:页面切换时的回调函数

renderPagerIndicator:渲染指示器

animation:渲染页面时的动画

案例操作:

import React,{Component} from  'react'
import {
    StyleSheet,
    View,
    Text,
    Image,
    Dimensions,
    Animated,
 } from 'react-native'

import ViewPager from 'react-native-viewpager'

const width = Dimensions.get('window').width
const height = Dimensions.get('window').height

const IMG = [require('./images/ic_anhui_huangshan.jpg'),
    require('./images/ic_beijing_gugong.jpg'),
    require('./images/ic_guangdong_guangzhou.jpg'),
    require('./images/ic_guangxi_guizhou.jpg')];

export default class Root extends Component{
   constructor(props){
       super(props)
       const dataSource = new ViewPager.DataSource({pageHasChanged:(p1,p2) => p1 != p2})
       this.state = {
           dataSource:dataSource.cloneWithPages(IMG)
       }
   }
    _renderPager(data,pageID){
        return (
            <Image
                style={styles.imageStyle}
                source={data}>
            </Image>
        )
    }
    render(){
        return (
            <View style={styles.container}>
                <ViewPager
                 style={styles.pagerStyle}
                    dataSource={this.state.dataSource}
                    renderPage={this._renderPager}
                    isLoop={true}
                    autoPlay={true}
                    animation = {(animatedValue, toValue, gestureState) => {
                    var velocity = Math.abs(gestureState.vx);
                    var baseDuration = 300;
                    var duration = (velocity > 1) ? 1/velocity * baseDuration : baseDuration;
                        return Animated.timing(animatedValue,
                    {
                        toValue: toValue,
                        duration: duration,
                        easing: Easing.out(Easing.exp)
                    });
                 }}>
                </ViewPager>
            </View>
        )
    }
}
const styles = StyleSheet.create({
    container:{
        flex:1
    },
    pagerStyle:{
        height:height/3,
        width:width,
    },
    imageStyle:{
        flex:1,
        height: height/3,
        resizeMode: 'stretch'
    },
})
运行结果:





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值