💙
ExpoでLottieを使う
🤔やってみたいこと
LottieFilesというサービスを使用してアニメーションをExpoに導入したい。以前やって失敗したが、導入の手順は公式に書いてあった😅
- 開発環境: Mac mini
- OS: iOS & Android
- Windserf Editor
🚀やってみたこと
こちらのサイトから素材を入手しましょう。ワークスペースなら場所に保存する必要があるようだ。
プロジェクトを作成する。
bunx create-expo-app lottie-animation -t expo-template-blank-typescript
パッケージを追加する。
bun add lottie-react-native
ワークスペースからダウンロードしたjsonファイルを名前が長いので、cat.json
に編集してassets/
ディレクトリに配置する。
こちらがサンプルコードですね。公式コードを修正して使用。
import { useRef, useEffect } from 'react';
import { Button, StyleSheet, View } from 'react-native';
import LottieView from 'lottie-react-native';
export default function App() {
const animation = useRef<LottieView>(null);
useEffect(() => {
// You can control the ref programmatically, rather than using autoPlay
// animation.current?.play();
}, []);
return (
<View style={styles.animationContainer}>
<LottieView
autoPlay
ref={animation}
style={{
width: 200,
height: 200,
backgroundColor: '#eee',
}}
// Find more Lottie files at https://lottiefiles.com/featured
source={require('./assets/cat.json')}
/>
<View style={styles.buttonContainer}>
<Button
title="Restart Animation"
onPress={() => {
animation.current?.reset();
animation.current?.play();
}}
/>
</View>
</View>
);
}
const styles = StyleSheet.create({
animationContainer: {
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
flex: 1,
},
buttonContainer: {
paddingTop: 20,
},
});
試してみたら動いたようだ。
🙂最後に
ReactNativeというより今は、Expo
と呼んだ方がいいのかな。別物な気がする。iOSとAndroidの設定が割と簡単にできたので両方のOSに対応したモバイルアプリを作るならこちら使ったほうがいいかもしれません?
Androidだとxmlしか対応していない?
Discussion