React Native 之ScrollView輪播圖實現
1.首先如果檔案index.android.js 或者 index.ios.js 我這裡用的是前者
2.在專案的 index.android.js同一目錄下 建立json檔案 這樣方便圖片的訪問,資源圖片放在專案名稱\android\app\src\main\res\drawable 下面/** * Sample React Native App * https://github.com/facebook/react-native * @flow */ import React, { Component } from 'react'; import { AppRegistry, StyleSheet, TextInput, TouchableOpacity, ScrollView, Text, View } from 'react-native'; import ScrollViewDemo from "./scrollViewDemo"; import ScrollViewTop from "./scrollViewTop"; import PositionDemo from "./positionDemo"; export default class CQQLoginDemo extends Component { render() { return ( <ScrollViewTop/> ); } } AppRegistry.registerComponent('CQQLoginDemo', () => CQQLoginDemo);
這裡的BadgeData.json 如下:
3.主要的檔案 scrollViewTop.js 檔案 如下 具體註釋中已寫 直接上程式碼:{ "data":[ { "icon" : "danjianbao", "title" : "單肩包" }, { "icon" : "liantiaobao", "title" : "鏈條包" }, { "icon" : "qianbao", "title" : "錢包" }, { "icon" : "shoutibao", "title" : "手提包" }, { "icon" : "shuangjianbao", "title" : "雙肩包" }, { "icon" : "xiekuabao", "title" : "斜挎包" } ] }
/** * Sample React Native App * https://github.com/facebook/react-native * @flow */ import React, { Component } from 'react'; import { AppRegistry, StyleSheet, ScrollView, Image, Text, View } from 'react-native'; let Dimensions = require('Dimensions'); let ScreenWidth = Dimensions.get('window').width; let ScreenHeight = Dimensions.get('window').height; import ImageData from "./BadgeData.json"; export default class scrollViewTop extends Component { constructor(props) { super(props); this.state = { currentPage: 0 }; } static defaultProps = { duration: 1000, } componentDidMount() { this._startTimer(); } componentWillUnmount() { // 如果存在this.timer,則使用clearTimeout清空。 // 如果你使用多個timer,那麼用多個變數,或者用個數組來儲存引用,然後逐個clear this.timer && clearTimeout(this.timer); } render() { return ( <View style={styles.continer}> <ScrollView ref='scrollView' //水平方向 horizontal={true} //當值為true時顯示滾動條 showsHorizontalScrollIndicator={false} //當值為true時,滾動條會停在滾動檢視的尺寸的整數倍位置。這個可以用在水平分頁上 pagingEnabled={true} //滑動完一貞 onMomentumScrollEnd={(e)=>{this._onAnimationEnd(e)}} //開始拖拽 onScrollBeginDrag={()=>{this._onScrollBeginDrag()}} //結束拖拽 onScrollEndDrag={()=>{this._onScrollEndDrag()}} > {this._renderAllImage()} </ScrollView> <View style={styles.pageViewStyle}> {this._renderAllIndicator()} </View> </View> ); } /**開始拖拽 */ _onScrollBeginDrag(){ console.log("開始拖拽"); //兩種清除方式 都是可以的沒有區別 // this.timer && clearInterval(this.timer); this.timer && clearTimeout(this.timer); } /**停止拖拽 */ _onScrollEndDrag(){ console.log("停止拖拽"); this.timer &&this._startTimer(); } /**1.輪播圖片展示 */ _renderAllImage() { let allImage = []; let imgsArr = ImageData.data; for (let i = 0; i < imgsArr.length; i++) { let imgsItem = imgsArr[i]; allImage.push( <Image key={i} source={{uri:imgsItem.icon}} style={styles.imageStyle} /> ); } return allImage; } /**2.手動滑動分頁實現 */ _onAnimationEnd(e) { //求出偏移量 let offsetX = e.nativeEvent.contentOffset.x; //求出當前頁數 let pageIndex = Math.floor(offsetX / ScreenWidth); //更改狀態機 this.setState({ currentPage: pageIndex }); } /**3.頁面指標實現 */ _renderAllIndicator() { let indicatorArr = []; let style; let imgsArr = ImageData.data; for (let i = 0; i < imgsArr.length; i++) { //判斷 style = (i==this.state.currentPage)?{color:'orange'}:{color:'white'}; indicatorArr.push( <Text key={i} style={[{fontSize:30},style]}> • </Text> ); } return indicatorArr; } /**4.通過定時器實現自動播放輪播圖 */ _startTimer(){ let scrollView = this.refs.scrollView; this.timer = setInterval( ()=>{console.log('開啟定時器'); let imageCount = ImageData.data.length; //4.1 設定圓點 let activePage = 0; //4.2判斷 if(this.state.currentPage>=imageCount+1){ activePage = 0; }else{ activePage = this.state.currentPage+1; } //4.3 更新狀態機 this.setState({currentPage:activePage}); //4.4 讓scrollview 滾動起來 let offsetX = activePage * ScreenWidth; scrollView.scrollResponderScrollTo({x:offsetX,y:0,animated:true}); }, this.props.duration ); } } const styles = StyleSheet.create({ continer:{ backgroundColor: '#dddddd' }, imageStyle:{ height:400, width:ScreenWidth }, pageViewStyle:{ height:25, width:ScreenWidth, backgroundColor:'rgba(0,0,0,0.4)', position:'absolute', bottom:0, flexDirection:'row', alignItems:'center', } });
連結:http://pan.baidu.com/s/1kVcAVTP 密碼:e9kf
相關推薦
React Native 之ScrollView輪播圖實現
1.首先如果檔案index.android.js 或者 index.ios.js 我這裡用的是前者 /** * Sample React Native App * https://github.com/facebook/react-native * @flow
[學習] React Native Swiper 滑動輪播圖套件 « 關於網路那些事...
推薦一款由 leecade 所發布的 react native swiper 套件,目前版本可以同時支援 iOS 及 Android,並且可以自定義樣式
React Native 如何做輪播圖 react-native-swiper
//import liraries import React, { Component } from 'react'; import { View, Text, StyleSheet, Dimensions, Image, TouchableOpacity,
react-native-page-scrollview 的使用方法(實現酷炫的分頁輪播效果)
ota interview native cte ren 意圖 let change sets react-native-page-scrollview 對ScrollView的封裝,可以很方便的實現水平,垂直分頁輪播效果.而且可以自定義分頁寬高,和側邊View的旋轉,透明
react-native-page-scrollview 的使用方法(實現酷炫的分頁輪播效果,還支援自定義View)
react-native-page-scrollview 對ScrollView的封裝,可以很方便的實現水平,垂直分頁輪播效果.而且可以自定義分頁寬高,和側邊View的旋轉,透明度,大小等. 對於原生的ScrollView只支援水平的整屏的分頁,而且我看gi
JS實例之圖片輪播,實現圖片播放效果
utf length pla get eight code func nsh java 1 <head> 2 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&g
原生js輪播圖實現
索引 獲取 mouseout abs length ati point css ack 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta chars
vue輪播圖報錯 Uncaught RangeError: Maximum call stack size exceeded 附完整輪播圖實現程式碼
Vue初學者,寫專案實現輪播圖時報錯且頁面初始化後不會自動輪播。 設定的計時器時長是6000,但報錯是幾乎沒有停歇的報錯。 檢查核心程式碼,發現 錯誤一:這裡導致輪播圖初始化不輪播 mounted的方法寫在了methods裡面,將mounted的方法挪出,解決頁面初始化輪播圖不
JS原生輪播圖實現
作為一個PHP全棧攻城獅,不僅要會後端PHP和資料庫,還要會前端JS。今天原始碼時代 PHP培訓 學科老師要和大家分享一下JS原生編寫輪播圖的外掛。 說起輪播圖,很多人會選擇使用各種外掛,比如基於JQuery或其它框架的。不瞞大家,我也用過,甚至還用過Flash的輪播圖。總體來說,用起來是比較簡
移動端輪播圖實現
1:HTML樣式<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-s
最簡單的輪播圖實現
需求:每隔2秒切換一張圖片的效果 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>輪播圖</title>
web前端技術課程講解之關於輪播圖水平無縫滾動
製作這個簡單的輪播圖之前,你必須掌握html、css、以及JavaScript中的節點操作,定時器的使用,條件語句的使用以及JS修改樣式和動畫原理。 輪播圖對於網頁來說是個常見也可以說是必備的部分,而輪播圖的形式也是各式各樣,有簡約的也有炫酷的。當然,這裡我就只說簡約的全屏輪播圖水平無縫滾動。 首先是給出
適合【前端入門者】的原生JS輪播圖實現
學前端已經一年多了,在JavaScript方面,學會了基本語法,頁面操作之後,慢慢走向了框架這條不歸路,框架用起來真的是省時省力,效果好、程式碼少、還節省時間。 在前幾天去做一個頁面的時候,要求只能是用以前版本的框架,我就去找框架之前的版本,可是在某些官網上老版本的框架已經不存在了,就我這暴脾氣
MVP+Recycleview實現輪播圖實現京東秒殺效果
MVP+Recycleview實現輪播圖,京東秒殺 2018年12月02日 19:55:26 遷就 閱讀數:830 1:先看看效果 2:build.gradle中匯入依賴 //依賴 implementation ‘com.jakewharton:butterkn
react-native-EZSwiper卡片輪播元件Android無法正常輪播
因專案需求,需要做一個卡片的輪播圖。然後順理成章的找到react-native-EZSwiper輪子,很贊。 ios完全能滿足我的需求,但是Android測試的時候就涼了。 Android Case:當元件自動輪播到最後一張,我滿心期待的看它輪播回到第一張......Bu
微信小程式學習筆記(三)----初識小程式程式碼、輪播圖實現
從這一節開始我們就開始接觸小程式前臺程式碼了,其實前臺邏輯還是比較簡單的,學習難度比學習一個前端框架難不了多少,記得以前一開始學前端框架的時候,流程就是:熟悉一下--檢視元件--找到要用的--複製貼上,其實對於大部分人來說,小程式前臺也是一樣。 首先,我們可以先看下小程式的
Html5+JavaScript輪播圖實現方式
這…足夠應付大學老師的作業了 /偷笑 這應該是大學JavaScript老師常佈置的js作業之一,只做了三個圖片,可以修改圖片和尺寸,修改好名字之後替換即可,如果要新增第四張圖片所有的px都要修改.一開始就是用三張圖片做的,就沒弄四張照片 圖片自己找吧, 樣式圖
React Native-圖片輪播
圖片輪播在App開發中經常使用,這裡圖片輪播使用的是第三方元件react-native-swiper, 我們啟動npm命令列,在專案的根目錄使用如下命令安裝模組。 $ npm install react-native-swiper --save $ npm
安卓最簡單的輪播圖實現無限輪播
Android中的輪播圖實現起來並不難,現在特別是商城類的APP中使用的特別多,自定義view和ViewPager都能很簡單的實現,之前找了幾篇博文都不具備無限輪播的功能,現在自己實現了無限輪播的功能,供大家參考學習和使用~~~~ 先看效果圖: 下面就看一下具體的程
React Native之ScrollView控制元件詳解
概述 ScrollView在Android和ios原生開發中都比較常見,是一個 滾動檢視控制元件。在RN開發中,系統也給我們提供了這麼一個控制元件。不過在RN開發中 ,使用ScrollView必須有一個確定的高度才能正常工作,因為它實際上所做的就是將一系列不確