override
override는 이미지의 크기를 강제로 지정하여 로드할 때 사용되는 메서드입니다
우선 함수 원형을 보자면,
paramater로 width, height을 받아서 크기를 조절해줍니다
@NonNull
@CheckResult
public T override(int width, int height) {
if (isAutoCloneEnabled) {
return clone().override(width, height);
}
this.overrideWidth = width;
this.overrideHeight = height;
fields |= OVERRIDE;
return selfOrThrowIfLocked();
}
만약 width, height이 같다면 parameter에 int 하나만 입력하면 위의 함수를 호출하게 되어있습니다
@NonNull
@CheckResult
public T override(int size) {
return override(size, size);
}
이미지를 가져오는 과정에서 미리 지정해둔 크기로 가져오기 때문에 메모리 사용량이 적어집니다
다만, 지정해둔 크기로 가져오기때문에 비율에 문제가 생길 수 있어요
비율문제 해결 방법
✅ ScaleType 조정
1) ImageView의 scaleType 속성을 조정하거나
<ImageView
android:id="@+id/imageViewFitCenter"
android:layout_width="match_parent"
android:layout_height="200dp"
android:scaleType="fitCenter"
android:src="@drawable/sample_image" />
2) Glide의 RequestOptions 에서 fitCenter() 같은 옵션을 추가합니다
val requestOptionsFitCenter = RequestOptions()
.fitCenter()
Glide.with(imageView.context)
.load(imageUrl)
.apply(requestOptionsFitCenter)
.into(imageView)
✅ ratio 유지 : app:layout_constraintDimensionRatio 속성을 사용해 비율을 설정합니다
<ImageView
android:id="@+id/imageView"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintDimensionRatio="16:9"/>
궁금하신 점이나 의견이 있으시면 댓글 부탁드립니다 감사합니다 😊
'📱 Android' 카테고리의 다른 글
[Android] 앱 배포 실패, 그 원인은 SoLoader ? (ft.giphy) (2) | 2024.10.11 |
---|---|
[Android] onBackPressedDispatcher 뒤로가기 제어하기 (ft. DialogFragment) (1) | 2024.09.19 |
[Android] Bitmap crop with Rect (0) | 2024.06.13 |
이미지 수난기 (0) | 2024.05.16 |
[Android] Glide vs Picasso (0) | 2024.03.17 |