2012-01-13 11 views
5

Sto riscontrando un problema nello zoom della tela. Ho realizzato una vista personalizzata in cui sto disegnando i diagrammi delle relazioni ora quando rimpicciolisco la tela nella posizione (0,0). Ho visto diversi thread e domande ma non ho potuto trovare una risposta appropriata.Zoom su tela passa al punto (0,0)

Quello che sto facendo nel metodo onDraw è.

canvas.scale(mScaleFactor, mScaleFactor); 

ho visto anche il canvas.scale (,,, x y px py) metodo, ma non so come ottenere i punti di articolazione di x ed y.

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; 

}

+0

postale più codice. È difficile aiutarti senza vedere tutti i pezzi del puzzle. –

risposta

9

I punti di articolazione sono fondamentalmente punto che la tela si trasformerà in giro, in modo scalare con un perno di 0,0 rende compattare verso quel punto. utilizzando il seguente metodo è possibile cambiare il punto di perno per ovunque si desideri:

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

Ora, per il nuovo materiale: Se volete che il vostro tela per essere scalata verso il suo centro, sarà sufficiente conoscere il punto nel mezzo della tela:

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

E poi si può scalare utilizzando queste coordinate:

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

Questo rende la mia immagine al centro dello schermo. – sajjoo

+0

Dove si desidera centrare il ridimensionamento? – Jave

+0

voglio ridimensionare l'area tra le mie dita e dovrebbe essere ridimensionato sullo stesso punto. come fa Google map. – sajjoo