expoで ぷるんっとしたボタンの実装方法

expoでボタンを実装するとき、やはり動きをつけたくなりますよね。

今回は、ぷるんとしたボタンの実装方法についてまとめていきます。

こんな動きをつけることができます

写真や文字の実装は含みません。動きのみです。

目次(クリックで読みたい部分にジャンプできます)

必要なパッケージのインストール

まず必要なパッケージのインストールをしていきましょう。

expo install react-native-reanimated react-native-gesture-handler

この二つがインストールできたら、最初の準備は終了です。

コードを書いていきましょう。

実際のコード

実際のコードは次のようなものです。

//必要なものをインポートする。

const MatchingButtonContainer = ({value,beforeImage,afterImage}) => {
  const [isColor, setIsColor] = useState(true)
  const scale = useSharedValue(1);

  const toggleImage = () => {
    console.log("Pressed")
  };

  const handlePressIn = () => {
    scale.value = withSpring(0.8, {
      damping: 2,
      stiffness: 80,
      overshootClamping: false,
    });
  };

  const handlePressOut = () => {
    scale.value = withSpring(1, {
      damping: 8,
      stiffness: 800,
      overshootClamping: false,
    });
  };

  const animatedStyle = useAnimatedStyle(() => {
    return {
      transform: [{ scale: scale.value }],
    };
  });

  return (
    <Pressable
      onPress={toggleImage}
      onPressIn={handlePressIn}
      onPressOut={handlePressOut}
    >
      <Animated.View style={animatedStyle}>
        <Text>要素</Text>
        //要素を追加する
      </Animated.View>
    </Pressable>
  );
};

要素を押したとき、離した時にそれぞれ関数を実行することにより、変化を表現しています。

押したとき= onPressIn = {handlePressIn}

離した時 = onPressOut={handlePressOut}

動きを変えたい時

動きを変えるには、次のコードの数字部分を調整します。

scale.value = withSpring(1, {
      damping: 8,
      stiffness: 800,
      overshootClamping: false,
    });

1は大きさ。

今回のコードは、押した時に0.8倍になり、離したら1倍(元に戻る)ように設定しています。

dampingは振動の強度

stiffness は硬さを変えることができます(スーパーボールと鉄球の違いのようなニュアンス)

実際にコードをいじってみた方が早いので、ぜひ自分の好きな動きをつけてみてください!

まとめ

今回は、expoでぷるんとした動きをつけるためのコードを紹介しました。

ボタンを作ったりする時には、 特徴的な動きをつけるだけで、完成度が上がります。

ぜひ作ってみてくださいね!

(Visited 13 times, 1 visits today)