[RN] React Native 实现图片预览

[RN] React Native 实现图片预览

 

效果预览:

 

代码如下:

'use strict';
import React, {Component} from 'react';
import {Image, StyleSheet, Text, View, ViewPagerAndroid, Dimensions} from 'react-native';

const {width, height} = Dimensions.get("window");

//图片地址
const PAGE_IMAGES = [
    'http://a.hiphotos.baidu.com/image/h%3D300/sign=4f5477ac8f26cffc762ab9b289014a7d/b3fb43166d224f4ad8b5722604f790529822d1d3.jpg',
    'http://a.hiphotos.baidu.com/image/h%3D300/sign=10b374237f0e0cf3bff748fb3a47f23d/adaf2edda3cc7cd90df1ede83401213fb80e9127.jpg',
    'http://e.hiphotos.baidu.com/image/h%3D300/sign=8562b2c234dbb6fd3a5be3263925aba6/8ad4b31c8701a18b536e1476932f07082838fe06.jpg',
    'http://a.hiphotos.baidu.com/image/h%3D300/sign=fbe3d9666ed9f2d33f1122ef99ed8a53/3bf33a87e950352a464bc38f5f43fbf2b2118b0b.jpg'
];

export default class TestViewPager extends Component {

    constructor(props) {
        super(props);
        this.state = {
            page: 0,
            totalPage: PAGE_IMAGES.length,
        }
    }

    onPageSelected = (event) => {
        this.setState({
            page: event.nativeEvent.position,
        });
    };

    render() {
        let pages = [];
        let len = this.state.totalPage;
        for (let i = 0; i < len; i++) {
            pages.push(
                <View key={i} collapsable={false}>
                    <Image
                        style={styles.image}
                        source={{uri: PAGE_IMAGES[i]}}
                    />
                </View>
            );
        }

        return (
            <View style={styles.container}>
                <ViewPagerAndroid
                    style={styles.viewPager}
                    initialPage={0}
                    onPageSelected={this.onPageSelected}
                    ref={viewPager => {
                        this.viewPager = viewPager;
                    }}
                >
                    {pages}
                </ViewPagerAndroid>

                <View style={styles.showArea}>
                    <Text style={styles.showText}>{this.state.page + 1} / {this.state.totalPage}</Text>
                </View>
            </View>
        );
    }
}


const styles = StyleSheet.create({
    container: {
        flex: 1,
        backgroundColor: 'black',
    },
    viewPager: {
        width: width,
        height: height
    },
    image: {
        resizeMode: "contain",
        flex: 1,
        width: width
    },
    showArea: {
        position: "absolute",
        bottom: 60,
        flexDirection: 'row',
        width: width,
        height: 60,
        justifyContent: "center",
        alignItems: 'center',
    },
    showText: {
        fontSize: 20,
        color: "white"
    }
});

 

 

本博客地址: wukong1688

本文原文地址:https://www.cnblogs.com/wukong1688/p/11002911.html

转载请著名出处!谢谢~~

 

posted @ 2019-06-11 12:21  wukong1688  阅读(2087)  评论(0编辑  收藏  举报