Могу ли я вызвать анимацию компонента Switch React Native при изменении его состояния, когда пользователь не нажимает на него напрямую?

В моем проекте React Native я использую компонент Switch. Его можно переключать напрямую, нажимая его, но я также хочу позволить пользователю изменить его, нажав рядом связанные элементы.

Это, конечно, оживляет переключение при нажатии, но когда я изменил его состояние с помощью setState() он просто переходит прямо в другую позицию без анимации.

Есть ли способ, которым я могу программно вызвать анимацию при изменении ее состояния из кода?

(Есть вопрос с похожей формулировкой, но, похоже, это не связанная с этим проблема, которую я не могу решить.)

2 ответа

Вы пробовали сторонние библиотеки вроде этого; Переключение материала Существует OnChangeState(), я надеюсь, что это будет работать с анимацией.

Другие ссылки, которые могут быть полезны: Switch Pro

Немного зависит от подхода, который вы выбираете, но я бы сказал, что ваш лучший выбор - это Animated (который является частью React Native).

Вы можете сделать что-то вроде этого:

render(){
    var animVal = new Animated.Value(0);   
    Animated.timing(animVal, {toValue: 1, duration: 300}).start();
    var animatedViewStyles =
        {
             marginLeft: animVal.interpolate({
                 inputRange: [0, 1],
                 outputRange: this.state.switchOn ? [100, 0] : [0, 100],
             }),
             // add some other styles here
             color: 'green'
        };
    }

    return (
        <Animated.View style={animatedViewStyles}>
            <TouchableHighlight onPress(() => this.setState({switchOn: !this.state.switchOn}))><Text>This is my switch</Text></TouchableHighlight>
        </Animated.View>
    );

См. Документы https://facebook.github.io/react-native/docs/animated.html для получения дополнительной информации.

Другие вопросы по тегам