91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用React Native構建類似Tinder的加載器

發布時間:2021-09-22 10:35:41 來源:億速云 閱讀:126 作者:小新 欄目:web開發

這篇文章將為大家詳細講解有關如何使用React Native構建類似Tinder的加載器,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

嘗試描述在React Native中構建一個類似Tinder的加載器所遇到的調整我把它分成三個挑戰。

挑戰1:布局

如何使用React Native構建類似Tinder的加載器

在上面的截圖中,你可以看到頭像和它后面的圓,都在屏幕正中間。 感謝  Flexbox,通過添加"justifyContent:'center'"和"alignItems:'center'",可以輕松地將元素水平和垂直居中。在這種情況下,我不得不居中兩個元素。我可以使用  Flexbox 作為頭像或圓圈。我選擇了頭像。對于背景圓我使用"position:absolute"和負邊距來完成我的目標。

container: {   flex: 1,   justifyContent: 'center', // this centers the avatar vertically   alignItems: 'center', // this centers the avatar horizontally }, circle: {   width: circleSize,   height: circleSize,   position: 'absolute',   left: deviceWidth/2,   top: deviceHeight/2,   marginLeft: -circleSize/2,   marginTop: -circleSize/2 }

挑戰2:動畫

如何使用React Native構建類似Tinder的加載器

React Native有一個動畫庫,稱為Animated。我用它來放大圓圈并將其淡出。如果你知道如何使用 interpolate  方法,并在一個循環重復動畫,圓圈的動畫就可以解決了。

我知道,"react-native-animatable"庫提供了一個名為"iterationCount:infinitive"的屬性,但是Animated  API沒有內置這樣的功能。所以我不得不自己構建它。

我的***個想法是遞歸。我創建了一個新的函數,它設置動畫值為零,然后在回調中把值擴展到1,當動畫完成后,我再次調用該函數。

animate() {   this.anim.setValue(0);   Animated.timing(this.anim, {     toValue: 1,     duration: 3000,     easing: Easing.in   })   .start(this.animate.bind(this)); }

雖然它可以工作,并且代碼看起來挺干凈,但它有一個問題:我不能停止動畫,它會不停的重復。 我最終使用 setInverval 和 clearInterval  來創建了一個能夠被停止的循環。

挑戰3:交互

如何使用React Native構建類似Tinder的加載器

***的挑戰是與頭像的交互。每次你點擊它,一個新的圓圈會出現,而不會干擾前一個。這意味著,屏幕上可能同時有多個圓圈。我很快意識到,當前的代碼無法運作。  所以我創建了第二個組件,它代表一個單一的圓。每個圓圈都有自己的"動畫生命周期"。我仍然使用setInterval,但現在它創建一個新的圓圈,而不是管理動畫。當您按下頭像時,會創建另一個圓圈。

setCircleInterval() {   this.interval = setInterval(this.addCircle, 3000);   this.addCircle(); } addCircle() {   this.setState({     circles: [...this.state.circles, this.counter]   });      this.counter++; }

有一件事仍然未處理。只要用戶按下不動,新頭像就不再會被創建,直到在他釋放屏幕之后才創建新的圓圈。 幸運的是,Touchable  組件有兩個事件,它們有助于處理這件事情:onPressIn 和  onPressOut。當***個事件被調用時,間隔被清除,因此不會創建任何新的圓,當第二個事件被觸發時,將再次設置間隔(會再創建圓圈)。

onAvatarPressIn() {   clearInterval(this.interval); } onAvatarPressOut() {   this.setCircleInterval(); }

關于“如何使用React Native構建類似Tinder的加載器”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

海伦市| 喀喇| 德兴市| 长武县| 三明市| 文化| 浪卡子县| 长乐市| 塘沽区| 广安市| 南乐县| 扎赉特旗| 马公市| 衡山县| 白水县| 辽宁省| 阿合奇县| 平和县| 临江市| 孟州市| 闽清县| 桐梓县| 博湖县| 英吉沙县| 天祝| 开鲁县| 葫芦岛市| 潮安县| 辉县市| 台中市| 历史| 白山市| 澎湖县| 波密县| 海口市| 天等县| 芜湖市| 阳西县| 伽师县| 信阳市| 西畴县|