這是 React Native Android 的首次發(fā)行,因此在 iOS 平臺上出現(xiàn)的視圖不一定都會發(fā)布在 Android 上面。我們對社區(qū)里面的對下一系列模塊和視圖的開源代碼的反饋非常感興趣。并不是所有的視圖在 iOS 和 Android 上面都有 100% 完全相同的表現(xiàn),因此在這里就有必要使用一個(gè)對應(yīng)的例子:在 Android 上面使用 ProgressBar,而在 iOS 上面則會使用 ActivityIndicator 來替代。
我們對共同的視圖和模塊的臨時(shí)計(jì)劃包括:
視圖
View Pager
Swipe Refresh
Spinner
ART
Maps
Webview
模塊
Geo Location
Net Info
Camera Roll
App State
Dialog
Intent
Media
Pasteboard
Alert
現(xiàn)在在 Android 上面發(fā)布自定義的原生模塊并不是一件輕松的事。貢獻(xiàn)者平滑穩(wěn)定的工作流很重要并且這將在第一次開源版本發(fā)布之后被密切關(guān)注。當(dāng)然,我們的目標(biāo)是形成流水線并且盡量優(yōu)化在 iOS 和 Android 平臺之間的流程。
在 iOS 和 Android 之間使用透明度為 0 來處理視圖有一個(gè)明顯的差異。雖然在 iOS 上面允許這些視圖被點(diǎn)擊并且在這些視圖下面的視圖也將會接收到觸摸輸入,但是在 Android 上面這個(gè)觸摸輸入則會被阻塞。這一點(diǎn)可以用下面的一個(gè)只能在 iOS 上面點(diǎn)擊的例子來演示。
<View style={{flex: 1}}>
<TouchableOpacity onPress={() => alert('hi!')}>
<Text>HELLO!</Text>
</TouchableOpacity>
<View style={{
position: 'absolute',
top: 0,
left: 0,
bottom: 0,
right: 0,
opacity: 0}} />
</View>
在 React Native 的安卓版本一個(gè)優(yōu)化的特征就是對于只能貢獻(xiàn)布局的視圖不能有原生視圖,只有它們的布局屬性能夠傳遞到它們的子視圖。這個(gè)優(yōu)化是為了給更深層次的 React Native 視圖層提供支持,因此默認(rèn)是開啟的。如果你需要一個(gè)視圖被呈現(xiàn),或者間歇性的測試檢測一個(gè)視圖是不是只是布局,關(guān)閉這個(gè)行為就很有必要了。為了做到這一點(diǎn),你只需要設(shè)置 collapsable 為 false 即可:
<View collapsable={false}>
...
</View>