Android
-
Glide → Coil 전환 후 썸네일이 커졌다 — wrap_content ImageView가 원본 크기로 로드되는 이유카테고리 없음 2026. 8. 14. 21:57
이미지 로더를 Glide에서 Coil로 바꿨습니다. 로드하는 코드는 하나도 안 건드렸고, 래퍼 한 겹 아래에서 엔진만 갈아끼웠습니다.그런데 목록 썸네일이 커지고 아래 텍스트가 잘린다는 제보가 들어왔습니다. 그것도 특정 기기, 특정 상품에서만요. 플래그를 끄면 멀쩡해집니다. 바뀐 게 엔진 하나뿐이니 범인은 정해져 있는 셈이었습니다.원인은 이렇습니다. 크기를 안 정해주고 이미지를 로드할 때 wrap_content ImageView를 얼마나 크게 디코딩할지 정하는 규칙이, 두 엔진에서 정반대입니다. Coil 버그도 아니고 문서에 적혀 있는 설계입니다.확인한 버전은 Glide 4.16.0, Coil 3.0.4입니다.세 가지가 겹쳐야 터지는 문제시작하기 전에 하나 짚고 갈게요. 뷰를 키운 건 이미지 로더가 아니라..
-
Kotlin 2.4.0 신기능 소개Kotlin🖥 2026. 7. 8. 20:21
What's New in Kotlin 2.4.0Kotlin 2.4.0은 2026년 6월에 릴리스됐습니다.가장 큰 흐름: 컨텍스트 파라미터 정식화, UUID API 안정화, 그리고 K1 컴파일러 완전 제거.🔑 한눈에 보는 핵심영역핵심 변경언어Context parameters Stable, explicit backing fields Stable, 컬렉션 리터럴(실험적)표준 라이브러리kotlin.uuid.Uuid Stable, isSorted() 계열 추가Kotlin/JVMJava 26 바이트코드 지원, 메타데이터에 애노테이션 기본 기록Kotlin/NativeCMS GC 기본 활성화, Swift export Alpha, LLVM 21Kotlin/Wasm증분 컴파일 Stable, WebAssembly Comp..
-
Navigation 3 설명회Android📱 2026. 7. 6. 19:20
Jetpack Navigation 3 (Nav3) 완벽 정리Navigation 3는 Jetpack Compose 전용으로 처음부터 다시 설계된 내비게이션 라이브러리입니다.2025년 11월에 정식(stable) 으로 승격됐고, 이 글 기준 최신 버전은 1.1.4 입니다. 1. 왜 Nav3인가?Navigation 2 (navigation-compose) Navigation 3 (Nav3)백스택 소유라이브러리가 관리 (불투명)개발자가 소유 (List)상태 모델NavController 내부 상태Compose State 기반경로 표현문자열 route / 타입 세이프 routeNavKey 객체 (직렬화 가능)백스택 조작navigate(), popBackStack()backStack.add(), backStack.r..
-
[Android] Compose BasicTextField2를 써보자Android📱/삽질 기록... 2024. 9. 25. 23:46
BasicTextField2를 써보자 Compose에서 TextField를 사용할 때 커스텀을 많이하게 되는 거 같다 그래서 일반 TextField 보다는 BasicTextField를 사용해서 dexorationBox의 인자로 텍스트 필드의 색상이나 기본 UI를 수정해야하는 일이 많다. 그럴 때 쓰면 좋은 방식으로 BasicTextField2를 사용하는 걸 찾았는데아주 편리해서 공유한다 기존 BasicTextField를 사용하면 2가지의 불편한 점이 존재했는데 1. visualTransformation을 이용한 입력값 컨트롤 이 부분은 장단점이 확실하다전화번호를 입력받아야 한다고 쳤을 때 000-0000-0000 이런식으로 입력을 받아야 한다면UX를 위해서 유저가 -을 직접 입력하는 거보다 자동으로 포매..
-
[Android] pendingIntent putExtra 및 주의 사항Android📱 2024. 9. 12. 21:33
요즘 Service를 많이 다루다 보니 notification에서 주로 많이 쓰는 pendingIntent를 많이 사용하고 있다.pendingIntent란 기본적으로 intent가 컴포넌트간의 통신과 데이터 전달을 위한 클래스라고 한다면그에 확장된 버전으로 intent를 지연시켜 발생하는 시키는 방식으로 개발자가 원하는 시점을 정의해 놓고 외부 어플리케이션이나 시스템에 실행 시점을 양도하여 intent를 발생시키는 방식이다. 함정을 파놓고 외부에서 함정을 밟으면 작동하는 원리와 비슷한 느낌이다. 보통 Notification이나 위젯에서 많이 사용을 하게된다고 한다나는 서비스를 이용한 앱 위에 그리기에서 인터렉션을 구현 중이라 사용하게 되었는데문제가 있었다 문제 intent를 사용하듯 putExtra로 ..
-
재미있는 에러 - 다른 앱 위에 그리기 권한 없어지는 에러Android📱/삽질 기록... 2024. 8. 30. 21:31
안드로이드에는 다른 앱 위에 표시라는 재미있는 기능이 있다. 티맵을 예로 들면 해당 화면처럼 서비스를 이용하여 뷰를 띄울 때 그 뷰가 다른 앱 위에서 보이도록해주는 기능이다.유저에게 알림을 줄때도 유용하고, 유저도 다른 앱을 사용하다가 다시 우리 앱으로 편하게 돌아오거나 하는 등의 유저 편의를 위한 기능을 추가할 때 아주 좋은 기능이라고 생각한다. 오류 발견 이번에 해당 기능과 서비스를 이용하여 많은 것을 구현하고 있었다.다시 앱으로 돌아오는 버튼, 취소 알림 등의 기능을 구현해서 APK를 이용해서 실제 운영해보며 테스트를 진행했는데전화를 하면 권한이 꺼져버려서 앱을 돌아올때 권한이 없는데 앱 위에 그리기를 실행하여 앱이 종료하는 현상을 겪었다. 문제 분석 일단 내 테스트기기에서는 그런일이 없어서 문..
-
[Android] 안드로이드 접근성 - 화면 크기 조절, 폰트 크기 조정 설정 제거하기Android📱/삽질 기록... 2024. 5. 11. 12:45
접근성이란... 구글에서는 여러 가지 이유로 핸드폰을 사용하 어려운 유저들을 위해서 기기 제어에 관련된 지원을 하면서 접근성을 많이 신경 쓰고 있다.안드로이드의 접근성으로는 청각 보조 지원, 시각 보조 지원, 모바일 지원 기능이 있다. Talkback, 디스플레이 조정, 음성 명령, LookOut (주변 사물 인식), 스위치로 기기 제어, 점자 디스플레이 , 돋보기 등등 다양한 기능을 지원한다 그중 오늘 다룰 문제는 디스플레이 조정에 관련된 문제였다. 지금 진행하고 있는 프로젝트는 연령층이 꽤나 높은 유저들을 타깃으로 하는 앱이기 때문에 접근성을 고려한 UI를 구현하고 있었다.그래서 UI 자체가 큼직큼직하고, 글씨도 최대한 크게 디자인되어 만들고 있었는데 해당 기능들이 문제가 되었다폰트가 원래 크고 U..