基于react native的图片放大旋转效果二

基于react native的图片放大旋转效果二

在这里插入图片描述

const TaskReceiveModal = ({ onClick }) => {
    const spinValue = useRef(new Animated.Value(0)).current;
    const scaleValue = useRef(new Animated.Value(0)).current;
    const spinAnimation = useRef(null);

    const spin = spinValue.interpolate({
        inputRange: [0, 1],
        outputRange: ['0deg', '360deg']
    });
    const animate = () => {
        scaleValue.setValue(0);
        Animated.timing(scaleValue, {
            toValue: 1,
            duration: 1000,
            easing: Easing.in(Easing.bounce),
            useNativeDriver: true
        }).start(() => { });
        startSpinAnimation();
    };

    const startSpinAnimation = () => {
        spinValue.setValue(0);
        spinAnimation.current = Animated.timing(spinValue, {
            toValue: 1,
            duration: 1500,
            easing: Easing.linear,
            useNativeDriver: true
        });
        spinAnimation.current.start(({ finished }) => {
            if (finished) {
                spinAnimation.current.stop();
            }
        });
    };


    const coloseHandle = () => {
        onClick && onClick();
    }
    useEffect(() => {
        animate();
        return () => {

        }
    }, []);

    return (
        <>
            <View style={styles.taskReceive}>
                <Animated.View style={[{
                    transform: [
                        { scale: scaleValue }
                    ]
                }]}>
                    <View style={styles.receiveBlock}>
                        <ImageBackground style={styles.receiveBg} source={require('../../../common/images/dressup_pupop_bg.png')} />
                        <View style={styles.receiveContent}>
                            <View style={{ width: '100%', height: pxToPd(44) }}></View>
                            <View style={styles.receiveTitile}>
                                <Text style={styles.receiveTitileTxt}>恭喜你获得徽章</Text>
                            </View>
                            <View style={{ width: '100%', height: pxToPd(22) }}></View>
                            <View style={styles.receiveBox}>
                                <Animated.Image style={[styles.taskReceiveIcon, {
                                    transform: [
                                        { rotateY: spin },
                                    ]
                                }]} source={require('../../../common/images/badge_temp_logo.png')}></Animated.Image>
                            </View>
                            <View style={{ width: '100%', height: pxToPd(22) }}></View>
                            <View style={styles.receiveFooter}>
                                <CustomeBtn name={'确认'} width={500} onClick={coloseHandle} />
                            </View>
                        </View>
                    </View>
                </Animated.View>

            </View>
        </>
    )
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值