Android:Zoomed Image在Pinch Zoom中向下移动

时间:2014-01-10 05:09:34

标签: android zoom pinchzoom pinch

我正在使用以下代码进行缩放,我实现了缩放功能但是在缩放后图像向右移动,我还使用了极限缩放功能来限制缩放,在获得有限大小后向下移动代码是, ,

 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);
}

1 个答案:

答案 0 :(得分:0)

您可以从以下任何Github项目中获取参考,以便在ImageView上缩小缩放。

  1. TouchImageView

  2. PhotoView

  3. Android Touch Gallery

  4. 除此之外,我在使用和不使用ViewPager的情况下尝试了TouchImageView。所以,你可以使用它。

    此外,您可以将此链接用于ViewPager参考。

    View Pager + ImageView +Pinch Zoom + Rotation