React Native布局实践:开发京东客户端首页(三)——轮播图的实现

上篇文章中,我们一起构建了京东客户端的TabBar,在本文中,将继续向大家介绍京东客户端首页轮播图及其下发功能按钮的开发方法,现在就让我们开始吧!

1.相关控件调研

目前在Github开源的轮播图控件,个人认为做得比较好的,一个是react-native-swiper(https://github.com/leecade/react-native-swiper),一个是react-native-viewpager(https://github.com/race604/react-native-viewpager),而经过试用发现,react-native-swiper虽然效果和样式较多、控制方便,但在将它缩小为一个固定高度的视图时,其底部的指示符号(即几个点,如下图)就不见了,所以最终我推荐使用react-native-viewpager,简单好用!

2.添加相关文件

下来我们将素材和相关的库导入项目当中,其中,react-native-viewpager的添加方法如下:

npm i -d react-native-viewpager --save

然后在工程的images文件夹中创建banner文件夹,其中放入4个jpg文件:

接着,我们在HomePage类的定义前,创建一个数组常量,用于存放图片:

const BANNER_IMGS = [
    require(‘../images/banner/1.jpg‘),
    require(‘../images/banner/2.jpg‘),
    require(‘../images/banner/3.jpg‘),
    require(‘../images/banner/4.jpg‘)
];

经过这么几个简单的步骤,我们对图片的引入也就完成了,下来需要构建轮播图控件的布局。

3.构建ViewPager

经过分析,我们可以看到,首页轮播图的样式十分简单,只需要指定高度,而水平方向,利用flex:1进行拉伸

但由于react-native-viewpager作者在构建这个控件的时候,应该是用到一些变量进行控制,并提供了一种方法,用于创建图片数据源,所以,如果需要使用react-native-viewpager必须在构造函数中进行初始化,具体代码如下:

    constructor(props) {
        super(props);
        // 用于构建DataSource对象
        var dataSource = new ViewPager.DataSource({
            pageHasChanged: (p1, p2) => p1 !== p2,
        });
        // 实际的DataSources存放在state中
        this.state = {
            dataSource: dataSource.cloneWithPages(BANNER_IMGS)
        }
    }

而在render函数中,ViewPager的使用也是相当简单的,具体写法如下:

                <ViewPager
                    style={{height:130}}
                    dataSource={this.state.dataSource}
                    renderPage={this._renderPage}
                    isLoop={true}
                    autoPlay={true}/>

其中:

style:样式,和其他控件设置方式类似

dataSource:即在构造函数中利用dataSource对象和图片数组常量,创建的真实dataSource

renderPage:方法类型,返回一段JSX,用于指定ViewPager每页的内容,该方法写法如下,切忌根据WebStorm的提示加上static!:

    _renderPage(data, pageID) {
        return (
            <Image
                source={data}
                style={styles.page}/>
        );
    }

isLoop:是否循环播放,按照示例代码设置即可

autoPlay:是否自动播放,按照示例代码设置即可

locked: 设置为true即禁用ViewPager的点击

onChangePage: 页面切换的回调函数

renderPageIndicator: 自定义指示器样式的渲染

animation:如果觉得原始的效果不满意,可以在这个字段中设置一个函数,自定义动画效果

当然,要记得给ViewPager和其中的item添加样式:

const styles = StyleSheet.create({
    page: {
        flex: 1,
        height: 130,
        resizeMode: ‘stretch‘
    }
});

保存一下代码,在模拟器上看看效果吧

工程源码及资源文件:https://github.com/yuanguozheng/JdApp

本次Commit:https://github.com/yuanguozheng/JdApp/commit/2d1741bef1c7908c9e0d2f52c23210e8de2fcc7a

转载请注明出处:http://blog.csdn.net/yuanguozhengjust/article/details/50556700

时间: 2024-10-05 17:25:28

React Native布局实践:开发京东客户端首页(三)——轮播图的实现的相关文章

京东商城首页juery轮播特效

<!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title></title> <script src="js/jquery-2.1.0.js"></script> <style type="text/css"> *{ margin: 0px; padding: 0px; } bo

京东呼吸灯(轮播图)

布局: div.slider > ul + div.arrow ul > ll(*8)> a > img div.arrow > span.arrow-left + span.arrow-right 案例分析: 当左箭头一点击,上一张图片渐渐的显示,其他图片渐渐的隐藏 当右箭头一点击,下一张图片渐渐的显示,其他图片渐渐的隐藏 关键代码 $(function(){ var count=0; $(".arrow-left").click(function(){

预约挂号系统之首页广告轮播图

轮播图设计 <div id="main_top_left"> <div id="list" style="left: -650px;"> <img src="../img/slideshow_5.jpg" alt="5"/> <img src="../img/slideshow_1.jpg" alt="1"/> <

React Native之ViewPagerAndroid仿淘宝首页顶部分类布局效果实现

转载请注明出处:http://blog.csdn.net/woshizisezise/article/details/51030410 大家好,趁着现在别人都去吃饭的时间,来给大家讲一讲React Native中Android部分的控件ViewPagerAndroid的讲解,这里特别提醒一下,我写的博客都是基于大家有一些React Native基础的前提下,因为关于React Native这一系列的博文我是最近开始更新,由于自身工作繁重(每天早上10点干到晚上10点,是不是很惨?),所以暂时还没

React Native的iOS开发步骤以及崩溃收集

React Native的iOS开发以及崩溃收集 简介 React Native使你能够在Javascript和React的基础上获得完全一致的开发体验,构建世界一流的原生APP. React Native着力于提高多平台开发的开发效率 -- 仅需学习一次,编写任何平台.(Learn once, write anywhere) Facebook已经在多项产品中使用了React Native,并且将持续地投入建设React Native. 准备 安装 iOS只能MAC下开发,需要Xcode; An

【REACT NATIVE 跨平台应用开发】环境搭建问题记录&&XCODE7模拟器上COMMAND+R失效的几种替换方法

本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/react-native/2147.html React Native 这里不多介绍,其实就是个跨平台开发原生应用的开源引擎. 更详细的介绍,大家可以搜索"facebook react native" 或 "taobao react native" 附上 React Native 官方网站:http://react

模仿东京首页banner轮播,京东新闻上下滚动动画实现(动画实现)

接着上篇 微信小程序-阅读小程序demo写:http://www.cnblogs.com/muyixiaoguang/p/5917986.html 首页banner动画实现 京东新闻上下动画实现 想着模仿京东首页呢,结果也没赶得及写完,轮播图让我搞了好长时间.也好,那就国庆8天好好的写一下,这里写了一半,先放着.先介绍一下这一半的内容.       还是老规矩,先放个图吧,虽然才一点点了 上线的banner大图和京东头条都是可以滚动的,抄写微信小程序社区官方qq群:390289365里 Nige

安卓首页图片轮播效果(淘宝、京东首页广告效果)

直奔主题: 1.主要原理就是利用定时任务器定时切换ViewPager的页面. 2.里面用了一个读取网络图片的插件.做client使用本地图片轮播的也非常少. 先上个效果图: 项目代码结构截图: 自己定义View 的布局文件layout_slideshow.xml: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.and

React Native 之轮播图swiper组件

注释:swiper组件是第三方组件 所以在使用之前应该先在命令行安装,然后将第三方的模块引入(第三方模块地址:https://github.com/leecade/react-native-swiper) 安装完成后,我们需要完成轮播功能.因为可以到github看看swiper暴露的接口和参数.github地址是:https://github.com/leecade/react-native-swiper (1)引入swiper,前面也提到了require. var Swiper = requi