2017-06-29 18 views
3

J'ai commencé à animer une image dans mon projet réac-natif mais de toute façon je ne peux pas animer la propriété blurRadius. Translate et Scale fonctionnent très bien. Voici le code que j'utilise pour interpolat valeurs e pour le flou, l'échelle et traduis:Animer la propriété blurRadius avec react-native

// Compute image position 
const imageTranslate = this.state.scrollY.interpolate({ 
    inputRange: [-IMAGE_MAX_HEIGHT, 0, IMAGE_MAX_HEIGHT], 
    outputRange: [IMAGE_MAX_HEIGHT/2, 0, -IMAGE_MAX_HEIGHT/3], 
    extrapolate: 'clamp', 
}); 
// Compute image blur 
const imageBlur = this.state.scrollY.interpolate({ 
    inputRange: [0, IMAGE_MAX_HEIGHT], 
    outputRange: [0, 100], 
    extrapolate: 'clamp', 
}); 
// Compute image scale 
const imageScale = this.state.scrollY.interpolate({ 
    inputRange: [-IMAGE_MAX_HEIGHT, 0, IMAGE_MAX_HEIGHT], 
    outputRange: [2, 1, 1], 
    extrapolate: 'clamp', 
}); 

Et ceci est mon image:

return (
    <Animated.Image 
    blurRadius={imageBlur} 
    source={this.props.imgSrc} 
    style={[ 
     animatedImageStyles.backgroundImage, 
     { transform: [{ translateY: imageTranslate }, { scale: imageScale }] } 
    ]} 
    /> 
); 

Je binded la valeur this.state.scrollY sur un rouleau ScrollView.

+0

L'animation de blurRadius fonctionne en 0.51 mais je rencontre des problèmes de performance avec Android en particulier. – 30secondstosam

Répondre

0

Le timing de votre problème indique que la solution doit être aussi simple que la mise à niveau de React Native. Le support du flou de rayon sur les images a été ajouté dans la version 0.46. Je viens de créer une nouvelle application réac-native et j'ai implémenté 3 animations sur une image, dont l'une était blurRadius, et tout fonctionne correctement. C'est avec la version 0.49.5. La mise à niveau devrait résoudre votre problème!

Notez qu'il semble actuellement être un problème sur Android, voir https://github.com/facebook/react-native/issues/16494

je remarquai que blurRadius ne (et peut-être plus tôt) fonctionne pas non plus sur iOS avec RN 0,48, mais 0.49.5 est très bien. Il n'y a aucune mention de blurRadius dans les notes de version pour 0.48 et 0.49.

+0

J'ai vu 0.49 Release Note, il n'y a rien à propos de blurRadius bug sur Android. – Arman

+0

Hmm, l'OP n'a rien dit dans la question à ce sujet étant spécifiquement un problème Android. En fait, oui, je reçois un écran rouge de la mort en essayant d'utiliser blurRadius sur Android 7.1 et 7.0. Pourtant, ce que j'ai écrit est correct - que blurRadius a été implémenté il y a quelques mois. Et il semble que cela a fonctionné à un moment donné pour Android. Il y a un problème ouvert à ce sujet: https://github.com/facebook/react-native/issues/16494 – sinewave440hz