¿Cómo puedo hacer uso del punto de enfoque en Android ScaleGestureDetector para hacer zoom como el navegador Android?

Tengo un lienzo que estoy usando un ScaleGestureDetector para ampliar mi aplicación Android. Aquí está el código que tengo hasta ahora:

//SCALING -------------------------------------------------- //get center of the viewport int centerX = xLoc+((int)(screenWidth/2*scaleFactor)); int centerY = yLoc+((int)(screenHeight/2*scaleFactor)); scaleFactor /= detector.getScaleFactor(); // Don't let the object get too small or too large. scaleFactor = Math.max(1.0f, Math.min(scaleFactor, maxScaleFactor)); //Make sure the viewport is repositioned xLoc = centerX-((int)(screenWidth/2*scaleFactor)); yLoc = centerY-((int)(screenHeight/2*scaleFactor)); //----------------------------------------------------------- 

Esto funciona muy bien para acercar y alejar la imagen de mi lienzo. El xLoc y el yLoc representan la esquina izquierda superior de mi viewport con respecto a la imagen entera que dibujo una porción de. El problema que tengo con este código, sin embargo, es que se amplía en el centro de la ventana gráfica. Me gustaría poder usar detector.getFocuxX () y detector.getFocusY () para hacer zoom en el punto de enfoque, al igual que la pizca de zoom funciona en el navegador android.

Básicamente, necesito ajustar la posición de la ventana gráfica (xLoc y yLoc) para que dé la apariencia de acercar el punto de enfoque del gesto de escala.

No puedo entender esta parte. Si alguien tiene una idea de cómo puedo hacer esto sin utilizar las transformaciones de la matriz de lienzo (que he visto utilizado en muchos de los temas que encontré antes de publicar esto) realmente lo apreciaría! Incluso si usted podría señalarme a alguien que ha hecho algo similar.

    One Solution collect form web for “¿Cómo puedo hacer uso del punto de enfoque en Android ScaleGestureDetector para hacer zoom como el navegador Android?”

    Una sola onScale función onScale no proporciona suficiente información para implementar la escala alrededor del punto de enfoque aparente. Tendrá que conservar los valores de getFocusX() y getFocusY() de una llamada onScale anterior y usarlos para influir en su escala en la próxima llamada.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.