item可點(diǎn)擊突出顯示->可移動(dòng)item->可交換item->抬起手指恢復(fù)正確的位置。下面一一解釋。布局忘了說了">
React-Native ListView拖拽交換Item

React-Native ListView拖拽交換Item

ID:37900780

大?。?31.50 KB

頁數(shù):10頁

時(shí)間:2019-06-02

React-Native ListView拖拽交換Item_第1頁
React-Native ListView拖拽交換Item_第2頁
React-Native ListView拖拽交換Item_第3頁
React-Native ListView拖拽交換Item_第4頁
React-Native ListView拖拽交換Item_第5頁
資源描述:

《React-Native ListView拖拽交換Item》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、React-NativeListView拖拽交換Item先上效果圖:、對(duì),就是這樣~在實(shí)現(xiàn)這個(gè)效果前,我的思路是這樣的,布局->item可點(diǎn)擊突出顯示->可移動(dòng)item->可交換item->抬起手指恢復(fù)正確的位置。下面一一解釋。布局忘了說了,由于這個(gè)界面的item的元素較少,并且為了方便起見,我并沒有采用ListView控件去實(shí)現(xiàn)這個(gè)list,而是使用數(shù)組map返回一個(gè)個(gè)itemView。[javascript]viewplaincopy在CODE上查看代碼片派生到我的代碼片render(){return(

2、e={styles.container}>{this.names.map((item,i)=>{return(this.items[i]=ref}key={i}style={[style

3、s.item,{top:(i+1)*49}]}>{item});})});}前面NavigationBar部分不用看,自己封裝的組件,通過map函數(shù),可以依次遍歷每個(gè)數(shù)組元素(this.names=['Android','iOS','前端','拓展資源','休息視頻'];)。因?yàn)槲覀冃枰竺婺苤苯涌刂泼總€(gè)DOM(后面會(huì)直接操控

4、它的樣式),所以需要添加ref屬性,不熟悉或者不明白ref這個(gè)prop的,可以參考這里。還需要注意的地方是,因?yàn)槲覀兊膇tem是可以拖拽移動(dòng)的,能直接操控它們位置屬性的就是絕對(duì)和相對(duì)布局,提供了top,left,right,bottom這些個(gè)props。貼一下item的stylesheet。[javascript]viewplaincopy在CODE上查看代碼片派生到我的代碼片item:{flexDirection:'row',height:px2dp(49),width:theme.screenWidth,alignIte

5、ms:'center',backgroundColor:'#fff',paddingLeft:px2dp(20),borderBottomColor:theme.segment.color,borderBottomWidth:theme.segment.width,position:'absolute',},不用在意其他的props,最關(guān)鍵的最起作用的就是position屬性,一旦設(shè)置,該View的位置就不會(huì)受控于flexbox的布局了,直接浮動(dòng)受控于top,left這幾個(gè)參數(shù)。對(duì)于{...this._panResponde

6、r.panHandlers}這個(gè)屬性,就會(huì)談到React-native中的手勢(shì),也就是我們下一個(gè)內(nèi)容。item可點(diǎn)擊突出顯示如果不了解react-native中的手勢(shì),建議簡(jiǎn)單去了解下,直通車在這里還有這個(gè)。一旦需要自己實(shí)現(xiàn)手勢(shì),我們需要實(shí)現(xiàn)這幾個(gè)方法。[javascript]viewplaincopy在CODE上查看代碼片派生到我的代碼片onStartShouldSetPanResponder:(evt,gestureState)=>true,//開啟手勢(shì)響應(yīng)onMoveShouldSetPanResponder:(evt

7、,gestureState)=>true,//開啟移動(dòng)手勢(shì)響應(yīng)onPanResponderGrant:(evt,gestureState)=>{//手指觸碰屏幕那一刻觸發(fā)},onPanResponderMove:(evt,gestureState)=>{//手指在屏幕上移動(dòng)觸發(fā)},onPanResponderTerminationRequest:(evt,gestureState)=>true,//當(dāng)有其他不同手勢(shì)出現(xiàn),響應(yīng)是否中止當(dāng)前的手勢(shì)onPanResponderRelease:(evt,gestureState)=>

8、{//手指離開屏幕觸發(fā)},onPanResponderTerminate:(evt,gestureState)=>{//當(dāng)前手勢(shì)中止觸發(fā)},簡(jiǎn)單介紹了下幾個(gè)函數(shù)的意義,所以很明顯,要實(shí)現(xiàn)item點(diǎn)擊突出顯示,我們需要在onPanRespondedGrant這里做事情。貼代碼來解釋,[jav

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。