From 027e72a36465172beded71f1f7dbc18b23bc7c9d Mon Sep 17 00:00:00 2001 From: jinyaqiu Date: Fri, 8 Aug 2025 16:25:32 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/(tabs)/index.tsx | 530 +++++++++++----------------------- app/(tabs)/login.tsx | 4 +- assets/images/png/icon/ip.png | Bin 25124 -> 22534 bytes 3 files changed, 167 insertions(+), 367 deletions(-) diff --git a/app/(tabs)/index.tsx b/app/(tabs)/index.tsx index d3102a4..f766889 100644 --- a/app/(tabs)/index.tsx +++ b/app/(tabs)/index.tsx @@ -1,291 +1,183 @@ +import { Fonts } from '@/constants/Fonts'; import { checkAuthStatus } from '@/lib/auth'; import { useRouter } from 'expo-router'; -import React, { useEffect, useRef, useState } from 'react'; +import React, { useEffect } from 'react'; import { useTranslation } from 'react-i18next'; -import { Animated, Dimensions, Image, StyleSheet, Text, TouchableOpacity, View } from 'react-native'; +import { Dimensions, Image, StyleSheet, Text, TouchableOpacity, View } from 'react-native'; +import Animated, { + interpolate, + useAnimatedStyle, + useSharedValue, + withDelay, + withRepeat, + withSequence, + withTiming +} from 'react-native-reanimated'; import { useSafeAreaInsets } from "react-native-safe-area-context"; +// Worklet function for animations +const runShakeAnimation = (value: Animated.SharedValue) => { + 'worklet'; + return withRepeat( + withSequence( + withTiming(1, { duration: 300 }), + withTiming(-1, { duration: 300 }), + withTiming(1, { duration: 300 }), + withTiming(-1, { duration: 300 }), + withTiming(0, { duration: 200 }), + withDelay(1000, withTiming(0, { duration: 0 })) + ), + -1 + ); +}; + +const runWaveAnimation = (value: Animated.SharedValue) => { + 'worklet'; + return withRepeat( + withSequence( + withTiming(1, { duration: 500 }), + withTiming(-1, { duration: 500 }), + withTiming(0, { duration: 500 }), + withDelay(1000, withTiming(0, { duration: 0 })) + ), + -1 + ); +}; + export default function HomeScreen() { const router = useRouter(); const { t } = useTranslation(); const insets = useSafeAreaInsets(); - const [isLoading, setIsLoading] = useState(false); - - // 获取屏幕宽度 + const [isLoading, setIsLoading] = React.useState(false); const screenWidth = Dimensions.get('window').width; - // 动画值 - const fadeAnim = useRef(new Animated.Value(0)).current; // IP图标的淡入动画 - const shakeAnim = useRef(new Animated.Value(0)).current; // IP图标的摇晃动画 - const animationRef = useRef(null); // 动画引用 - const descriptionAnim = useRef(new Animated.Value(0)).current; // 描述文本的淡入动画 - const buttonAnim = useRef(new Animated.Value(0)).current; // 按钮的淡入动画 - const buttonShakeAnim = useRef(new Animated.Value(0)).current; // 按钮的摇晃动画 - const buttonLoopAnim = useRef(null); // 按钮循环动画引用 - const fadeInAnim = useRef(new Animated.Value(0)).current; + // Animation values + const fadeAnim = useSharedValue(0); + const shakeAnim = useSharedValue(0); + const waveAnim = useSharedValue(0); + const buttonShakeAnim = useSharedValue(0); + const fadeInAnim = useSharedValue(0); + const descriptionAnim = useSharedValue(0); + const textAnimations = { + line1: useSharedValue(0), + line2: useSharedValue(0), + line3: useSharedValue(0), + subtitle: useSharedValue(0), + }; - // 文本行动画值 - const [textAnimations] = useState(() => ({ - line1: new Animated.Value(0), // 第一行文本动画 - line2: new Animated.Value(0), // 第二行文本动画 - line3: new Animated.Value(0), // 第三行文本动画 - subtitle: new Animated.Value(0), // 副标题动画 + // Animation styles + const ipAnimatedStyle = useAnimatedStyle(() => ({ + opacity: fadeAnim.value, + transform: [ + { translateX: interpolate(shakeAnim.value, [-1, 1], [-2, 2]) }, + { rotate: `${interpolate(shakeAnim.value, [-1, 1], [-2, 2])}deg` }, + ], })); - // 添加挥手动画值 - const waveAnim = useRef(new Animated.Value(0)).current; + const waveAnimatedStyle = useAnimatedStyle(() => ({ + transform: [ + { rotate: `${interpolate(waveAnim.value, [-1, 0, 1], [-15, 0, 15])}deg` }, + ], + })); - // 启动IP图标摇晃动画 - const startShaking = () => { - // 停止任何正在进行的动画 - if (animationRef.current) { - animationRef.current.stop(); - } + const buttonStyle = useAnimatedStyle(() => ({ + opacity: fadeInAnim.value, + transform: [ + { translateY: interpolate(fadeInAnim.value, [0, 1], [20, 0]) }, + { translateX: interpolate(buttonShakeAnim.value, [-1, 0, 1], [-5, 0, 5]) } + ] + })); - // 创建动画序列 - const sequence = Animated.sequence([ - // 第一次左右摇晃 - Animated.timing(shakeAnim, { - toValue: 1, - duration: 300, - useNativeDriver: true, - }), - Animated.timing(shakeAnim, { - toValue: -1, - duration: 300, - useNativeDriver: true, - }), - // 第二次左右摇晃 - Animated.timing(shakeAnim, { - toValue: 1, - duration: 300, - useNativeDriver: true, - }), - Animated.timing(shakeAnim, { - toValue: -1, - duration: 300, - useNativeDriver: true, - }), - // 回到中心位置 - Animated.timing(shakeAnim, { - toValue: 0, - duration: 200, - useNativeDriver: true, - }), - // 1秒延迟 - Animated.delay(1000), - ]); + const welcomeStyle = useAnimatedStyle(() => ({ + opacity: fadeInAnim.value, + transform: [{ translateY: interpolate(fadeInAnim.value, [0, 1], [20, 0]) }] + })); - // 循环播放动画序列 - animationRef.current = Animated.loop(sequence); - animationRef.current.start(); - }; + const descriptionStyle = useAnimatedStyle(() => ({ + opacity: descriptionAnim.value, + transform: [{ translateY: interpolate(descriptionAnim.value, [0, 1], [20, 0]) }] + })); - // 启动文本动画 - const startTextAnimations = () => { - // 按顺序延迟启动每行文本动画 - return new Promise((resolve) => { - Animated.stagger(300, [ - Animated.timing(textAnimations.line1, { - toValue: 1, - duration: 500, - useNativeDriver: true, - }), - Animated.timing(textAnimations.line2, { - toValue: 1, - duration: 500, - useNativeDriver: true, - }), - Animated.timing(textAnimations.line3, { - toValue: 1, - duration: 500, - useNativeDriver: true, - }), - Animated.timing(textAnimations.subtitle, { - toValue: 1, - duration: 500, - useNativeDriver: true, - }), - ]).start(() => resolve()); - }); - }; + const textLine1Style = useAnimatedStyle(() => ({ + opacity: textAnimations.line1.value, + transform: [{ translateY: interpolate(textAnimations.line1.value, [0, 1], [10, 0]) }] + })); - // 启动描述文本动画 - const startDescriptionAnimation = () => { - // IP图标显示后淡入描述文本 - return new Promise((resolve) => { - Animated.sequence([ - Animated.delay(200), // IP图标显示后延迟200ms - Animated.timing(descriptionAnim, { - toValue: 1, - duration: 800, - useNativeDriver: true, - }) - ]).start(() => resolve()); - }); - }; - // 启动欢迎语动画 - const startWelcomeAnimation = () => { - // IP图标显示后淡入描述文本 - return new Promise((resolve) => { - Animated.sequence([ - Animated.delay(200), // IP图标显示后延迟200ms - Animated.timing(fadeInAnim, { - toValue: 1, - duration: 800, - useNativeDriver: true, - }) - ]).start(() => resolve()); - }); - }; + const textLine2Style = useAnimatedStyle(() => ({ + opacity: textAnimations.line2.value, + transform: [{ translateY: interpolate(textAnimations.line2.value, [0, 1], [10, 0]) }] + })); - // 启动按钮动画 - const startButtonAnimation = () => { - // 首先淡入按钮 - Animated.sequence([ - Animated.timing(buttonAnim, { - toValue: 1, - duration: 800, - useNativeDriver: true, - }) - ]).start(() => { - // 淡入完成后开始循环摇晃动画 - startButtonShakeLoop(); - }); - }; + const textLine3Style = useAnimatedStyle(() => ({ + opacity: textAnimations.line3.value, + transform: [{ translateY: interpolate(textAnimations.line3.value, [0, 1], [10, 0]) }] + })); - // 启动按钮循环摇晃动画 - const startButtonShakeLoop = () => { - // 停止任何正在进行的动画 - if (buttonLoopAnim.current) { - buttonLoopAnim.current.stop(); - } + const subtitleStyle = useAnimatedStyle(() => ({ + opacity: textAnimations.subtitle.value, + transform: [{ translateY: interpolate(textAnimations.subtitle.value, [0, 1], [10, 0]) }] + })); - // 创建摇晃动画序列 - const shakeSequence = Animated.sequence([ - // 向右摇晃 - Animated.timing(buttonShakeAnim, { - toValue: 1, - duration: 100, - useNativeDriver: true, - }), - // 向左摇晃 - Animated.timing(buttonShakeAnim, { - toValue: -1, - duration: 100, - useNativeDriver: true, - }), - // 再次向右摇晃 - Animated.timing(buttonShakeAnim, { - toValue: 1, - duration: 100, - useNativeDriver: true, - }), - // 回到中心位置 - Animated.timing(buttonShakeAnim, { - toValue: 0, - duration: 100, - useNativeDriver: true, - }), - // 暂停3秒 - Animated.delay(3000) - ]); - - // 循环播放动画序列 - buttonLoopAnim.current = Animated.loop(shakeSequence); - buttonLoopAnim.current.start(); - }; - - // 启动挥手动画 - const startWaveAnimation = () => { - // 创建循环动画:左右摇摆 - Animated.loop( - Animated.sequence([ - Animated.timing(waveAnim, { - toValue: 1, - duration: 500, - useNativeDriver: true, - }), - Animated.timing(waveAnim, { - toValue: -1, - duration: 500, - useNativeDriver: true, - }), - Animated.timing(waveAnim, { - toValue: 0, - duration: 500, - useNativeDriver: true, - }), - Animated.delay(1000), // 暂停1秒 - ]) - ).start(); - }; - - // 组件挂载时启动动画 + // Start animations useEffect(() => { setIsLoading(true); + checkAuthStatus(router, () => { - router.replace('/ask') + router.replace('/ask'); }, false).then(() => { setIsLoading(false); }).catch(() => { setIsLoading(false); }); - // IP图标的淡入动画 - Animated.timing(fadeAnim, { - toValue: 1, - duration: 1000, - useNativeDriver: true, - }).start(() => { - // 淡入完成后开始摇晃动画 - startShaking(); - // IP显示后开始文本动画 - startTextAnimations() - .then(() => startWelcomeAnimation()) - .then(() => startDescriptionAnimation()) - .then(() => startButtonAnimation()) - .catch(console.error); - // 启动挥手动画 - startWaveAnimation(); + + // Start fade in animation + fadeAnim.value = withTiming(1, { duration: 1000 }, () => { + // Start shake animation + shakeAnim.value = runShakeAnimation(shakeAnim); + + // Start text animations with delays + textAnimations.line1.value = withDelay(0, withTiming(1, { duration: 500 })); + textAnimations.line2.value = withDelay(300, withTiming(1, { duration: 500 })); + textAnimations.line3.value = withDelay(600, withTiming(1, { duration: 500 })); + textAnimations.subtitle.value = withDelay(900, withTiming(1, { duration: 500 })); + + // Start welcome animation + fadeInAnim.value = withDelay(200, withTiming(1, { duration: 800 })); + + // Start description animation + descriptionAnim.value = withDelay(200, withTiming(1, { duration: 800 })); + + // Start button animation + fadeInAnim.value = withDelay(200, withTiming(1, { duration: 800 }, () => { + // Start button shake animation + buttonShakeAnim.value = withRepeat( + withSequence( + withTiming(1, { duration: 100 }), + withTiming(-1, { duration: 100 }), + withTiming(1, { duration: 100 }), + withTiming(0, { duration: 100 }), + withDelay(3000, withTiming(0, { duration: 0 })) + ), + -1 + ); + })); + + // Start wave animation + waveAnim.value = runWaveAnimation(waveAnim); }); - // 组件卸载时清理动画 + // Cleanup return () => { - if (buttonLoopAnim.current) { - buttonLoopAnim.current.stop(); - } - if (animationRef.current) { - animationRef.current.stop(); - } + fadeAnim.value = 0; + shakeAnim.value = 0; + waveAnim.value = 0; + buttonShakeAnim.value = 0; + fadeInAnim.value = 0; + descriptionAnim.value = 0; + Object.values(textAnimations).forEach(anim => anim.value = 0); }; - }, []); - // 动画样式 - const animatedStyle = { - opacity: fadeAnim, - transform: [ - { - translateX: shakeAnim.interpolate({ - inputRange: [-1, 1], - outputRange: [-2, 2], - }) - }, - { - rotate: shakeAnim.interpolate({ - inputRange: [-1, 1], - outputRange: ['-2deg', '2deg'], - }), - }, - ], - }; - - // 旋转动画插值 - const rotate = waveAnim.interpolate({ - inputRange: [-1, 0, 1], - outputRange: ['-15deg', '0deg', '15deg'], - }); - if (isLoading) { return ( @@ -297,86 +189,27 @@ export default function HomeScreen() { return ( - {/* 标题区域 */} - + {t('auth.welcomeAwaken.awaken', { ns: 'login' })} - + {t('auth.welcomeAwaken.your', { ns: 'login' })} - + {t('auth.welcomeAwaken.pm', { ns: 'login' })} - + {t('auth.welcomeAwaken.slogan', { ns: 'login' })} - {/* 欢迎语 */} + - + - {/* Animated IP */} - + - {/* 介绍文本 */} - + {t('auth.welcomeAwaken.gallery', { ns: 'login' })} {"\n"} {t('auth.welcomeAwaken.back', { ns: 'login' })} - {/* 唤醒按钮 */} - + { - router.push('/login'); - }} + onPress={() => router.push('/login')} activeOpacity={0.8} > @@ -485,17 +281,19 @@ const styles = StyleSheet.create({ }, titleText: { color: '#FFFFFF', - fontSize: 30, + fontSize: 32, fontWeight: 'bold', marginBottom: 12, textAlign: 'left', lineHeight: 36, + fontFamily: Fonts['quicksand'] }, subtitleText: { color: 'rgba(255, 255, 255, 0.85)', fontSize: 16, textAlign: 'left', lineHeight: 24, + fontFamily: Fonts['inter'] }, ipContainer: { alignItems: 'center', @@ -514,11 +312,12 @@ const styles = StyleSheet.create({ opacity: 0.9, paddingHorizontal: 40, marginTop: -16, + fontFamily: Fonts['inter'] }, awakenButton: { backgroundColor: '#FFFFFF', borderRadius: 28, - paddingVertical: 16, + paddingVertical: 20, shadowColor: '#000', shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.1, @@ -532,5 +331,6 @@ const styles = StyleSheet.create({ color: '#4C320C', fontWeight: 'bold', fontSize: 18, + fontFamily: Fonts['quicksand'] }, }); \ No newline at end of file diff --git a/app/(tabs)/login.tsx b/app/(tabs)/login.tsx index 3c84020..46cd102 100644 --- a/app/(tabs)/login.tsx +++ b/app/(tabs)/login.tsx @@ -83,7 +83,7 @@ const LoginScreen = () => { className="absolute left-1/2 z-10" style={{ top: containerHeight > 0 ? windowHeight - containerHeight - 210 + statusBarHeight - insets.top - 28 : 0, - transform: [{ translateX: -200 }, { translateY: keyboardOffset > 0 ? -keyboardOffset + statusBarHeight - insets.top - 28 : -keyboardOffset }] + transform: [{ translateX: -200 }, { translateY: keyboardOffset > 0 ? -keyboardOffset + statusBarHeight : -keyboardOffset }] }} > { @@ -98,7 +98,7 @@ const LoginScreen = () => { className="absolute left-1/2 z-[1000] -translate-x-[39.5px] -translate-y-[4px]" style={{ top: containerHeight > 0 ? windowHeight - containerHeight - 1 + statusBarHeight - insets.top - 30 : 0, - transform: [{ translateX: -39.5 }, { translateY: keyboardOffset > 0 ? -4 - keyboardOffset + statusBarHeight - insets.top - 30 : -4 - keyboardOffset }] + transform: [{ translateX: -39.5 }, { translateY: keyboardOffset > 0 ? -4 - keyboardOffset + statusBarHeight : -4 - keyboardOffset }] }} > diff --git a/assets/images/png/icon/ip.png b/assets/images/png/icon/ip.png index 2355ed91f8ae7b0499d7710c7b646d1f7c301c02..04e72391c39b157bf8de1436690be411a2cca199 100644 GIT binary patch literal 22534 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 z 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 OH@s9-S3t^{ef}R-I=b=z