Closed10

Spinner を作って学ぶ React Native アニメーション

Takanori IshikawaTakanori Ishikawa

実装方針は以下の通り

  • boarderRadius で円を描き、
  • borderColor, borderTopColor で別々の色を指定して、Spinner の見た目を作る
  • transform: [{ rotate: rotateValue }] で回転アニメーションを追加
Takanori IshikawaTakanori Ishikawa

アニメーションのループには Animated.loop()

    Animated.loop(
      Animated.timing(spinValue, {
        toValue: 360,
        duration,
        easing: Easing.linear,
        useNativeDriver: true,
      })
    ).start();
Takanori IshikawaTakanori Ishikawa

Animated.Value の変換 (transform に渡すのは 180deg のような値) には interpolate メソッドを使う。

  const rotateValue = spinValue.interpolate({
    inputRange: [0, 360],
    outputRange: ['0deg', '360deg'],
  });
Takanori IshikawaTakanori Ishikawa

Android の場合、View を重ねても、メインの色を指定したのと逆側の border に薄っすらとメインの色がついてしまう。OS バージョン依存もありそうだし、やっぱり Android は厳しいかな...。

このスクラップは2021/11/14にクローズされました