Three.jsを使って、作ってみた

プログラミング関連の事を色々書いています(^^) 週末はレストランやコンビニのお菓子のことを書いています。

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 明日香 〜