Lienzo Zoom va al punto (0,0)

Tengo un problema en el zoom del lienzo. He hecho una vista personalizada en la que estoy dibujando diagramas de relación ahora cuando alejo el lienzo en va a la posición (0,0). He visto diferentes hilos y preguntas pero no pude encontrar la respuesta apropiada.

Lo que estoy haciendo en el método onDraw es.

canvas.scale(mScaleFactor, mScaleFactor); 

También he visto el método canvas.scale (x, y, px, py) pero no sé cómo obtener los puntos de pivote de xyy.

 public boolean onScale(ScaleGestureDetector detector) { mScaleFactor *= detector.getScaleFactor(); // Don't let the object get too small or too large. mScaleFactor = Math.max(0.4f, Math.min(mScaleFactor, 5.0f)); if(mScaleFactor>=1) mScaleFactor=1f; invalidate(); return true; 

}

Los puntos de pivote son básicamente el punto que su lienzo será transformado alrededor, por lo que la escala con un pivote de 0,0 hace que encoger hacia ese punto. Utilizando el siguiente método puede cambiar el punto de pivote a donde lo desee:

 canvas.scale(x, y, px, py); 

Ahora para las cosas nuevas: Si quieres que tu lienzo sea escalado hacia su centro, solo tendrás que saber el punto en medio de tu lienzo:

 float cX = canvas.getWidth()/2.0f; //Width/2 gives the horizontal centre float cY = canvas.getHeight()/2.0f; //Height/2 gives the vertical centre 

Y luego se puede escalar con esas coordenadas:

 canvas.scale(x, y, cX, cY); 

Eche un vistazo a estas dos respuestas, que describen el problema y sus soluciones muy bien.

Android Bitmap / Desplazamiento de lienzos después de la escala

Escala de imagen de ImageView mientras mantiene el punto central en el mismo lugar

  • Cómo capturar el final de una animación Zoom In / Out de un MapController?
  • Mantenga el mapa centrado, independientemente de dónde pinche el zoom en android
  • Obtener el ancho interno de la ventana y la altura del androide integrado en el navegador web en todos los niveles de zoom
  • Lona de Android, múltiples rutas con diferentes cantidades de zoom
  • Cómo agrandar el elemento central en un listview - android?
  • Rendimiento deficiente de la animación de zoom personalizado de Android
  • ¿Cómo obtener el valor de zoom de la matriz arbitraria?
  • Ampliar la animación
  • Establecer el nivel de zoom mínimo para MapView
  • ¿Existe una biblioteca de terceros para Android Pinch Zoom
  • Zoom y arrastrar imágenes usando matriz en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.