Skip to content
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

Animating icons such as spinners #14

Open
nirpeled opened this issue Aug 3, 2017 · 7 comments
Open

Animating icons such as spinners #14

nirpeled opened this issue Aug 3, 2017 · 7 comments

Comments

@nirpeled
Copy link
Contributor

nirpeled commented Aug 3, 2017

I wonder how much effort will it take to support animating an icon, similar to using the "fa-spin" class for spinner icons - examples at http://fontawesome.io/examples/#animated

I'd love to help out with this :)

@kchaengsiri
Copy link

+1

@nirpeled
Copy link
Contributor Author

nirpeled commented Oct 1, 2017

I actually ended up wrapping the FontAwesome component to animate it, here it is:

import React, { Component } from 'react';
import { Animated, Easing } from 'react-native';
import FontAwesome, { Icons } from 'react-native-fontawesome';

class FontAwesomeSpin extends Component {

    spinValue = new Animated.Value(0);

    componentDidMount(){
        this.spin();
    };

    spin = () => {

        this.spinValue.setValue(0);

        Animated.timing(
            this.spinValue,
            {
                toValue: 1,
                duration: 1000,
                easing: Easing.linear,
                useNativeDriver: true
            }
        ).start(() => this.spin());

    };

    render() {

        const { style, children } = this.props;
        const rotate = this.spinValue.interpolate({inputRange: [0, 1], outputRange: ['0deg', '360deg']});

        return(
            <Animated.View style={{transform: [{rotate}]}}>
                <FontAwesome style={style}>
                    {children}
                </FontAwesome>
            </Animated.View>
        )

    }
}

export default FontAwesomeSpin;

So instead of using:

<FontAwesome style={{fontSize: 32}}>
    {Icons.chevronLeft}
</FontAwesome>

Simply use:

<FontAwesomeSpin style={{fontSize: 32}}>
    {Icons.chevronLeft}
</FontAwesomeSpin>

@kchaengsiri
Copy link

@nirpeled Thanks

@nirpeled
Copy link
Contributor Author

nirpeled commented Oct 1, 2017

Feel free to support my PR: #19

@aledalgrande
Copy link

aledalgrande commented Apr 14, 2018

Don't know if the people upvoting just copy-pasted the code above, but the PR doesn't work, because the library doesn't export SpinningIcon?

@ShareNewsLLC
Copy link

I'm using this

import { ActivityIndicator } from 'react-native'

<ActivityIndicator size={35} color="#600" />

@ctepeo
Copy link

ctepeo commented Jun 29, 2020

I'm using this

import { ActivityIndicator } from 'react-native'

<ActivityIndicator size={35} color="#600" />

To the guys that will copy-paste your solution: following the documentation numeric value for size is gonna work only on Android, but "large" and "small" shall work on both platforms

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants