title: How to detect single touch as well as multi-touch in onTouchEvent()
body: <p>I used the following code to detect the single finger touch and double finger touch. The code detects the double finger touch (when <code>count==2</code>). </p>
  
  <p>I need to do some action on single touch also. If I touch the screen with one finger it doesn't go for the else part. What have I done wrong in this code? </p>
  
  <pre><code>@Override
  public boolean onTouchEvent(MotionEvent event) {
      int action = event.getAction() &amp; MotionEvent.ACTION_MASK;
      switch (action) {
          case MotionEvent.ACTION_POINTER_UP: {
              int count = event.getPointerCount();
              Log.v("count &gt;&gt;", count + "");
              if (count == 2) {
                  // some action
              } else {
                  Log.v("count not equal to 2", "not 2");
              }
              break;
          }
      }
      return true;
  }
  </code></pre>
  
  <p>Update: </p>
  
  <p>I used this code inside an <code>Activity</code>. I need to detect single touch, multitouch. </p>
  
  <p>In my activity, I have two images, one on the left and one on the right. If I click the image some process has to do. If I use two fingers, I need to re-size the images, according to the <code>scale-factor</code>. </p>
  
  <p>This is the code that I've used:</p>
  
  <p><strong>Updated:</strong> </p>
  
  <pre><code>package com.pinch.detect;
  
  import java.io.BufferedInputStream;
  import java.io.IOException;
  import java.io.InputStream;
  import java.net.MalformedURLException;
  import java.net.URL;
  import java.net.URLConnection;
  
  import android.app.Activity;
  import android.content.Context;
  import android.content.ContextWrapper;
  import android.graphics.Bitmap;
  import android.graphics.BitmapFactory;
  import android.os.Bundle;
  import android.util.FloatMath;
  import android.util.Log;
  import android.view.Display;
  import android.view.MotionEvent;
  import android.view.ScaleGestureDetector;
  import android.view.View;
  import android.view.ScaleGestureDetector.SimpleOnScaleGestureListener;
  import android.view.View.OnClickListener;
  import android.view.View.OnTouchListener;
  import android.widget.ImageView;
  import android.widget.TextView;
  import android.widget.Toast;
  
  public class PinchDetectorActivity extends Activity {
      TextView textGestureAction;
      ImageView img1, img2;
      static Bitmap bm, bm1;
  
      boolean multiTouch = false;
      Context context;
      float scaleFactor = 0.0f;
      float lastscale;
      int scr_width, scr_height;
      Display display;
      private ScaleGestureDetector scaleGestureDetector;
  
      /** Called when the activity is first created. */
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);
          textGestureAction = (TextView) findViewById(R.id.GestureAction);
          img1 = (ImageView) findViewById(R.id.img_left);
          img2 = (ImageView) findViewById(R.id.img_right);
          display = getWindowManager().getDefaultDisplay();
  
          scr_width = display.getWidth();
          scr_height = display.getHeight();
          Log.v("width &gt;&gt;", Integer.toString(scr_width));
          Log.v("height &gt;&gt;", Integer.toString(scr_height));
  
          bm = BitmapFactory.decodeResource(this.getResources(),
                  R.drawable.fiction1);
          img1.setImageBitmap(bm);
          bm1 = BitmapFactory.decodeResource(this.getResources(),
                  R.drawable.fiction2);
          img2.setImageBitmap(bm1);
          img1.setScaleType(ImageView.ScaleType.FIT_START);
          img2.setScaleType(ImageView.ScaleType.FIT_END);
  
          scaleGestureDetector = new ScaleGestureDetector(this,
                  new MySimpleOnScaleGestureListener());
  
  
  
          img1.setOnTouchListener(new OnTouchListener(){
  
              @Override
              public boolean onTouch(View v, MotionEvent event) {
                  // TODO Auto-generated method stub
                  return false;
              }
  
          });
      }
  
      @Override
      public boolean onTouchEvent(MotionEvent event) {
  
          scaleGestureDetector.onTouchEvent(event);
          int index = event.getActionIndex();
          Log.v("Index value ",index+"");
          int action = event.getAction();
  
          if (index == 1) {
              multiTouch = true;
              System.out.println("mutli1");
          } else if (multiTouch == false) {
              System.out.println("single1");
              img1.setOnClickListener(new OnClickListener() {
  
                  @Override
                  public void onClick(View v) {
                      Log.v("clicked image1","img1&gt;&gt;&gt;");
                  }
              });
              img2.setOnClickListener(new OnClickListener() {
  
                  @Override
                  public void onClick(View v) { // TODO Auto-generated method
                      Log.v("clicked image2","img2&gt;&gt;&gt;");
                  }
              });
          }
  
           else if (action == MotionEvent.ACTION_MOVE &amp;&amp; multiTouch) {
              System.out.println("mutli2");
  
  
              if (scaleFactor &gt; 1) {
  
                  Bitmap resizedbitmap = Bitmap.createScaledBitmap(bm,
                          scr_width / 2, scr_height, true);
                  img1.setImageBitmap(resizedbitmap);
                  Bitmap resizedbitmap1 = Bitmap.createScaledBitmap(bm1,
                          scr_width / 2, scr_height, true);
                  img2.setImageBitmap(resizedbitmap1);
                  Log.v("width &gt;&gt;", Integer.toString(scr_width));
                  Log.v("height &gt;&gt;", Integer.toString(scr_height));
  
              } else if(scaleFactor&lt;1){
  
                  Log.v("width &gt;&gt;", Integer.toString(scr_width));
                  Log.v("height &gt;&gt;", Integer.toString(scr_height));
                  if (scr_width &gt;= 640) {
                      Bitmap resizedbitmap = Bitmap.createScaledBitmap(bm,
                              scr_height + 90, scr_height, true);
  
                      img1.setImageBitmap(resizedbitmap);
  
                      Bitmap resizedbitmap1 = Bitmap.createScaledBitmap(bm1,
                              scr_height + 90, scr_height, true);
  
                      img2.setImageBitmap(resizedbitmap1);
                  } else {
                      Bitmap resizedbitmap = Bitmap.createScaledBitmap(bm,
                              scr_height, scr_height + 30, true);
  
                      img1.setImageBitmap(resizedbitmap);
  
                      Bitmap resizedbitmap1 = Bitmap.createScaledBitmap(bm1,
                              scr_height, scr_height + 30, true);
  
                      img2.setImageBitmap(resizedbitmap1);
                  }
  
              }
  
  
  
          } else if (action == MotionEvent.ACTION_MOVE &amp;&amp; !multiTouch)
          {
              System.out.println("single2");
          }
  
          return super.onTouchEvent(event);
  
      }
  
      public class MySimpleOnScaleGestureListener extends
              SimpleOnScaleGestureListener {
  
          @Override
          public boolean onScale(ScaleGestureDetector detector) {
              // TODO Auto-generated method stub
  
              scaleFactor = detector.getScaleFactor();
  
              Log.v("scaleFactor &gt;&gt;&gt;", scaleFactor + "");
  
              return true;
          }
      }
  
  }
  </code></pre>
  
  <p>and my main.xml is</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:orientation="vertical"
      android:id="@+id/pinchlay" &gt;
  
  
      &lt;ImageView
          android:id="@+id/img_left"
          android:layout_width="320dp"
          android:layout_height="fill_parent"
          /&gt;
  
      &lt;ImageView
          android:id="@+id/img_right"
          android:layout_width="320dp"
          android:layout_height="fill_parent"
          android:layout_alignParentRight="true"
          /&gt;
  
  &lt;/RelativeLayout&gt;
  </code></pre>