<ImageView
android:id="@+id/first_imageView"
android:layout_width="80dp"
android:layout_height="80dp"
android:cropToPadding="true"
android:scaleType="centerInside"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/edit_text" />
ImageView에는 다양한 속성이 있습니다.
그중에 android:scaleType
이라는 속성이 있습니다.
옵션값은 총 8개로 나눠집니다.
android:scaleType="center" : 이미지 원본 크기와 비율을 유지하며 이미지의 중앙을 layout_width, layout_height 안에 출력합니다. 이 때 layout보다 이미지가 크면 layout의 벗어난 이미지는 출력되지 않습니다. layout보다 이미지가 작으면 이미지를 center 정렬합니다.
(원본 이미지를 그대로 올리는 방법)
android:scaleType="centerCrop" : 이미지의 가로/세로의 길이 중 짧은 쪽을 ImageView의 layout에 꽉 차게 크기를 맞춰 출력합니다. 이 때 원본 이미지 가로/세로의 비율은 유지되고 layout 영역에서 벗어난 이미지는 출력되지 않습니다.
(이미지가 뭉개지더라도 규격에 맞춤)
android:scaleType="centerInside" : 이미지의 가로/세로의 길이 중 긴 쪽을 ImageView의 layout에 맞춰서 출력합니다. 이 때 원본 이미지의 가로/세로 비율은 유지되고 layout에 이미지외 빈공간은 background 속성의 color로 채워집니다. fitCenter와 다른점은 원본 이미지가 ImageView의 layout보다 작다면, 이미지의 크기는 유지됩니다.
(이미지가 뭉개지더라도 규격에 맞춤)
android:scaleType="fitCenter" : 이미지의 가로/세로의 길이 중 긴 쪽을 ImageView의 layout에 맞춰서 출력합니다. 이 때 원본 이미지의 가로/세로 비율은 유지되고 layout에 이미지외 빈공간은 background 속성의 color로 채워집니다. centerInside와 다른점은 이미지의 크기가 ImageView의 레이아웃 크기에 따라 변합니다.
android:scaleType="fitStart" : ImageView layout 안에서 이미지의 가로/세로 비율을 유지하며 출력되지만 ImageView의 layout의 왼쪽 상단을 기준으로 정렬된다.
android:scaleType="fitEnd" : ImageView layout 안에서 이미지의 가로/세로 비율을 유지하며 출력되지만 ImageView의 layout의 오른쪽 하단을 기준으로 정렬된다.
android:scaleType="fitXY" : 가로/세로 비율에 상관없이 ImageView의 레이아웃의 각 면에 꽉 차게 출력된다.
android:scaleType="matrix" : 이미지 원본의 크기와 비율을 유지하며 이미지 원본대로 왼쪽 상단을 기준으로 출력된다. 이미지가 ImageView의 레이아웃 보다 크다면 나머지 이미지는 출력되지 않는다.
(이미지가 짤릴 가능성이 크므로 안쓰는게 낫다고 생각)