[android] 가로 세로 비율을 유지하기 위해 ImageView에서 이미지 크기를 조정하는 방법

안드로이드에서, 나는 정의 ImageView의를 layout_widthfill_parent (휴대 전화의 전체 폭을 차지한다).

내가 넣은 이미지 ImageView가보다 큰 경우 layout_widthAndroid 에서 이미지 를 확장합니다. 그러나 높이는 어떻습니까? Android가 이미지의 크기를 조절할 때 종횡비가 유지됩니까?

내가 찾은 것은 ImageView안드로이드가 이미지보다 큰 이미지를 스케일 할 때 상단과 하단에 약간의 공백이 있다는 것입니다 ImageView. 그게 사실입니까? 그렇다면 어떻게 공백을 제거 할 수 있습니까?



답변

  1. 예, 기본적으로 Android는 가로 세로 비율을 유지하면서 ImageView에 맞게 이미지를 축소합니다. 그러나를 사용 android:src="..."하지 않고 이미지를 ImageView로 설정했는지 확인하십시오 android:background="...". src=가로 세로 비율을 유지하면서 이미지의 크기를 조정하지만 ImageView의 크기에 정확히 맞게 이미지의 크기를 background=조정 하고 왜곡시킵니다. (하지만 배경과 소스를 동시에 사용할 수 있으므로 하나의 ImageView를 사용하여 기본 이미지 주위에 프레임을 표시하는 등의 작업에 유용 할 수 있습니다.)

  2. 또한 볼 것 android:adjustViewBounds 크기 조정 된 이미지에 맞게 ImageView의 크기를 조정해야합니다. 예를 들어 정사각형 ImageView가되는 사각형 이미지가있는 경우 adjustViewBounds = true를 사용하면 ImageView의 크기도 사각형이됩니다. 그런 다음 ImageView 주위에 다른 뷰가 배치되는 방식에 영향을줍니다.

    그런 다음 Samuh가 쓴 것처럼 android:scaleType매개 변수를 사용하여 기본적으로 이미지 크기를 조정하는 방식을 변경할 수 있습니다 . 그건 그렇고, 이것이 어떻게 작동하는지 발견하는 가장 쉬운 방법은 약간 직접 실험하는 것입니다! Eclipse의 미리보기가 일반적으로 잘못되기 때문에 에뮬레이터 자체 (또는 실제 전화)의 레이아웃을 살펴보십시오.


답변

참조하십시오 android:adjustViewBounds.

ImageView가 드로어 블의 가로 세로 비율을 유지하기 위해 경계를 조정하도록하려면이 값을 true로 설정하십시오.


답변

이 특정 문제가있는 다른 사람에게. 당신은이 ImageView당신의 폭을 가질 것인지를 fill_parent하고 높이가 비례 적으로 조정 :

이 두 가지 속성을 다음에 추가하십시오 ImageView.

android:adjustViewBounds="true"
android:scaleType="centerCrop"

그리고 설정 ImageViewfill_parent과 높이로wrap_content .

또한 이미지를 자르지 않으려면 다음을 시도하십시오.

 android:adjustViewBounds="true"
 android:layout_centerInParent="true"


답변

당신이 원하는 경우 ImageView그 모두 스케일까지 적절한 화면 비율을 유지하면서, 당신의 XML이 추가 아래로 :

android:adjustViewBounds="true"
android:scaleType="fitCenter"

이것을 코드에 추가하십시오 :

// We need to adjust the height if the width of the bitmap is
// smaller than the view width, otherwise the image will be boxed.
final double viewWidthToBitmapWidthRatio = (double)image.getWidth() / (double)bitmap.getWidth();
image.getLayoutParams().height = (int) (bitmap.getHeight() * viewWidthToBitmapWidthRatio);

이 작업을 수행하는 데 시간이 조금 걸렸지 만 이미지가 화면 너비보다 작고 화면 너비보다 큰 경우에는 효과가 있으며 이미지를 상자에 넣지 않습니다.


답변

이것은 나를 위해 일했다 :

android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxWidth="39dip"
android:scaleType="centerCrop"
android:adjustViewBounds ="true"


답변

이것은 내 문제를 해결했다

android:adjustViewBounds="true"
android:scaleType="fitXY"


답변

아래 코드 가로 세로 비율로 배율 이미지 작업 :

Bitmap bitmapImage = BitmapFactory.decodeFile("Your path");
int nh = (int) ( bitmapImage.getHeight() * (512.0 / bitmapImage.getWidth()) );
Bitmap scaled = Bitmap.createScaledBitmap(bitmapImage, 512, nh, true);
your_imageview.setImageBitmap(scaled);