alltolove 发表于 2017-8-8 09:01:22

RN之获取屏幕宽高与scrollView的其他属性

首先把几张图片放进新建的img文件夹里(图片的文件名要与代码里相符),然后写入以下代码:
import React from 'react';
import { StyleSheet, Text, View, Image, TouchableOpacity, ScrollView, Dimensions } from 'react-native';

class Img1 extends React.Component{
render(){
    return(
      <View>
      <Imageref={(aaa)=>{this.m=aaa}}
      style={styles.img} source={this.props.mydata} />
      <Text style={{zIndex: 2,fontSize: 25}}>{this.props.a}</Text>
      </View>
    )
}
}

export default class App extends React.Component {
constructor(props) {
    super(props);

    this.state = {a:0};
}
render() {
    return (
      <View style={styles.container}>
      <ScrollView horizontal={true}
      pagingEnabled={true}
      showsHorizontalScrollIndicator={false}
      onMomentumScrollEnd={(e)=>this.onAnimationEnd(e)}>
      <Img1 mydata={require('./img/0.jpg')} a={this.state.a}/>
      <Img1 mydata={require('./img/1.jpg')} a={this.state.a}/>
      <Img1 mydata={require('./img/2.jpg')} a={this.state.a}/>
      <Img1 mydata={require('./img/3.jpg')} a={this.state.a}/>
      <Img1 mydata={require('./img/4.jpg')} a={this.state.a}/>
      <Img1 mydata={require('./img/5.jpg')} a={this.state.a}/>
      <Img1 mydata={require('./img/6.jpg')} a={this.state.a}/>
      </ScrollView>
      </View>
    );
}
onAnimationEnd(e){
    let f=e.nativeEvent.contentOffset.x
    let a=Math.floor(f / 400)
    this.setState({a})
}         
}

var {height, width} = Dimensions.get('window');
const styles = StyleSheet.create({
container: {
    flex: 1,
    backgroundColor: '#fff',
    flexDirection: 'row',
    justifyContent:'flex-start',
    flexWrap: 'wrap',
},
img:{
    width: width,
    height: height-40,
},
});

这其实就是自己做一个翻页效果的手机相册,其中scrollView里面的几个属性分别为:设置为横向滚动;翻页效果;把滚动条去掉;每次翻页结束计算累计屏幕宽度
第47行代码是获取屏幕宽高,提前要把Dimension控件import进来。效果图:
页: [1]
查看完整版本: RN之获取屏幕宽高与scrollView的其他属性