基本的なタッチイベント
基本的なタッチイベントの取得、検知には
android.viewパッケージの
Viewクラスの
OnTouchListenerインターフェース
を使う
OnTouchListenerを実装したリスナーを
ビューに適用すると
そのビューのタッチイベントを取得できる
タッチイベントのハンドラとして
OnTouchListenerインターフェースには
onTouch()
が用意されている
onTouch()の
第1引数に、タッチされたビューオブジェクト
第2引数に、イベント情報を持つ MotionEvent
が引き渡される
このMotionEventには
タッチされた座標
タッチイベントの種類
などの情報が含まれている
MotionEventの
getActionMasking()
で
タッチイベントの種類を数値で取得できる
取得した数値は
MotionEventのイベント種別用定数により
どのようなタッチイベントが発生したか
判定できる
これを使えば、switchによる
条件分岐もできる
MotionEventの定数の代表的なものとして
ACTION_MOVE
ドラッグしたときのイベント判定
ACTION_CANCEL
タッチイベントをキャンセルしたときの
イベント判定
ACTION_OUTSIDE
タッチイベント対象以外をタッチしたときのイベント判定
getActionMasked()は
タッチイベントの種類を数値で取得したけど
これ以外にも
MotionEventのメソッドは存在する
以下はその一部
getX()
タッチされたX座標
getY()
タッチされたY座標
getDownTime()
タッチされていたミリ秒単位の時間
getEdgeFlags()
対象のビューの端をタッチしたかを判定
getPressure()
タッチされた圧力
getSize()
タッチされている範囲
画面のタッチイベントの取得は
Activityの
onTouchEvent()
を
override
することでも取得できる
ソースにすると
public boolean onTouchEvent(MotionEvent event){
onTouchEvent()の引数には
MotionEventが渡されるので
タッチイベントの種類、座標などが同様に取得できる
実は
onTouchEvent()は
Viewクラスにも定義されているので
Viewクラスを継承したビュークラスで
overrideして
そのビューのタッチイベントを取得するこもできる
public class TouchScreen extends View{
public boolean onTouchEvent(MotionEvent event){