Closed10
Spinner を作って学ぶ React Native アニメーション
React Native の View と StyleSheet を使って Spinner (ローディングアニメーション) を作って、React Native のアニメーションに親しむ。
コードはここにある
実装方針は以下の通り
-
boarderRadius
で円を描き、 -
borderColor
,borderTopColor
で別々の色を指定して、Spinner の見た目を作る -
transform: [{ rotate: rotateValue }]
で回転アニメーションを追加
ただし、React Native のバグにより、Android の場合、borderRadius
と borderXXXColor
を組み合わせると一部の色のみを変更できないので、背景を別の View で描画する
アニメーションのループには Animated.loop()
Animated.loop(
Animated.timing(spinValue, {
toValue: 360,
duration,
easing: Easing.linear,
useNativeDriver: true,
})
).start();
Animated.Value の変換 (transform に渡すのは 180deg
のような値) には interpolate
メソッドを使う。
const rotateValue = spinValue.interpolate({
inputRange: [0, 360],
outputRange: ['0deg', '360deg'],
});
ActivityIndicator のソースコード
React Native Web のソースコード
アニメーションを一時停止して再開する場合は setValue(n)
で初期化しないとうまく動かない。
React Native では number
も色指定に使えるのか。0xff00ff00
みたいな 16 進数表記が使える。
Android の場合、View を重ねても、メインの色を指定したのと逆側の border に薄っすらとメインの色がついてしまう。OS バージョン依存もありそうだし、やっぱり Android は厳しいかな...。
このスクラップは2021/11/14にクローズされました