Animasi pegas default pada transisi adegan sedikit lebih lambat dari yang saya harapkan, jadi saya bertanya-tanya apakah mungkin untuk membuat dan menggunakan animasi khusus. Setiap pointer akan dihargai.
Hai, inilah cara saya melakukannya untuk menangani bahasa rtl (seperti arab, sehingga transisinya dari kanan ke kiri.
rtlAwareAnimation(pos, navState) {
const factor = I18n.rtl() ? -1 : 1;
Animated.spring(
pos,
{
bounciness: 0,
toValue: factor*navState.index,
}
).start();
},
render() {
return (
<Router>
<Scene key="signIn" component={SignIn} title={I18n.t('signIn')} initial={true} applyAnimation={this.rtlAwareAnimation} />
<Scene key="dashboard" component={Dashboard}applyAnimation={this.rtlAwareAnimation} />
</Router>
);
Namun, itu masih tidak terlalu berguna karena adegan ditempatkan di posisi khusus yang berarti bahwa arah transisi harus sesuai dengan tempat adegan berikutnya.
Bagaimana dari atas ke bawah atau sebaliknya? tampaknya hanya menangani 1 dimensi.
Mereka sudah memperbaiki masalah ini. Yang perlu Anda lakukan adalah menyediakan properti direction
karena secara default arahnya adalah rightToLeft.
import { I18nManager } from 'react-native'
let directionSide = I18nManager.isRTL ? 'leftToRight' : null
<Scene key='xXXXX' component={XXXXX} title='XXXXX' direction={directionSide}/>