[android] 가로 세로 비율을 유지하기 위해 ImageView에서 이미지 크기를 조정하는 방법
안드로이드에서, 나는 정의 ImageView
의를 layout_width
수fill_parent
(휴대 전화의 전체 폭을 차지한다).
내가 넣은 이미지 ImageView
가보다 큰 경우 layout_width
Android 에서 이미지 를 확장합니다. 그러나 높이는 어떻습니까? Android가 이미지의 크기를 조절할 때 종횡비가 유지됩니까?
내가 찾은 것은 ImageView
안드로이드가 이미지보다 큰 이미지를 스케일 할 때 상단과 하단에 약간의 공백이 있다는 것입니다 ImageView
. 그게 사실입니까? 그렇다면 어떻게 공백을 제거 할 수 있습니까?
답변
-
예, 기본적으로 Android는 가로 세로 비율을 유지하면서 ImageView에 맞게 이미지를 축소합니다. 그러나를 사용
android:src="..."
하지 않고 이미지를 ImageView로 설정했는지 확인하십시오android:background="..."
.src=
가로 세로 비율을 유지하면서 이미지의 크기를 조정하지만 ImageView의 크기에 정확히 맞게 이미지의 크기를background=
조정 하고 왜곡시킵니다. (하지만 배경과 소스를 동시에 사용할 수 있으므로 하나의 ImageView를 사용하여 기본 이미지 주위에 프레임을 표시하는 등의 작업에 유용 할 수 있습니다.) -
또한 볼 것
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"
그리고 설정 ImageView
폭 fill_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);