在捏缩放时拖动时获取缩放图像视图的最后一个点

时间:2012-04-24 07:26:36

标签: android android-imageview

我有一个图像视图,在缩放(捏缩放)后,我必须得到图像的末尾。 即,当我向左或向右拖动图像时,我必须在到达最后一个点时触发事件(之后不能拖动它)。 我已经像这样使用了变焦。

 public boolean onTouch(View v, MotionEvent event) {
  ImageView view = (ImageView) v;

  // Dump touch event to log
  dumpEvent(event);

  // Handle touch events here...
  switch (event.getAction() & 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 > 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");
     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 > 10f) {
           matrix.set(savedMatrix);
           float scale = newDist / oldDist;
           matrix.postScale(scale, scale, mid.x, mid.y);
        }
     }
     break;
  }

  view.setImageMatrix(matrix);
  return true; // indicate event was handled
  }

1 个答案:

答案 0 :(得分:0)

当您最初将图片加载到ImageView记录的左上角或中心(x, y)的参考点时。每次拖动或缩放图像时,都会更新与该参考点相关的更改;即,如果您拖动a轴上的x像素和b轴上的y像素,则新的参考点将位于(x + a, y + b)

检查此link以获取更多详细信息。还有this