ListBannerSwiper.js 2.9 KB
'use strict';

import React from 'react';
import ReactNative from 'react-native';
import Swiper from 'react-native-swiper';
import ImmutablePropTypes from 'react-immutable-proptypes';
import SlicedImage from '../../../common/components/SlicedImage';
import Immutable, {Map} from 'immutable';

const {
    View,
    Image,
    TouchableOpacity,
    StyleSheet,
    Dimensions,
    Platform,
} = ReactNative;

export default class ListBannerSwiper extends React.Component {

    constructor(props) {
        super (props);

        this.dot = <View
            style={{
                backgroundColor:'rgba(0,0,0,.2)',
                width: 6,
                height: 6,
                borderRadius: 3,
                marginLeft: 3,
                marginRight: 3,
                marginTop: (Platform.OS === 'ios')?0:1,
                marginBottom: 0,
            }}
        />;
        this.activeDot = <View
            style={{
                backgroundColor:'white',
                width: 6,
                height: 6,
                borderRadius: 3,
                marginLeft: 3,
                marginRight: 3,
                marginTop: (Platform.OS === 'ios')?0:1,
                marginBottom: 0,
            }}
        />;
    }

    render() {
        let {resource} = this.props;

        return (
            <View style={styles.container}>
                <Swiper
                    style={styles.banner}
                    showsButtons={false}
                    loop={true}
                    autoplay={true}
                    autoplayTimeout={2}
                    paginationStyle={{bottom: 8}}
                    dot={this.dot}
                    activeDot={(Platform.OS === 'ios')?this.activeDot:null}
                    width={width}
                    height={height-15}
                    paginationStyle={{backgroundColor: 'rgba(0,0,0,0.2)',bottom: 10,height: 10,width: resource.length * 12,borderRadius: 5,marginLeft: (width-resource.length * 12)/2}}
                >
                  {resource.map((item, i) => {
                      return (
                          <TouchableOpacity
                              key={i}
                              activeOpacity={1}
                              onPress={() => {
                              this.props.onPressBanner && this.props.onPressBanner(item.url, i);
                              }}
                          >
                              <SlicedImage source={{uri: item.src}} style={{width, height}}/>
                          </TouchableOpacity>
                      );
                  })}
                </Swiper>
            </View>
        );
    }
}

let {width} = Dimensions.get('window');
let height = Math.ceil((310 / 640) * width) + 40;

let styles = StyleSheet.create({

    container: {
        width: width,
        height: height,
        backgroundColor:'#f0f0f0',
    },
    banner: {
      backgroundColor: '#ffffff',
    },

});