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

person Community    schedule 10.01.2014    source источник


Ответы (1)


Вы можете взять ссылку из любого из следующих проектов Github для уменьшения масштаба на ImageView.

  1. TouchImageView

  2. PhotoView

  3. Галерея Android Touch

Из вышеперечисленного я пробовал TouchImageView с ViewPager и без него. Итак, вы можете использовать это.

Также вы можете использовать эту ссылку для справки по ViewPager.

Просмотр пейджера + ImageView +Pinch Zoom + Rotation

person Avtar Guleria    schedule 10.01.2014