Обложка альбома с виниловой пластинкой внутри. При нажатии на кнопку воспроизведения пластинка на пружине выезжает из конверта и начинает вращаться, а под названием заполняется полоса прогресса. Бороздки пластинки рисуются шейдером Skia.
На паузе пластинка плавно замедляется и возвращается в конверт. Кнопки «назад» и «вперёд» перематывают трек и коротко подкручивают пластинку в нужную сторону. Звук играет через expo-video на iOS и Android и через Audio в вебе. При «Уменьшении движения» пластинка выезжает без пружины и не вращается.
Поставьте зависимости:
npm install @shopify/react-native-skia expo-asset expo-linear-gradient expo-video react-native-reanimated react-native-svgpnpm add @shopify/react-native-skia expo-asset expo-linear-gradient expo-video react-native-reanimated react-native-svgyarn add @shopify/react-native-skia expo-asset expo-linear-gradient expo-video react-native-reanimated react-native-svgbun add @shopify/react-native-skia expo-asset expo-linear-gradient expo-video react-native-reanimated react-native-svgСкопируйте эти файлы в src/shared/components/molecules/album-cover/:
Код доступен по подпискеPro
Исходник «Обложка альбома» открывается с подпиской Pro. Уже оформили? Войдите в аккаунт.
Проверьте алиас путей. Импорты в коде выше записаны так, как их пишет astra-rn add: @/shared/components, @/shared/utils и @/shared/hooks. Нужен алиас "@/*": ["./src/*"] в tsconfig.json — или поправьте импорты под свои пути.
Код доступен по подпискеPro
Исходник «Обложка альбома» открывается с подпиской Pro. Уже оформили? Войдите в аккаунт.
audioSrc принимает адрес, require(...) или объект { uri }.
coverSrcТип string
titleТип string
subtitle?Тип string
audioSrc?Тип AlbumAudioSource
size?Тип number
theme?Тип "light" | "dark"
accentColor?Тип string
spinSpeed?Тип number
centered?Тип boolean
style?Тип StyleProp<ViewStyle>