0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

🔰 [Kotlin] 基礎 androidstudioタッチイベント 勉強用メモ

Last updated at Posted at 2021-06-07

参考書「作って楽しむプログラミング Androidアプリ超入門」の勉強をまとめていきます。

####環境
java: 1.8.0_281
kotlin:1.5.10

今回は画面のタッチ処理についてまとめていきます

##タッチイベントの主な種類

操作名 概要
タップ 画面を1度叩く
ダブルクリック 画面を2回続けて叩く
フリック 画面をスライドさせる
ピンチイン 2本の指でつまむようにする
ピンチアウト 2本の指で広げるようにする

今回はタッチ処理についてなので、onTouchEventメソッドを使用する

##onTouchEventメソッドのイベント定数

イベント定数 イベントのタイミング
ACTION_DOWN 画面がタッチされた時
ACTION_MOVE タッチしたまま移動した時
ACTION_UP タッチが離された時
ACTION_CANCEL 何らかの要因でタッチがキャンセルされた時

if文を使用した例

sample.kt
override fun onTouchEvent(event: MotionEvent?): Boolean {
        //イベントを限定,actionプロパティの値で変更可能
        if (event?.action == MotionEvent.ACTION_DOWN){
            if (omikujiNumber < 0 && omikujiBox.finish) {
                drawResult()
            }
        }
        return super.onTouchEvent(event) //※
    }

onTouchEventメソッドをAndroid Studioから作成した場合は、明示的に元のonTouchEventメソッドを実行する必要がある。
→スーパークラスであるActivityクラスの同メソッドをオーバーライドして使用した場合、他のタッチイベントが呼び出されなくなるだけでなく、他の処理が必要となってくる為。

whenを使用した例

sample.kt
    class MainActivity : Activity() {
        ...
        // This example shows an Activity, but you would use the same approach if
        // you were subclassing a View.
        override fun onTouchEvent(event: MotionEvent): Boolean {

            val action: Int = MotionEventCompat.getActionMasked(event)

            return when (action) {
                MotionEvent.ACTION_DOWN -> {
                    Log.d(DEBUG_TAG, "Action was DOWN")
                    true
                }
                MotionEvent.ACTION_MOVE -> {
                    Log.d(DEBUG_TAG, "Action was MOVE")
                    true
                }
                MotionEvent.ACTION_UP -> {
                    Log.d(DEBUG_TAG, "Action was UP")
                    true
                }
                MotionEvent.ACTION_CANCEL -> {
                    Log.d(DEBUG_TAG, "Action was CANCEL")
                    true
                }
                MotionEvent.ACTION_OUTSIDE -> {
                    Log.d(DEBUG_TAG, "Movement occurred outside bounds of current screen element")
                    true
                }
                else -> super.onTouchEvent(event)
            }
        }
    }
    

参考:https://developer.android.com/training/gestures/detector?hl=ja

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?