2014-01-10 10 views
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); 
} 

답변