일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- list adapter
- 어댑터 효율적으로 사용하기
- error
- ColdStream
- hilt
- 다른버전 다운로드
- 화면전환
- HotStream
- notifyDataSetChanged 비효율
- notifyDataSetChanged 대신 사용하기
- 뷰모델팩토리
- 안드로이드
- Android
- android aac
- 코틀린
- SQLite
- DiffUtilCallback
- 클린아키텍처
- 계층 분리
- Clean Architecture
- 의존성주입
- compose
- 안드로이드 스튜디오 구버전 다운받기
- Kotlin
- fragment
- 앱개발
- 키보드 숨기기
- 안드로이드 DB
- DI
- koltin
Archives
- Today
- Total
DoReMi
[Kotlin] Coil 라이브러리 본문
Coil 이란?
Coroutine Image Loader의 약자! 코루틴으로 만들어지 가벼운 Android 백앤드 이미지 로딩 라이브러리 공식문서
근데 Glide쓰면 안됌??
이미 글라이드는 성능과 신뢰성이 검증되고 확실하게 자리잡은 이미지 라이브러리입니다.
그러면 Coil의 장점을 봐야겠죠?
Coil의 장점
빠르다
- 메모리와 디스크의 캐싱, 메모리의 이미지 다운 샘플링, Bitmap 재사용, 일시정지/취소의 자동화 등등 수 많은 최적화 작업을 수행한다.
가볍다
- Glide, Fresco보다 상대적으로 가볍다.
- COIL은 2000개 가량의 method를 해당 애플리케이션의 apk에 추가하는데 이는 Glide나 Frecso보다 훨씬 적고 Picasso와 비슷한 수준입니다.
사용하기 쉽다
- 심플함과 최소한의 boilerplate를 위하여 Kotlin의 기능을 활용하여 사용하기 쉽다.
현대적이다
- Kotlin 우선이며 Coroutines, OkHttp, Okio, AndroidX Lifecycles등의 최신 라이브러리를 사용합니다.
단점
- 버전이 아직 정식버전이라고는 할 수 없어서 신뢰성이 낮아 실무에서 사용하는 기업이 적다.
- 최소 Android SDK 버전 14부터 지원을 하나 최신버전에서 사용을 하는 것을 권장함.(AndroidX)
- 일부 기능 사용을 위해 Coroutine이 무엇인지 개념적으로 어느정도 알아야 한다.
사용법
- 의존성 추가
- build.gradle 파일에서 의존성 추가
dependencies { implementation("io.coil-kt:coil:2.5.0")// Coil 라이브러리 의존성 }
- 이미지 로드
- Glide를 사용할 때도 서버에서 이미지를 가져오는 시간동안 프로그래스바를 통해서 로딩 중이라는 것을 표현 했었지만
- Coil에서는 placeholder통해서 300x300 크기의 원본 이미지의 로딩이 끝날 때까지 100x100만큼의 저화질 이미지를 먼저 로딩해서 보여주게 됩니다! 이후 원본 이미지의 로딩이 끝나면 자연스럽게 변하는 동작을 수행합니다.
- 이미지를 흐릿하게 보이기하는 가우시안 블러(Gaussian Blur)를 적용합니다.
- 이미지의 중심을 기준으로 원형으로 이미지를 자릅니다. (예. 카카톡의 원형 프로필 이미지)
- 그레이스케일로 음영처리를 적용합니다.
- 사이즈에 맞도록 이미지를 자르고 이미지 모서리를 둥글게 라운드를 적용합니다.
imageView.load(imageUrl) { size(300, 300) // 이미지 크기 조정 placeholder(R.drawable.placeholder_image) // 플레이스홀더 이미지 설정 transformations(CircleCropTransformation()**)** // 원형으로 이미지 자르기 error(R.drawable.error_image) // 오류 시 이미지 설정 }
- BlurTransformation
- val imageUrl = "<https://example.com/image.jpg>" imageView.load(imageUrl) { size(300, 300) // 이미지 크기 조정 placeholder(R.drawable.placeholder_image) // 플레이스홀더 이미지 설정 error(R.drawable.error_image) // 오류 시 이미지 설정 }
- 메모리 및 디스크 캐싱
- imageView.load(imageUrl) { memoryCachePolicy(CachePolicy.DISABLED) // 메모리 캐싱 비활성화 diskCachePolicy(CachePolicy.ENABLED) // 디스크 캐싱 활성화 }
느낀점
생각보다 사용하는 방법이 어렵지 않고 Glide 라이브러리보다 메모리 사용량이 적다는 점!
사용방법도 Glide 라이브러리랑 유사한 점이 있어서 앞으로 Coil라이브러리를 사용해봐야겠습니다!
이정도만 알아도 Coil 라이브러리를 사용하는데 큰 지장이 없을 것 같아요!(사실 정보가 별로 없네요 )
'Android > 개념' 카테고리의 다른 글
[Kotlin] ListAdatper / DiffUtil (0) | 2024.01.19 |
---|---|
[Kotlin] Flow(StateFlow,SharedFlow) (2) | 2023.12.19 |
[Kotlin] 파이어베이스 사용 코드 예시 (0) | 2023.09.14 |
[Kotlin] 키보드 이벤트 (0) | 2023.08.15 |
[Kotlin] Firebase Console (0) | 2023.07.31 |