未分類

Android イベントの処理

投稿日:

     

ソースコード

実行結果は、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()メソッドで取得します。

ジェスチャーイベント

実行結果は、

  1. GestureEx>
  2. DoubleTapEvent
  3. Down
  4. DoubleTapEvent
  5. DoubleTap
  6. Up
  7. Down
  8. Fling(6,-133)
  9. Fling(1,-22)
  10. Fling(-4,-57)
  11. 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)

以上でキーイベント、タッチイベント、ジェスチャーイベントの解説を終了します。

-未分類

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

サンプルイメージ

はじめてのAndroidアプリ作成

     文字列を描画するプログラムを作り解説します。 ソースコードの追加 ソースコードを追加する手順は次の通りです。今回は、「StringEx」と「StringView」の2つを追加します。 ①プロ …

サンプルイメージ

練習問題(配列)

練習7-1   BirthStone.java 誕生月を入力すると、その月の誕生石を表示するプログラムを、下の空欄を埋めて作成してください。 練習7-2   DispArray1.java 以下のプロ …

サンプルイメージ

配列の応用

配列の要素数を調べるコードを記述します。配列の要素数(ハコの数)は、配列の長さ(大きさ)と呼ばれています。 Javaでは、配列要素に.(ピリオド)をはさんでlengthと記述すると、配列の要素数をあら …

サンプルイメージ

練習問題(配列)解答例

配列を利用すると、同じ種類の多くのデータを扱うことができます。たくさんのデータをまとめ、簡単に管理することができます。今はすべてを理解しようとせずに前に進みましょう。 大切なのは、プログラミングを勉強 …

サンプルイメージ

メソッドの引数

メソッドでさらに柔軟な処理を行うことができます。メソッドを呼び出す際に、 呼び出し元からメソッド内に何か情報(値)を渡し、その値に応じた処理を行う ということができます。メソッドに渡す情報を引数といい …