【Kotlin/Android】MotionEventの種類!タップイベントや座標の取得

この記事からわかること

  • Android Studio/Kotlinタップイベント取得する方法
  • MotionEvent使い方

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

MotionEventの種類

公式リファレンス:MotionEvent

Kotlinではタップイベント型MotionEventとして定義されています。ユーザーが画面をタップした際にはACTION_DOWNイベントが発火され、タップされたX/Y座標やタップの圧力、サイズ、方向などの情報を含むイベントを配信します。

タップされた際のMotionEventには一意のポインターIDが振られ、タップイベントが終了するまで保持され、マルチタップスクリーンの場合は複数のタップイベントをポインターIDで識別して同時に操作することが可能になっています。

MotionEventの種類

定数 アクション
ACTION_DOWN タップされた時
ACTION_MOVE タップしたまま移動した時
ACTION_UP タップした指を離した時
ACTION_CANCEL タップがキャンセルされた時
ACTION_OUTSIDE 画面要素の範囲外で動きが発生した時

タップイベントを取得する

ActivityなどではonTouchEventメソッドをオーバーライドすることで画面のタップイベントを取得することが可能です。

class MainActivity : AppCompatActivity() {

    private var DEBUG_TAG = "----"

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    override fun onTouchEvent(event: MotionEvent): Boolean {
        return when (event.action) {
            MotionEvent.ACTION_DOWN -> {
                Log.d(DEBUG_TAG, "タップした")
                true
            }
            MotionEvent.ACTION_MOVE -> {
                Log.d(DEBUG_TAG, "タップしたまま動かした")
                true
            }
            MotionEvent.ACTION_UP -> {
                Log.d(DEBUG_TAG, "タップした指を離した")
                true
            }
            MotionEvent.ACTION_CANCEL -> {
                Log.d(DEBUG_TAG, "タップがキャンセルされた")
                true
            }
            MotionEvent.ACTION_OUTSIDE -> {
                Log.d(DEBUG_TAG, "画面要素の範囲外で動きが発生した")
                true
            }
            else -> super.onTouchEvent(event)
        }
    }
}

公式リファレンス:Activity または View のタップイベントをキャプチャする

MotionEvent型から以下のようにアクション定数やX/Y座標、ポインターIDなどを取得することが可能です。

Log.d(DEBUG_TAG,  event.action.toString())
Log.d(DEBUG_TAG,  event.x.toString())
Log.d(DEBUG_TAG,  event.y.toString())
Log.d(DEBUG_TAG,  event.getPointerId(0).toString())

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index