Android Multi toque zoom

Estoy tratando de implementar el zoom multitáctil de acercar y alejar funcionalidad a mi aplicación. Mi aplicación es ver una presentación de diapositivas de imágenes. He intentado implementar funcionalidades de zoom táctil desde el enlace siguiente http://www.zdnet.com/blog/burnette/how-to-use-multi-touch-in-android-2-part-6-implementing-the- pinch-zoom-gesture / 1847 , es realmente una buena, pero tengo que controlar el zoom y alejar . es decir, quiero implementar un límite máximo y mínimo para el zoom . ¿Puede alguien ayudarme a resolver este problema. También gracias de antemano a mirar en este tema.

En mi búsqueda y codificación de la imagen con zoom me encontré con un widget que es exactamente copia de la función de zoom de la aplicación Galería es fácil de usar. A pesar de que he ideado mi propio zoom Iamgeview, pero más tarde me parece que no es una buena cosa para volver a inventar la rueda de abajo es el enlace

Cortesía: Alessandro Crugnola

http://blog.sephiroth.it/2011/04/04/imageview-zoom-and-scroll/

Claro, necesitará cambiar esta parte:

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

a

 else if (mode == ZOOM) { float newDist = spacing(event); Log.d(TAG, "newDist=" + newDist); if (newDist > 10f) { matrix.set(savedMatrix); float scale = newDist / oldDist; // check scale is not too big or two small float newScale = scale*mCurrentScale; if (newScale > 10) { return false; } else if (newScale < 0.1) { return false; } mCurrentScale = newScale; matrix.postScale(scale, scale, mid.x, mid.y); } } 

y también agregar una variable mCurrentScale a su actividad para recordar la escala actual de la siguiente manera:

 public class Touch extends Activity implements OnTouchListener { // These matrices will be used to move and zoom image Matrix matrix = new Matrix(); Matrix savedMatrix = new Matrix(); // this is the new variable added float mCurrentScale = 1.0f; 

Esto arregló el problema para mí. Después de que la imagen se amplía / desciende hasta el límite, simplemente deja de ir más allá. También es suave y no hay retrasos. 0.7 y 2.0 son los niveles de zoom mínimo y máximo.

 .... } else if (mode == ZOOM) { float[] f = new float[9]; float newDist = spacing(event); if (newDist > 10f) { matrix.set(savedMatrix); float tScale = newDist / dist; 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); } .... 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.