ReactNative 实现图片轮播器

/**
* Sample React Native App
* https://github.com/facebook/react-native
* @flow
*/

import React , { Component } from 'react' ;
import {
AppRegistry , //注册
StyleSheet , //样式
Text ,
View ,
Image ,
TextInput ,
TouchableOpacity ,
AlertIOS ,
ScrollView ,

} from 'react-native' ;

class ClassName {
constructor () {

}
}


var Dimensions = require ( 'Dimensions' ) ;
var widt = Dimensions. get ( 'window' ). width ;



//引入JsonShuju
var imagesdata = require ( './ImageData.json' ) ;
//引入定时器





var TimerMixin = require ( 'react-timer-mixin' ) ;


var FScrollViewDemo1 ;
FScrollViewDemo1 = React. createClass ({


mixins : [TimerMixin] ,


//设置固定值
getDefaultProps (){

return {
//每隔多少
duration : 2000

}
} ,

//设置可变的初始值
getInitialState (){
return {

//当前页码
currentPage : 0
}





} ,




render (){

return (

<View style = {styles. container } >


<ScrollView
ref ="scrollViewxx" horizontal = { true }
showsHorizontalScrollIndicator = { false }
pagingEnabled = { true }
onMomentumScrollEnd = {(s)=> this . onAnimationEnd (s)}
onScrollBeginDrag = { this . onScrollBeginDrag }
onScrollEndDrag = { this . onScrollEndDrag }
>
{ this . reanderAllImage ()}
</ScrollView>

{ /** 返回指示器*/ }

<View style = {styles. pageViewControlcontainer } >
{ this . reanderAllFivePoint ()}
</View>

</View>


) ;
} ,


//实现复杂操作
componentDidMount () {
//开启定时器
this . startTimer () ;
} ,

//开启定时器
startTimer (){
//1、拿到我们的ScrollView
var myscorllview = this . refs .scrollViewxx ;

//2、添加定时器
this . timer = this . setInterval ( function (){
//每隔多少秒执行函数
//2.1设置远点
var activePage ;
//2.2判断
if (( this . state . currentPage + 1 ) >= imagesdata.data. length ){


activePage = 0 ;
} else {

activePage = this . state . currentPage + 1 ;

}

//跟新状态机
this . setState ({

currentPage :activePage
}) ;

//
var offset =activePage * widt ;

myscorllview. scrollResponderScrollTo ({ x :offset , y : 0 , animated : true }) ;

} , this . props . duration ) ;




} ,

//开始拖仔停止定时器
onScrollBeginDrag (){

this . clearInterval ( this . timer ) ;

} ,

onScrollEndDrag (){

//开启定时器
this . startTimer () ;

} ,

reanderAllImage (){
var allImages = [] ;
var ImageArray = imagesdata.data ;
for ( var i = 0 ; i < ImageArray. length ; i++) {
var imageItem = ImageArray[i] ;
//创建组件装入数组
allImages. push (
<Image key = {i} source = {{ uri : imageItem. img }} style = {{ width : widt , height : 200 }} />
) ;

}

return allImages ;
} ,


reanderAllFivePoint (){

var allImages = [] ;

var style ;

var ImageArray = imagesdata.data ;
for ( var i = 0 ; i < ImageArray. length ; i++) {

//
style = (i == this . state . currentPage ) ? { color : 'orange' } : { color : 'white' } ;
//创建组件装入数组
allImages. push (
<Text key = {i} style = {[{ fontSize : 25 } , style]} > &bull; </Text>
) ;

}

return allImages ;


} ,

//当一睁滚动结束的时候调用
onAnimationEnd (s){

var offset = s. nativeEvent . contentOffset . x ;
var current = Math . floor (offset / widt) ;

//3 更新状态机
this . setState ({
currentPage :current
}) ;
}


}) ;



const styles = StyleSheet. create ({

container :{
marginTop : 20

} ,
pageViewControlcontainer :{

width :widt ,
height : 25 ,
backgroundColor : 'rgba(0,0,0,0.2)' ,

position : 'absolute' ,

bottom : 0 ,
flexDirection : 'row' ,
justifyContent : 'center'


}

}) ;

AppRegistry. registerComponent ( 'second' , () => FScrollViewDemo1) ;




// //ES6
// class second extends Component{
// //初始化方法----》 返回具体组建内容
// //写结构和内容
// render() {
// return (
//
// <ScrollView horizontal={true} showsHorizontalScrollIndicator={false} pagingEnabled={true}>
//
// {this.renderChildView()}
//
// </ScrollView>
// );
// }
//
//
// renderChildView(){
//
// var allChild = [];
// var colorsArray = ['red','blue','purple','yellow','green','red','blue','purple','yellow','green'];
//
// for (var i = 0; i < 10; i++){
//
// allChild.push(
//
// <View key={i} style={{backgroundColor:colorsArray[i],width:414,height:200}}>
//
// <Text>
// {i}
// </Text>
// </View>
// );
//
// }
//
// return allChild;
//
// };
//
//
// }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值