1
다음 코드를 사용하여 확대/축소 기능을 구현했지만 오른쪽 아래로 이미지를 확대 한 후에 제한적으로 줌을 제한하여 확대 제한 기능을 사용했습니다. 크기 당신은 ImageView
에 확대 핀치 줌에 대해 다음과 Github에서 프로젝트의에서 기준을 취할 수Android : 확대 된 이미지가 핀치 줌에서 아래쪽으로 이동
else if (mode == ZOOM)
{
// pinch zooming
float[] f = new float[9];
if (newDist > 10f) {
matrix.set(savedMatrix);
float tScale = newDist/oldDist;
matrix.postScale(tScale, tScale, mid.x, mid.y);
}
matrix.getValues(f);
float scaleX = f[Matrix.MSCALE_X];
float scaleY = f[Matrix.MSCALE_Y];
if(scaleX <= 0.7f)
matrix.postScale((0.7f)/scaleX, (0.7f)/scaleY, mid.x, mid.y);
else if(scaleX >= 2.5f)
matrix.postScale((2.5f)/scaleX, (2.5f)/scaleY, mid.x, mid.y);
limitDrag(matrix);
View view1 = mCropCircle;
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) view1.getLayoutParams();
layoutParams.leftMargin = (int) ((minCircleX +(maxDragX/2))-100);
layoutParams.topMargin = (int) ((minCircleY +(maxDragY/2))-100);
view1.setLayoutParams(layoutParams);
}
break;
}
limitZoom(matrix);
view.setImageMatrix(matrix); // display the transformation on screen
return true;
private void limitZoom(Matrix m) {
float[] values = new float[9];
m.getValues(values);
float scaleX = values[Matrix.MSCALE_X];
float scaleY = values[Matrix.MSCALE_Y];
if(scaleX > MAX_ZOOM)
{
scaleX = MAX_ZOOM;
}
else if(scaleX < MIN_ZOOM)
{
scaleX = MIN_ZOOM;
}
if(scaleY > MAX_ZOOM)
{
scaleY = MAX_ZOOM;
}
else if(scaleY < MIN_ZOOM)
{
scaleY = MIN_ZOOM;
}
values[Matrix.MSCALE_X] = scaleX;
values[Matrix.MSCALE_Y] = scaleY;
m.setValues(values);
}