2013-01-21 15 views
7

Ho creato una galleria di immagini e tutto funziona perfettamente. Per ingrandire e spostare un'immagine è richiestoPosizionamento di un'immagine matrice al centro di imageview

ImgView.setScaleType (ImageView.ScaleType.MATRIX) 

e quando lo faccio, l'immagine che ho avuto è piccolo, così ho chiamato il metodo

scaleFactor = view.getWidth()/(float)view.getDrawable().getIntrinsicWidth(); 
matrix.setScale(scaleFactor, scaleFactor); 

modo da non perdere le dimensioni dell'immagine, ma come puoi vedere, l'immagine sorge sopra tutto e ha bisogno di stare al centro dello schermo.

Ho provato questo

matrix.postTranslate((screen_width-image_width)/2, (screen_height-image_height)/2); 

ma non funzionano.

Qualche idea? Ci scusiamo per non aver inserito le immagini, ma non posso perché la mia reputazione. Grazie mille in anticipo

+0

hai provato a specificare il punto di pivot? 'matrix.setScale (scaleFactor, scaleFactor, view.getWidth()/2, view.getHeight()/2);' –

+0

sì, ho provato ma senza risultati. L'immagine continua a non entrare nel mezzo. Grazie per la risposta. – sergio

risposta

15

Ok, ho corretto l'errore, doveva solo mettere le seguenti righe di codice:

RectF drawableRect = new RectF(0, 0, image_width, image_height); 
RectF viewRect = new RectF(0, 0, screen_width, screen_height); 
matrix.setRectToRect(drawableRect, viewRect, Matrix.ScaleToFit.CENTER); 

Speriamo che qualcuno di aiuto, la ringrazio molto per la risposta.

4
@Override 
public void onWindowFocusChanged(boolean hasFocus) { 

    super.onWindowFocusChanged(hasFocus); 

    screenWidth = layout.getWidth(); 
    screenHeight = layout.getHeight(); 

    Log.e("", "Image Width : " + imageWidth + " > " + imageHeight); 
    Log.e("", "screen Width : " + screenWidth + " > " + screenHeight); 

    RectF drawableRect = new RectF(0, 0, imageWidth, imageHeight); 
    RectF viewRect = new RectF(0, 0, screenWidth, screenHeight); 
    matrix.setRectToRect(drawableRect, viewRect, Matrix.ScaleToFit.CENTER); 
    img.setImageMatrix(matrix); 
} 
+0

'img.setImageMatrix (matrix)' è stata la chiave per me –

Problemi correlati