2012-04-24 4 views
0

画像ビューを持っています。ズーム(ピンチズーム)後に画像の端を取得する必要があります。 つまり、画像を左右にドラッグすると、最後のポイントに達した時点でイベントを発生させる必要があります(その後はドラッグできません)。 このようにズームを使用しました。あなたは、もともと、ImageViewレコードに左上隅または中央(x, y)のいずれかを基準点を、あなたのイメージをロードピンチズームでドラッグするとズームした画像ビューの最後のポイントを取得します

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 
    } 

答えて

0

。ドラッグするかズームするたびに、その参照点に関する画像の更新が更新されます。つまり、x軸にaピクセル、y軸にbピクセルの画像をドラッグすると、新しい参照点は(x + a, y + b)になります。

詳しくはlinkをご確認ください。また、thisも同様です。

関連する問題