-
Notifications
You must be signed in to change notification settings - Fork 24.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Android: Animated.View opacity does not animate from 1 when using the native driver #25318
Comments
Hey guys, I created a PR to fix this bug. Comments/suggestions would be appreciated. |
Huge thanks for that, @cabelitos . |
@guiccbr @cabelitos cc: @cpojer |
@guiccbr have you created another issue already? If not, I can create it |
@sintylapse, no, I haven't, can you please create then? tks. |
@guiccbr @sintylapse @cabelitos has anyone looked into this recently? It still seems to be a bug on 0.60.4 and hardcoding the value of |
Just ran across this issue - has this been re-fixed yet in a later version? |
…ve driver (facebook#25361) Summary: Depending on the style props of an Animated.View it may be optimised away by the NativeViewHierarchyOptimizer, which will make the animation to fail, because the native view is virtual (it does not exists in the native view hierarchy). Although the createAnimatedComponent already sets the collapsable property based on the this._propsAnimated.__isNative flag, it won't work on all cases, since the __isNative flag is only set when one starts the animation. Which won't cause a re-render to occuor, thus not setting the collapsable property to false. In order to prevent this issue the HOC will just set the collapsable property to false. ## Changelog [Javascript] [Fixed] - Properly set collapsable to false before starting a nativeDriver animation Pull Request resolved: facebook#25361 Test Plan: ### **Without this patch:** Run the following App on an Android device without this patch and click start. Outcome: The animation **will not** make the text invisible. ### **With this patch:** Run the following App on an Android device with this patch and click start. Outcome: The animation **will** make the text invisible. ```javascript import React, { Component, ReactNode } from 'react'; import { View, Text, TouchableOpacity, Animated, StyleSheet, Easing } from 'react-native'; interface Props { } const Constants = { animation: { duration: 500, }, }; const text = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sed orci erat. Suspendisse feugiat elit gravida elit consequat ultrices. Sed sollicitudin ullamcorper molestie. Mauris a diam neque. Vivamus in lectus.'; class App extends Component<Props> { anim: any; constructor(props: Props) { super(props); this.anim = new Animated.Value(0); } handleStartPress = () => { this.anim.setValue(0); console.log('start'); Animated.timing(this.anim, { duration: Constants.animation.duration, toValue: 1, easing: Easing.linear(), useNativeDriver: true, }).start(); }; render(): ReactNode { return ( <View style={styles.container}> <Animated.View style={{ opacity: this.anim.interpolate({ inputRange: [0, 1], outputRange: [1, 0], }), }}> <Text>{text}</Text> </Animated.View> <TouchableOpacity style={styles.startButton} onPress={this.handleStartPress}> <Text style={styles.startButtonText}>START</Text> </TouchableOpacity> </View> ); } } const styles = StyleSheet.create({ container: { alignItems: 'center', backgroundColor: 'white', flex: 1, }, description: { marginTop: 20, paddingHorizontal: 10, }, startButton: { alignItems: 'center', aspectRatio: 1, backgroundColor: 'yellow', borderRadius: 100, height: 50, justifyContent: 'center', }, startButtonText: { fontSize: 10, fontWeight: 'bold', }, }); export default App; ``` Closes facebook#25318 Differential Revision: D15983822 Pulled By: cpojer fbshipit-source-id: 1d790fbddc3103a2e34e114db956fa1fb465c1c9
issue definitely happening to me as well, only in Android, ios works fine |
Hello
For some reason, it seems that an
Animated.View
does not animate opacity when the animated value starts from 1 when using the native driver. When using 1.1 or 0.9 (instead of exactly 1) - or when not using the native driver - the animation works fine.Steps To Reproduce
Animated.View
. Something like:I'd expect the Animated View to fade out when the animation runs, but no opacity change happens.
If a number larger or smaller than 1 is used, the animation works. Not reproducible on iOS.
Snack:
https://snack.expo.io/H1jsre_kB
React Native version:
The text was updated successfully, but these errors were encountered: