🚀

Jetpack Composeでマルチタップを検知する

2022/01/15に公開

Jetpack Composeでタッチイベントを制御する際にマルチタップを検知する方法がわからなかったので調査しました。

解決策

PointerEventchangesというプロパティがあります。
changesList型になっておりタッチしている指の数だけPointerInputChangeが追加されるようになっているため、
下記のように、このプロパティのサイズを確認すればマルチタップしているかどうかが判定できます。

if (event.changes.size == 2) {
    // 指2本でタップしている場合に行いたい処理
}

補足

公式ドキュメントからはこの使い方が正しいかどうかはわかりませんでした。
が、Jetpack ComposeのAwaitPointerEventScope.awaitFirstDown()を見ると最初のDownイベントを検知するためにevent.changes[0]を確認しているのでそこまで的外れではないのかなぁと思っています。

GitHubで編集を提案

Discussion