diff --git a/apps/expo/src/app/(tabs)/search/Searchbar.tsx b/apps/expo/src/app/(tabs)/search/Searchbar.tsx index c26a4e2..0125e92 100644 --- a/apps/expo/src/app/(tabs)/search/Searchbar.tsx +++ b/apps/expo/src/app/(tabs)/search/Searchbar.tsx @@ -32,7 +32,7 @@ export default function Searchbar({ }; return ( - + diff --git a/apps/expo/src/app/(tabs)/search/_layout.tsx b/apps/expo/src/app/(tabs)/search/_layout.tsx index 656733a..e7c46f3 100644 --- a/apps/expo/src/app/(tabs)/search/_layout.tsx +++ b/apps/expo/src/app/(tabs)/search/_layout.tsx @@ -1,5 +1,5 @@ -import React, { useState } from "react"; -import { ScrollView, View } from "react-native"; +import React, { useRef, useState } from "react"; +import { Animated, ScrollView, View } from "react-native"; import { getMediaPoster, searchTitle } from "@movie-web/tmdb"; @@ -11,6 +11,7 @@ import Searchbar from "./Searchbar"; export default function SearchScreen() { const [searchResults, setSearchResults] = useState([]); + const fadeAnim = useRef(new Animated.Value(1)).current; const handleSearchChange = async (query: string) => { if (query.length > 0) { @@ -21,28 +22,58 @@ export default function SearchScreen() { } }; + const handleScrollBegin = () => { + Animated.timing(fadeAnim, { + toValue: 0, + duration: 300, + useNativeDriver: true, + }).start(); + }; + + const handleScrollEnd = () => { + Animated.timing(fadeAnim, { + toValue: 1, + duration: 300, + useNativeDriver: true, + }).start(); + }; + return ( - - - Search + + + + Search + + } + > + + {searchResults.map((item, index) => ( + + + + ))} - } + + + - - {searchResults.map((item, index) => ( - - - - ))} - - - + + ); }