1

Я работаю над Image Zooming. Все в порядке. Я пытаюсь отобразить матричное изображение в центре макета. Но я не в состоянии это сделать.Android: Невозможно разместить матричное изображение в центре экрана?

Мой XML является:

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

И я использовал это решение от переполнения стека, но я не получаю центр помещается изображение. Изображение выравнивается в верхнем левом углу экрана. Пожалуйста, помогите мне.

@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

Любой причину вы не используя «RelativeLayout»? –

+0

Я также использовал Relative layout, но не получил результат. @ XaverKapeller –

+1

И проблема не в позиции «ImageView», а в ее размере. Вы установили его высоту и ширину в 'match_parent', что делает« ImageView »размером с макет, содержащий его. Вместо этого попробуйте 'wrap_content'. –

ответ

2

Здесь я использовать вытяжку (который установлен в ImageView) внутренняя ширину и высоту как screenWidth и ScreenHeight

Вот мое решение:

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

}