React Native08 - ScrollView、ScrollView实现的完整轮播图

前言

本篇我们的要学习的内容如下:

  • 组件ScrollView
  • 使用ScrollView实现轮播图

一、组件ScrollView

  • ScrollView是一个通用的可滚动的容器,你可以在其中放入多个组件和视图,而且这些组件并不需要是同类型的。ScrollView不仅可以垂直滚动,还能水平滚动

  • app上的轮播图和引导页,都可以使用ScrollView来完成

  • ScrollView中常用的属性

    1. horizontal
      当次属性为true的时候,所有的子视图会在水平方向上排成一行
      
    2. pagingEnabled:
      当值为true时,滚动条会停在滚动视图的尺寸的整数倍位置。这个可以用在水平分页上。默认值为false
      
    3. scrollsToTop:
      当此值为true时,点击状态栏的时候视图会滚动到顶部。默认值为true
      
    4. showsHorizontalScrollIndicator bool
       true: 显示一个水平方向的滚动条。
      
    5. showsVerticalScrollIndicator bool
       true: 显示一个垂直方向的滚动条。
      
    6. keyboardDismissMode
      用户拖拽滚动视图时,是否要隐藏软键盘
      
      none: 拖拽时不隐藏软键盘
      
      on-drag: 当拖拽开始的时候隐藏软键盘
      
    7. keyboardShouldPersistTaps
      "never": 在软键盘激活之后,点击scroll中焦点文本输入框以外的ScrollView的地方,键盘就会隐藏
      
      "always": 滚动视图不会响应点击操作,并且键盘不会自动消失,这是默认值
      
    8. contentOffset.x;
       获取到scrollView的偏移量
      
    9. contentContainerStyle
      这些样式会应用到一个内容容器上,所有的子视图都会包裹在内容容器里
      
    10. refreshControl:element
      指定RefreshControl组件,用于为ScrollView提供下拉刷新功能
      
    11. removeClippedSubviews:
      true: 当此属性为true时,屏幕之外的子视图(子视图overflow样式需要设为hidden)会被移除,这个可以提升大列表的滚动性能,默认值为true
      
  • ScrollView中常见的方法

    1. onScroll
      在滚动过程中,每帧最多调用一次此回调函数,调用的频率可以用scrollEventThrottle属性来控制 
      
    2. onScrollBeginDrag
      当开始手动拖拽的时候调用
      
    3. onScrollEndDrag
      当结束手动拖拽的时候调用
      
    4. onMomentumScrollEnd
      当每一次滚动停止的时候调用
      
    5. scrollResponderScrollTo({x:currentX, y:0, animated:true});
      滚动到指定的x, y偏移处。第三个参数为是否启用平滑滚动动画
      
  • 基本用法如下

二、轮播图案例

  • 导入计时器类库
    1. 将命令行定位到当前你项目目录

      cd xxx/demo2
      
    2. 导入计时器类库,如果导入成功会在node_modules中生成一个react-timer-mixin

      npm i react-timer-mixin --save
      
    3. 将定时器类库引入

      var TimerMixin = require('react-timer-mixin');
      
    4. 在组件中注册定时器,在组件中注册定时器,相当于给该组件设置了setInterval和clearInterval方法

      mixins: [TimerMixin]
      
    5. 开启定时器,并返回定时器对象

      this.timer = this.setInterval(()=>{},1000)
      
    6. 销毁定时器

      this.clearInterval(this.timer);
      
  • 整体逻辑

    1. 定时进行滚动

    2. 小圆点做指示条

    3. 手指滚动,定时器停止

    4. 手指停止滚动,定时器开启

    5. 效果

  • 具体代码及注释

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,165评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,720评论 1 298
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,849评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,245评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,596评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,747评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,977评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,708评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,448评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,657评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,141评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,493评论 3 258
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,153评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,890评论 0 198
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,799评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,685评论 2 272

推荐阅读更多精彩内容