【问题标题】:Get the last point of zoomed image view when drag in pinch zoom在捏缩放中拖动时获取缩放图像视图的最后一点
【发布时间】:2012-04-30 21:08:22
【问题描述】:

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

 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
  }

【问题讨论】:

    标签: android android-imageview


    【解决方案1】:

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

    查看link 了解更多详情。还有this。

    【讨论】:

      猜你喜欢
      • 2014-05-13
      • 1970-01-01
      • 2012-05-24
      • 1970-01-01
      • 2014-01-28
      • 2013-05-29
      • 2012-03-07
      • 1970-01-01
      • 2012-12-18
      相关资源
      最近更新 更多