title: can't set image zoom level and fix the image view
body: <p>I am new In Android.I have done zooming in image view.Now facing some problem. 
   1)can't set the zoom level. 
   2)Also image is moving. i wanna stop that
  here is my code:</p>
  
  <pre><code>@Override
  protected void onCreate(Bundle savedInstanceState) {
  
      super.onCreate(savedInstanceState);
      setContentView(R.layout.show_image);
      imageView1 = (ImageView) findViewById(R.id.showImageView1);
      imageView2 = (ImageView) findViewById(R.id.Food_pic2);
      // get image path from list View
      Intent intent = getIntent();
      int path1 = intent.getIntExtra("image1", 0);
      int path2 = intent.getIntExtra("image2", 0);
      imageView1.setImageResource(path1);
      imageView1.setOnTouchListener(this);
  
  }
  </code></pre>
  
  <p>here is my Touch listener</p>
  
  <pre><code>    @Override
  public boolean onTouch(View v, MotionEvent event) {
  
      ImageView view = (ImageView) v;
      dumpEvent(event);
  
      // Handle touch events here...
      switch (event.getAction() &amp; MotionEvent.ACTION_MASK) {
      case MotionEvent.ACTION_DOWN:
          savedMatrix.set(matrix);
          start.set(event.getX(), event.getY());
          Log.d(TAG, "mode=DRAG");
          mode = DRAG;
          break;
      case MotionEvent.ACTION_POINTER_DOWN:
          oldDist = spacing(event);
          Log.d(TAG, "oldDist=" + oldDist);
          if (oldDist &gt; 10f) {
              savedMatrix.set(matrix);
              midPoint(mid, event);
              mode = ZOOM;
              Log.d(TAG, "mode=ZOOM");
          }
          break;
      case MotionEvent.ACTION_UP:
      case MotionEvent.ACTION_POINTER_UP:
          mode = NONE;
          Log.d(TAG, "mode=NONE");
          savedMatrix.set(matrix);
  
          break;
      case MotionEvent.ACTION_MOVE:
  
          if (mode == DRAG) {
  
              matrix.set(savedMatrix);
              matrix.postTranslate(event.getX() - start.x, event.getY()
                      - start.y);
          } else if (mode == ZOOM) {
              float newDist = spacing(event);
              Log.d(TAG, "newDist=" + newDist);
              if (newDist &gt; 10f) {
                  matrix.set(savedMatrix);
                  float scale = newDist / oldDist;
                  matrix.postScale(scale, scale, mid.x, mid.y);
              }
          }
          break;
      }
  
      view.setImageMatrix(matrix);
  
      return true;
  
  }
  
  /** Show an event in the LogCat view, for debugging */
  private void dumpEvent(MotionEvent event) {
      String names[] = { "DOWN", "UP", "MOVE", "CANCEL", "OUTSIDE",
              "POINTER_DOWN", "POINTER_UP", "7?", "8?", "9?" };
      StringBuilder sb = new StringBuilder();
      int action = event.getAction();
      int actionCode = action &amp; MotionEvent.ACTION_MASK;
      sb.append("event ACTION_").append(names[actionCode]);
      if (actionCode == MotionEvent.ACTION_POINTER_DOWN
              || actionCode == MotionEvent.ACTION_POINTER_UP) {
          sb.append("(pid ").append(
                  action &gt;&gt; MotionEvent.ACTION_POINTER_ID_SHIFT);
          sb.append(")");
      }
      sb.append("[");
      for (int i = 0; i &lt; event.getPointerCount(); i++) {
          sb.append("#").append(i);
          sb.append("(pid ").append(event.getPointerId(i));
          sb.append(")=").append((int) event.getX(i));
          sb.append(",").append((int) event.getY(i));
          if (i + 1 &lt; event.getPointerCount())
              sb.append(";");
      }
      sb.append("]");
      Log.d(TAG, sb.toString());
  }
  
  /** Determine the space between the first two fingers */
  private float spacing(MotionEvent event) {
  
      float x = event.getX(0) - event.getX(1);
      float y = event.getY(0) - event.getY(1);
      return FloatMath.sqrt(x * x + y * y);
  }
  
  /** Calculate the mid point of the first two fingers */
  private void midPoint(PointF point, MotionEvent event) {
      float x = event.getX(0) + event.getX(1);
      float y = event.getY(0) + event.getY(1);
      point.set(x / 2, y / 2);
  }
  </code></pre>
  
  <p>I searched and see maximum related to this. but i can't solve my problem.</p>
  
  <p><strong>How and where i write code for setting zoom level and stop moving my image view.</strong></p>
  
  <p>Thanks in advance.</p>