Activityを継承 (extends)していれば、簡単に使えます。
方法
@Override
public boolean onTouchEvent(MotionEvent event) {
}
を作成すれば、
画面をタッチされる度に作成したメソッド(onTouchEvent)が呼ばれます。
■サンプルソース
package com.example.touch; import android.os.Bundle; import android.app.Activity; import android.view.MotionEvent; import android.widget.LinearLayout; import android.widget.Toast; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout oLayout = new LinearLayout(getApplicationContext()); setContentView(oLayout); } @Override public boolean onTouchEvent(MotionEvent event) { String sEvent = ""; switch (event.getAction()) { case MotionEvent.ACTION_DOWN: sEvent = "タッチ"; break; case MotionEvent.ACTION_UP: sEvent = "離した"; break; case MotionEvent.ACTION_MOVE: sEvent = "動かしている"; break; } String x = String.valueOf(event.getX()); String y = String.valueOf(event.getY()); String sTime =String.valueOf( event.getDownTime() ); Toast.makeText(getApplicationContext(), sEvent + " 時間:" + sTime + "横:" + x + "縦:" + y, Toast.LENGTH_SHORT).show(); return super.onTouchEvent(event); } }
■実行結果
座標の数字の単位はpxです。何px目を押されたかを返されます。
画面の幅もpxで取得できるので、相対的にどこを押されたかの計算も簡単にできます。
MotionEvent.getActionの
リアクション判定は他にもたくさんあるのですが、
よく利用するのが上の3つです。
今回は
MotionEvent.getX()
.getY()
.getAction()
.getDownTime()
を使いましたが
getPressure()
をつかうと、どれくらいの強さでタッチされたかが、
返ってくるらしいっすよ!!
詳しくはこちらで
http://developer.android.com/reference/android/view/MotionEvent.html
0 件のコメント:
コメントを投稿