1

Je travaille sur le zoom d'image. Tout va bien. J'essaie d'afficher une image matricielle au centre de la mise en page. Mais je ne suis pas capable de le faire.Android: Impossible de placer une image matricielle au centre de l'écran?

Mon xml est:

<FrameLayout 
    android:id="@+id/root1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_below="@+id/root" 
    > 

    <ImageView 
     android:id="@+id/img" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="center" 
     android:adjustViewBounds="true" 
     android:scaleType="matrix" 
     android:src="@drawable/ic_launcher" > 
    </ImageView> 
</FrameLayout> 

Et je l'ai utilisé cette solution de débordement de la pile, mais je ne reçois pas le centre placé image. L'image est alignée en haut à gauche de l'écran. Aidez-moi, s'il vous plaît.

@Override 
public void onWindowFocusChanged(boolean hasFocus) { 

    super.onWindowFocusChanged(hasFocus); 

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

    Log.e("", 
      "Image Width : " + image.getWidth() + " > " 
        + image.getHeight()); 
    Log.e("", "screen Width : " + screenWidth + " > " + screenHeight); 
    Matrix matrix = image.getImageMatrix(); 
    RectF drawableRect = new RectF(0, 0, image.getWidth(), 
      image.getHeight()); 
    RectF viewRect = new RectF(0, 0, screenWidth, screenHeight); 
    matrix.setRectToRect(drawableRect, viewRect, Matrix.ScaleToFit.CENTER); 
    image.setImageMatrix(matrix); 
    image.invalidate(); 
} 
+0

une raison quelconque vous n'êtes pas en utilisant un 'RelativeLayout'? –

+0

J'ai également utilisé la mise en page Relative mais aucun résultat. @ XaverKapeller –

+1

Et le problème n'est pas la position de 'ImageView' mais sa taille. Vous avez défini sa hauteur et sa largeur à 'match_parent', ce qui fait que' ImageView' est aussi grand que la mise en page qui le contient. Essayez 'wrap_content' à la place. –

Répondre

2

Ici, j'ai à utiliser drawable (qui est réglé sur imageview) largeur intrinsèque et de la hauteur comme ScreenWidth et screenheight

Voici ma solution:

@Override 
public void onWindowFocusChanged(boolean hasFocus) { 

    super.onWindowFocusChanged(hasFocus); 

    float imageWidth = imageView.getDrawable().getIntrinsicWidth(); 
    float imageHeight = imageView.getDrawable().getIntrinsicHeight(); 
    RectF drawableRect = new RectF(0, 0, imageWidth, imageHeight); 
    RectF viewRect = new RectF(0, 0, imageView.getWidth(), 
      imageView.getHeight()); 
    Matrix matrix = imageView.getMatrix(); 
    matrix.setRectToRect(drawableRect, viewRect, Matrix.ScaleToFit.CENTER); 
    imageView.setImageMatrix(matrix); 
    imageView.invalidate(); 

}