Comment puis-je procéder pour animer d’une couleur à une autre dans React Native. J'ai découvert qu'en interpolant un Animated.Value, vous pouvez animer des couleurs en:
var BLACK = 0;
var RED = 1;
var BLUE = 2;
backgroundColor: this.state.color.interpolate({
inputRange: [BLACK, RED, BLUE],
outputRange: ['rgb(0, 0, 0)', 'rgb(255, 0, 0)', 'rgb(0, 0, 255)']
})
et
Animated.timing(this.state.color, {toValue: RED}).start();
Mais en utilisant cette méthode, passant de NOIR à BLEU, vous devez passer par le rouge. Ajoutez plus de couleurs au mélange et vous vous retrouverez dans une discothèque des années 1980.
Y a-t-il une autre façon de faire qui vous permet de passer directement d’une couleur à l’autre?
Étant donné que vous avez Animated.Value
_, disons x
, vous pouvez interpoler une couleur comme ceci:
render() {
var color = this.state.x.interpolate({
inputRange: [0, 300],
outputRange: ['rgba(255, 0, 0, 1)', 'rgba(0, 255, 0, 1)']
});
return (
<Animated.View style={{backgroundColor:color}}></Animated.View>
);
}
Vous trouverez un exemple complet dans le numéro que j'ai posté sur github .
Si vous pouviez obtenir la couleur de la valeur de la couleur animée au moment où vous avez appuyé sur le bouton, vous pourriez probablement le faire. Quelque chose comme ça :
var currentColor = ? :
this.state.color = 0;
var bgColor = this.state.color.interpolate({
inputRange: [0, 1],
outputRange: [currentColor, targetColor]
});
Donc, pour chaque bouton, vous définissez un targetColor différent.