react-native实现定时器轮播图

作者: wangwan | 来源:发表于2016-07-28 11:21 被阅读0次

先看下效果图

31E51FB3-0839-4FB2-BFB3-BD8EA5312FA4.png

附上代码 https://github.com/wanwang88/ReactNativeAutoTimerScroll

然后来看下应该怎么布局

render(){
      return(
        <View style={styles.container}>
          <ScrollView
              ref='scrollView'
              horizontal={true}
              showsHorizontalScrollIndicator = {false}
              pagingEnabled = {true}
              onMomentumScrollEnd = {(e)=>this.onAnimationEnd(e)}
              // 开始拖拽
              onScrollBeginDrag={this.onScrollBeginDrag}
              // 停止拖拽
              onScrollEndDrag={this.onScrollEndDrag}
              >
            {this.renderAllImage()}
          </ScrollView>

          {/*返回指示器*/}
          <View style={styles.pageViewStyle}>
            {/*返回5个圆点*/}
            {this.renderPageCircle()}
          </View>
        </View>
      )
    },
  

最外面一个view 然后里面一个scrollview显示图片和用来显示指示器的一个view

导入定时器类库

npm i react-timer-mixin --save
//项目中引入并注册
//引入:
var TimerMixin = require('react-timer-mixin');
//注册:
mixins: [TimerMixin],

初始化currentPage 和 duration

//设置固定值
    getDefaultProps(){
      return{
        //每隔1秒刷新一次
        duration:1000
      }
    },

    //设置可变的和初始值
    getInitialState(){
      return {
        currentPage:0
      }
    },

一帧滚动结束方法

onAnimationEnd(e){
      // 计算水平方向的偏移量
      var offSetX = e.nativeEvent.contentOffset.x;

      //当前的页数
      var currentPage= Math.floor(offSetX/width);
      //更新指示器,绘制ui
      this.setState({
          currentPage:currentPage
      });
      //AlertIOS.alert(" currentPage=  " +this.state.currentPage);
    }

定时器方法

startTimer(){
        var scrollView = this.refs.scrollView;
        var imgCount = ImageData.data.length;


        //添加定时器

        this.timer = this.setInterval(function(){
          var activePage = 0;
          if((this.state.currentPage+1) >= imgCount){
            activePage = 0;
            //AlertIOS.alert(" b=  " +this.state.currentPage);
          }else{
            activePage = this.state.currentPage+1;
          }

          //更新圆点状态
          this.setState({
            currentPage:activePage
          });
          //scrollView 滚动
          var scrollOffsetX = activePage * width;
          scrollView.scrollResponderScrollTo({x:scrollOffsetX,y:0,animated:false});
        },this.props.duration);
    },

相关文章

  • 仿造天猫、京东、凡客等,轮播图的开发(jQuery)

    轮播图思路:1、轮播图布局2、定时器实现轮播效果3、指示器的鼠标移入(mouseenter)、移出(mousele...

  • react-native实现定时器轮播图

    先看下效果图 附上代码 https://github.com/wanwang88/ReactNativeAuto...

  • 轮播

    轮播: UIScrollview轮播UICollectionView轮播 实现步骤: (1)添加并设置定时器(2)...

  • 轮播图心得

    一、轮播图 1.传统轮播图: 运动的封装:(1)定时器的使用,创建定时器setInterval();每隔指定的时间...

  • ReactNative实现轮播图

    先看App运行效果: react-native中有专门实现轮播图的模块Swiper,和引入React的方式一样,通...

  • h5页面中有定时器的时候,轮播图不滚动

    (1)轮播图 react-slick 的使用,但是页面中有其他定时器的时候,轮播图不滚动npm install ...

  • 轮播图心得

    轮播图 写轮播图之前我们要认识到几个问题:一、什么是轮播图?二、怎么实现轮播效果?三、轮播图还有什么小功能可以实现...

  • iOS-定时器相关

    定时器相关文档内容. 1.一个play方法实现全屏炫酷倒计时的小demoiOS轮播图:CADisplayLink实...

  • 用requestAnimationFrame()实现一个轮播图

    之前用定时器实现过一个轮播图,轮播图的基本功能都能够满足,但有一个很大的缺点:切换页面,或窗口缩小一段时间后,再切...

  • iOS 类似腾讯视频轮播器+缩放效果

    在最近公司项目需求,要求实现类似于腾讯视频轮播器的效果,另外需要加上缩放效果,先上实现的效果图 定时器效果 手动拖...

网友评论

    本文标题:react-native实现定时器轮播图

    本文链接:https://www.haomeiwen.com/subject/amlajttx.html