Die standardmäßige Frühlingsanimation beim Szenenübergang ist etwas langsamer als erwartet, daher frage ich mich, ob es möglich ist, eine benutzerdefinierte Animation zu erstellen und zu verwenden. Jeder Hinweis wäre willkommen.
Hallo, hier ist, wie ich es gemacht habe, um mit RTL-Sprachen umzugehen (wie Arabisch, so dass der Übergang von rechts nach links ist.
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>
);
Wirklich sinnvoll ist es aber trotzdem nicht, da die Szenen an speziellen Positionen platziert werden, was bedeutet, dass die Übergangsrichtung mit der Stelle übereinstimmen muss, an der die nächste Szene ist
Wie wäre es von oben nach unten oder umgekehrt? es scheint nur 1 Dimension zu behandeln.
Sie haben dieses Problem bereits behoben. Sie müssen lediglich die Eigenschaft direction
angeben, da die Richtung standardmäßig von rechts nach links ist.
import { I18nManager } from 'react-native'
let directionSide = I18nManager.isRTL ? 'leftToRight' : null
<Scene key='xXXXX' component={XXXXX} title='XXXXX' direction={directionSide}/>