
ソースコード
実行結果は、KeyCode>24というように押されたキーコードが表示されます。
KeyExクラスは、プログラムの本体となるクラスです。

KeyViewクラスは、ビューとなるクラスです。

①フォーカス (17行目)端末のキーを押したとき、キーイベントが通知されるのは、フォーカスを持っているビューのみです。
フォーカスの有効には、ViewクラスのsetFocusable()メソッドとsetFocusableInTouchMode()メソッドが存在するので、両方にtrueを指定します。
setFocusable()メソッドは、方向キーやプログラムでフォーカスを移すことができるのかを指定します。
setFocusableInTouchMode()メソッドは、タッチモードの時にフォーカスを移すことができるのかを指定します。

②キーアップイベントとキーダウンイベントの処理
(39行目、47行目)ViewクラスのonKeyDown()メソッドをオーバーライドすることによってキーダウンイベントを取得でき、onKeyUp()メソッドをオーバーライドすることによってキーアップイベントを取得可能です。
キーが押されたとき、離されたときに呼ばれるメソッドです。
③画面の再描画 (50行目)画面の再描画はViewクラスのinvalidate()メソッドを使います。内部にはonDraw()メソッドが呼ばれるようになっています。
タッチイベントの処理
次にタッチした位置を画面に表示するプログラムを見ていきましょう。
実行結果は、TouchEx>163,716 572,1197というタッチした画面の座標が表示されます。
TouchExクラスは、プログラムの本体となるクラスです。

TouchViewクラスは、ビューとなるクラスです。


ソースコードの解説
①タッチイベントの処理(12行目)ViewクラスのonTouchEvent()メソッドをオーバーライドすることによって、タッチイベントを取得することができます。
タッチダウン、タッチアップ、ムーブするたびに、呼ばれるメソッドです。
②アクション種別とタッチ数の取得(37行目)タッチイベントのアクション種別は、MotionEventクラスのgetAction()メソッドで取得します。
1本指でタッチした時は「MotionEvent.ACTION_DOWN」、追加でもう1本の指でタッチした時は「MotionEvent.ACTION_POINTER_DOWN」が渡されます。タッチを離したとき、ほかの指がまだあるときは、「MotionEvent.ACTION_POINTER_UP」、残っていないときは、「MotionEvent.ACTION_UP」が渡されます。
画面のタッチ数は、MotionEventクラスのgetPointerCount()メソッドで取得可能です。
③アクションインデックスとポインタIDの取得(40行目)タッチイベント発生時、どの指が発生させたのかを調べる必要があります。
ポインタIDを取得するには、MotionEventクラスのgetActionIndex()メソッドで取得します、MotionEventクラスのgetPointerId()メソッドでポインタIDに変換します。
④タッチ位置の取得(43行目) タッチ位置のXY座標は、MotionEventクラスのgetX()メソッドとgetY()メソッドで取得します。

ジェスチャーイベント
実行結果は、
- GestureEx>
- DoubleTapEvent
- Down
- DoubleTapEvent
- DoubleTap
- Up
- Down
- Fling(6,-133)
- Fling(1,-22)
- Fling(-4,-57)
- Fling(8,93)
というように表示されます。
GestureExクラスは、プログラムの本体となるクラスです。

GestureViewクラスは、ビューとなるクラスです。

①ジェスチャーディテクターの生成(25行目)ジェスチャーディテクターを生成するには、GestureDetectorクラスを使います。
コンストラクタでは、引数としてコンテキストとリスナーとなるオブジェクトを渡します。

②ジェスチャーディテクターの設定(48行目)タッチイベントの通知先となるonTouchEvent()メソッド内に設置します。
GestureDetectorクラスのonTouchEvent()メソッドに引数としてタッチイベントを渡します。


③ジェスチャーイベント発生時の処理を行うインタフェイスの実装(59,64,70,76,81,88,95,101行目)
ジェスチャーイベント発生時のGestureDetector.OnGestureListenerインターフェースとGestureDetector.OnDoubleTapListenerインターフェイスを実装します。
GestureDetector.OnGestureListenerインタフェイスには、以下の6つのメソッドが定義されています。
- ダウン onDown(MotionEvent)
- プレス onShowPress(MotionEvent)
- 長押し onLongPress(MotionEvent)
- アップ onSingleTapUp(MotionEvent)
- フリック onFling(MotionEvent)
- スクロール onScroll(MotionEvent)
GestureDetector.OnDoubleTapListenerインタフェイスには、以下の3つのメソッドが定義されています。
- シングルタップ onSingleTapConfirmed(MotionEvent)
- ダブルタップ onDoubleTap(MotionEvent)
- ダブルタップイベント onDoubleTapEvent(MotionEvent)
以上でキーイベント、タッチイベント、ジェスチャーイベントの解説を終了します。