Tistory View
안드로이드에서 이미지를 다룰 때, ImageView내에 어떻게 그려낼 지를 미리 정의해 둔 것이 있다. 실제 일일이 코딩으로 계산하며 만드는 시간을 줄여 주는 고마운 방식이다.
안드로이드 버전이 올라가면서 추가 될 수도 있겠지만, 총 8가지 방식이 있으며, 필요한 상황에 맞춰 바로 사용하면 된다. 하지만 정확한 동작방식을 일일이 테스트해보기는 시간이 걸리는 작업이니, 이 곳에 그 내용을 정리하도록 한다.
표로 정리를 해보았다.
표의 [XML]컬럼은 xml layout의 속성값이다. (android:scaleType="여기")
표의 [이미지 비율]컬럼은 가로/세로의 비율을 말한다.
Java ScaleType.* |
값 | XML | 크기변경 |
비율 |
설명 |
MATRIX | 0 | matrix | 지맘대로 | 지맘 | setImageMatrix() 함수를 이용하여 2차원용 Matrix(행렬/3x3)을 적용할 수 있다. |
FIT_XY | 1 | fitXY | 변경 | 변경 | 이미지가 View내부 전체에 꽉 채우는 방식, 따라서 원본 이미지가 찌그러질 수 있다.(대부분의 상황이 그렇다.) |
FIT_START | 2 | fitStart |
변경 |
유지 |
View의 최대크기로 변경한 다음, 좌측상단에 위치한다. |
FIT_CENTER | 3 | fitCenter |
변경 |
유지 |
View의 최대크기로 변경한 다음, 중앙에 위치한다. |
FIT_END | 4 | fitEnd |
변경 |
유지 |
View의 최대크기로 변경한 다음, 우측하단에 위치하게 된다. |
CENTER | 5 | center | 없음 | 유지 | View의 중앙에 그린다. |
CENTER_CROP | 6 | centerCrop |
변경 |
유지 |
이미지가 비율을 유지하여 작은 쪽을 View의 끝에 맞춘다. fit(Start, Center, End)는 이미지가 전부 View안으로 들어오지만, centerCrop은 잘려나가는 부분이 생긴다.
fit(Start, Center, End)는 View내에 빈공간이 생길 수 있지만, centerCrop은 빈공간이 없다. |
CENTER_INSIDE | 7 | centerInside |
이미지가 큰경우만 축소 |
유지 |
이미지가 View보다 큰 경우 이미지를 축소하여 중앙에 놓는다.(fitCenter와 같다) 이미지가 View보다 작은 경우는 View의 중앙과 이미지의 중앙을 같게 한다.(center와 같다) |
이렇게 글로 정리를 하니, 내가 정리했지만 뭔소린지 모르겠다. 느낌조차 안온다. 시간이 지나서 읽어보면 더더욱 이해가 안될 것 같다.
그래서 그림을 그려봤다.
왼쪽그림은 View보다 이미지가 작을 때이며, 오른쪽 그림은 View보다 이미지가 더 클 경우를 예로 다음과 같이 동작한다.
(이 경우 이미지가 더 크다는 가로나 세로중 하나만이라도 더 크면 크다고 보는 것이다.)
사용한 이미지 정보는 다음과 같다. 원본그림이 좌우로 퍼진 그림을 사용하였다.
View보다 작은 이미지의 크기 : 100x69
View보다 큰 이미지의 크기 : 250x173
View크기 : 158x158
위아래로 길쭉한 이미지의 경우는 위의 그림을 보고 상상하는 데 어려움이 없을 것이다.
CENTER_CROP의 경우 방향에 따라 크기가 View 맞추어지는 부분을 파악하면 된다.
기타사항
1. 기본값으로는 FIT_CENTER를 쓰는 것으로 알고 있는 데 확실하지는 않다.
2. 그냥 왼쪽 위를 기준으로 크기변화없이 그리려면 MATRIX를 쓰면된다.
좀 더 멋지고 이해하기 쉽게 만들려고 했는 데... 포토샵 실력이 처참한 관계로 실패해서 ... 죄송합니다..ㅠㅠ
'Android Develop > image' 카테고리의 다른 글
안드로이드 비트맵 로드시 비트맵 재사용하기 inBitmap (0) | 2020.02.24 |
---|---|
안드로이드 이미지의 색변경 ColorMatrix (4) | 2019.12.16 |
Android YV12, stride and RGB conversion (0) | 2019.08.06 |
안드로이드 YV12, stride와 RGB 변환 (4) | 2019.08.06 |
Android NDK Access memory of Bitmap directly (5) | 2019.08.05 |
- Total
- Today
- Yesterday
- 전기요금
- 예금
- 안드로이드
- 공유 컨텍스트
- 에어컨
- 사용료
- 텍스처
- 블로그
- 애드핏
- 애드센스
- 아끼는 법
- Android
- 재테크
- texture
- 컴퓨트쉐이더
- 재태크
- OpenGLes
- 전기료
- gpgpu
- 전기세
- 컴퓨트셰이더
- choreographer
- 에어콘
- OpenGL ES
- 금리
- 적금
- ComputeShader
- 티스토리
- 경제보복
- TTS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |