android 様々なタッチイベントを取得する
今回は、androidの「様々なタッチイベントを取得する方法」を書きます。
タッチイベントには、「長押し」,「ダブルタップ」,「フリック」,「スクロール」など様々なものがあります。
これらを取得する方法を書いていきます。
使うのは、「GestureDetectorクラス」です。これを使うと、様々なタッチイベントを取得可能になります。
導入方法を書いていきます。
public class MainActivity extends Activity { private GestureDetector gestureDetector; //追加1 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); gestureDetector = new GestureDetector(this, onGestureListener); //追加2 } /*-----追加3-------*/ @Override public boolean onTouchEvent(MotionEvent ev) { gestureDetector.onTouchEvent(ev); return false; } /*-----追加3-------*/ /*-----追加4-------*/ private final SimpleOnGestureListener onGestureListener = new SimpleOnGestureListener() { @Override public void onLongPress(MotionEvent e) { //長押し super.onLongPress(e); } @Override public boolean onDoubleTap(MotionEvent event) { //ダブルタップ return super.onDoubleTap(event); } }; /*-----追加4-------*/ }
これで、導入完了です。
「ダブルタップ」などのイベント判定?しているのは、こちらのコード↓です。(「追加4」の部分です。)
/*-----追加4-------*/ private final SimpleOnGestureListener onGestureListener = new SimpleOnGestureListener() { @Override public void onLongPress(MotionEvent e) { //長押し super.onLongPress(e); } }; /*-----追加4-------*/
「追加4」に取得したいイベントを追加していくことで、様々なタッチイベントを取得できます。
試しに「長押し」,「ダブルタップ」,「フリック」,「スクロール」,「画面から指が離れた」などのタッチイベントを取得するメソッドを書きました↓↓
private final SimpleOnGestureListener onGestureListener = new SimpleOnGestureListener() { @Override public void onLongPress(MotionEvent e) { //長押し super.onLongPress(e); } @Override public boolean onDoubleTap(MotionEvent event) { //ダブルタップ return super.onDoubleTap(event); } public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY) { //フリック Toast.makeText(MainActivity.this, "フリック", Toast.LENGTH_LONG).show(); return false; } public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,float distanceY) { //スクロール Toast.makeText(MainActivity.this, "スクロール", Toast.LENGTH_LONG).show(); return false; } @Override public boolean onSingleTapUp(MotionEvent e) { //画面から指が離れた Toast.makeText(MainActivity.this, "画面から指が離れた",Toast.LENGTH_LONG).show(); return false; } };
こんな感じにしていくと、様々なタッチイベントが取得できます。
どんなタッチイベントが取得できるかは、これらのページに書かれているので、一度見といて損はないです。
GestureDetector.OnGestureListener | Android Developers
複雑なタッチイベントを取得する - Androidプログラマへの道 〜 Moonlight 明日香 〜
これで、終わります。
参考サイト
GestureDetector.OnGestureListener | Android Developers
複雑なタッチイベントを取得する - Androidプログラマへの道 〜 Moonlight 明日香 〜