国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

使用 React Native 構(gòu)建類似 Tinder 的加載器

Render / 1525人閱讀

摘要:在這篇文章中我會嘗試描述在中構(gòu)建一個類似的加載器所遇到的調(diào)整我把它分成三個挑戰(zhàn)。我最終使用和來創(chuàng)建了一個能夠被停止的循環(huán)。有一件事仍然未處理。幸運的是,組件有兩個事件,它們有助于處理這件事情和。

在這篇文章中我會嘗試描述在React Native中構(gòu)建一個類似Tinder的加載器所遇到的調(diào)整
我把它分成三個挑戰(zhàn)。

挑戰(zhàn)1:布局

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

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
}
挑戰(zhàn)2:動畫

React Native有一個動畫庫,稱為Animated。我用它來放大圓圈并將其淡出。如果你知道如何使用 interpolate 方法,并在一個循環(huán)重復(fù)動畫,圓圈的動畫就可以解決了。
我知道,"react-native-animatable"庫提供了一個名為"iterationCount:infinitive"的屬性,但是Animated API沒有內(nèi)置這樣的功能。所以我不得不自己構(gòu)建它。
我的第一個想法是遞歸。我創(chuàng)建了一個新的函數(shù),它設(shè)置動畫值為零,然后在回調(diào)中把值擴(kuò)展到1,當(dāng)動畫完成后,我再次調(diào)用該函數(shù)。

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

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

挑戰(zhàn)3:交互

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

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

有一件事仍然未處理。只要用戶按下不動,新頭像就不再會被創(chuàng)建,直到在他釋放屏幕之后才創(chuàng)建新的圓圈。
幸運的是,Touchable 組件有兩個事件,它們有助于處理這件事情:onPressIn 和 onPressOut。當(dāng)?shù)谝粋€事件被調(diào)用時,間隔被清除,因此不會創(chuàng)建任何新的圓,當(dāng)?shù)诙€事件被觸發(fā)時,將再次設(shè)置間隔(會再創(chuàng)建圓圈)。

onAvatarPressIn() {
  clearInterval(this.interval);
}
onAvatarPressOut() {
  this.setCircleInterval();
}
結(jié)論

這個練習(xí)花了一些時間,我對結(jié)果很滿意。在 React Native 中創(chuàng)建 UI 非常有趣,我期待著從 React Native 中的流行應(yīng)用程序構(gòu)建其他組件。如果您有任何想法或愿望,請讓我知道!

請查看Github上的完整代碼。

謝謝閱讀!

原文作者:Yousef Kama 原文鏈接:http://t.cn/RtnSJwA
翻譯自力譜宿云LeapCloud旗下MaxLeap團(tuán)隊_UX成員:Jason
本文首發(fā)自MaxLeap官網(wǎng):https://maxleap.cn/
歡迎關(guān)注微信公眾號:MaxLeap_yidongyanfa

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/80819.html

相關(guān)文章

  • 初次嘗試使用typescript開發(fā)react-native

    摘要:搭建開發(fā)環(huán)境安裝和命令行工具是提供的替代的工具,可以加速模塊的下載。的命令行工具用于執(zhí)行創(chuàng)建初始化更新項目運行打包服務(wù)等任務(wù)。 typescript是javascript的超集,在javascript的基礎(chǔ)上添加了可選的靜態(tài)類型,非常適合團(tuán)隊開,這次我們嘗試使用typescript來開發(fā)react-native應(yīng)用。 搭建react-native開發(fā)環(huán)境 安裝yarn和react-na...

    Hwg 評論0 收藏0
  • 前端每周清單半年盤點之 ReactReactNative

    摘要:前端每周清單半年盤點之與篇前端每周清單專注前端領(lǐng)域內(nèi)容,以對外文資料的搜集為主,幫助開發(fā)者了解一周前端熱點分為新聞熱點開發(fā)教程工程實踐深度閱讀開源項目巔峰人生等欄目。與求同存異近日,宣布將的構(gòu)建工具由遷移到,引發(fā)了很多開發(fā)者的討論。 前端每周清單半年盤點之 React 與 ReactNative 篇 前端每周清單專注前端領(lǐng)域內(nèi)容,以對外文資料的搜集為主,幫助開發(fā)者了解一周前端熱點;分為...

    Barry_Ng 評論0 收藏0
  • 【譯】React Native 動畫 API 入門實例

    摘要:簡而言之,它將對動畫中變化的屬性數(shù)值做插值運算并且刷新視圖。注意我們所建立的的是的一個實例。最后我們使用,表示這個組件是可動畫組件。一直不停動動畫序列的方法可以傳一個回調(diào)函數(shù),在動畫全部執(zhí)行完時觸發(fā)。 翻譯自 React-native Animated API Basic Example 翻譯過程中有刪改 簡介 本文是探索 react-native 中實現(xiàn)的的 Animated AP...

    qianfeng 評論0 收藏0
  • React Native 簡介:用 JavaScript 搭建 iOS 應(yīng)用 (1)

    摘要:利用來搭建代碼。雖然這不是安裝的唯一方式,但我發(fā)現(xiàn),是非常好用的包管理器。終端窗口打開后,會啟動,并由服務(wù)器處理以上請求。面對這種情況時,需要關(guān)閉終端窗口,停止在上的應(yīng)用,并重新運行。使用設(shè)定應(yīng)用的用戶界面。命名這兩個文件為和。 【編者按】本篇文章的作者是 Joyce Echessa——渥合數(shù)位服務(wù)創(chuàng)辦人,畢業(yè)于臺灣大學(xué),近年來專注于協(xié)助客戶進(jìn)行 App 軟體以及網(wǎng)站開發(fā)。本篇文章中,...

    xiaoqibTn 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<