2013-01-21 9 views
7

Ich habe eine Bildergalerie erstellt und alles funktioniert gut. Zum Vergrößern und verschieben Sie ein Bild erforderlich istPositionierung eines Matrixbildes in der Bildmitte

ImgView.setScaleType (ImageView.ScaleType.MATRIX) 

und wenn ich es tun, das Bild habe ich klein ist, also rief ich die Methode

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

so verpassen Sie nicht die Bildgröße, sondern als Sie können sehen, das Bild erhebt sich über alles und muss in der Mitte des Bildschirms bleiben.

ich versucht, dieses

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

aber nicht funktionieren.

Irgendeine Idee? Sorry für das Einfügen von Bildern, aber ich kann nicht, weil mein Ruf. Vielen Dank im Voraus

+0

Haben Sie versucht, den Drehpunkt anzugeben? 'matrix.setScale (scaleFactor, scaleFactor, view.getWidth()/2, view.getHeight()/2);' –

+0

ja, ich habe es versucht, aber ohne Ergebnisse. Das Bild ist immer noch nicht in der Mitte. Danke für die Antwort. – sergio

Antwort

15

Ok, ich den Fehler behoben haben, mussten nur die folgenden Zeilen Code setzen:

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

Hoffentlich jemand helfen, ich danke Ihnen sehr für die Beantwortung.

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)' war der Schlüssel für mich –

Verwandte Themen