操做步驟:
1.在項目中導入react-native-image-picker包
npm install react-native-image-picker@latest --save
2.須要修改項目中Android目錄下的類容
<1>修改Android目錄下的setting.gradle,添加java
include ':react-native-image-picker' project(':react-native-image-picker').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-image-picker/android')
<2>在Android/app下的build.gradle的dependencies中添加node
compile project(':react-native-image-picker')
<3>修改app/src/java/com/demo/MainApplication.java中的getPackages()中添加react
new ImagePickerPackage()
以下android
@Override protected List<ReactPackage> getPackages() { return Arrays.<ReactPackage>asList( new MainReactPackage(), new ImagePickerPackage() ); }
3.在React Native 中的js文件中導入ImagePickergit
import ImagePicker from 'react-native-image-picker';
4.使用:github
import React from 'react'; import { AppRegistry, StyleSheet, Text, View, PixelRatio, TouchableOpacity, Image, } from 'react-native'; import ImagePicker from 'react-native-image-picker'; export default class App extends React.Component { state = { avatarSource: null, videoSource: null }; selectPhotoTapped() { const options = { quality: 1.0, maxWidth: 500, maxHeight: 500, storageOptions: { skipBackup: true } }; ImagePicker.showImagePicker(options, (response) => { console.log('Response = ', response); if (response.didCancel) { console.log('User cancelled photo picker'); } else if (response.error) { console.log('ImagePicker Error: ', response.error); } else if (response.customButton) { console.log('User tapped custom button: ', response.customButton); } else { let source = { uri: response.uri }; // You can also display the image using data: // let source = { uri: 'data:image/jpeg;base64,' + response.data }; this.setState({ avatarSource: source }); } }); } selectVideoTapped() { const options = { title: 'Video Picker', takePhotoButtonTitle: 'Take Video...', mediaType: 'video', videoQuality: 'medium' }; ImagePicker.showImagePicker(options, (response) => { console.log('Response = ', response); if (response.didCancel) { console.log('User cancelled video picker'); } else if (response.error) { console.log('ImagePicker Error: ', response.error); } else if (response.customButton) { console.log('User tapped custom button: ', response.customButton); } else { this.setState({ videoSource: response.uri }); } }); } render() { return ( <View style={styles.container}> <TouchableOpacity onPress={this.selectPhotoTapped.bind(this)}> <View style={[styles.avatar, styles.avatarContainer, {marginBottom: 20}]}> { this.state.avatarSource === null ? <Text>Select a Photo</Text> : <Image style={styles.avatar} source={this.state.avatarSource} /> } </View> </TouchableOpacity> <TouchableOpacity onPress={this.selectVideoTapped.bind(this)}> <View style={[styles.avatar, styles.avatarContainer]}> <Text>Select a Video</Text> </View> </TouchableOpacity> { this.state.videoSource && <Text style={{margin: 8, textAlign: 'center'}}>{this.state.videoSource}</Text> } </View> ); } } const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: '#F5FCFF' }, avatarContainer: { borderColor: '#9B9B9B', borderWidth: 1 / PixelRatio.get(), justifyContent: 'center', alignItems: 'center' }, avatar: { borderRadius: 75, width: 150, height: 150 } });
以上代碼引用自
連接ImagePicker官網
https://github.com/react-comm...npm