운영 중인 Android commerce UI를 XML View에서 Jetpack Compose로 점진 전환하며 마주친 layout·text 차이를 실제 code 사례로 풀어낸다. 신규 화면은 완전 전환하되 운영 영향이 큰 화면은 교체 가능한 component부터 바꿔 회귀를 최소화하는 전략을 바탕으로 구체적 난제들을 다룬다.
핵심 포인트- 장바구니 button에서 숫자 가격에 '원'이 섞이면 아래로 처지는 문제를, centerVertically가 glyph 시각 중심을 못 맞추는 것으로 분석하고 Modifier.alignByBaseline으로 first·last baseline을 맞춰 해결
- XML의 drawableStart·drawableEnd에 해당하는 parameter가 없어 AnnotatedString과 inline content(appendInlineContent + InlineTextContent map)로 text 앞뒤 icon을 구현하고 접근성 대체 문자열도 유지
- 가로 scroll quick menu처럼 item 높이가 동적이라 LazyHorizontalGrid의 고정 height를 미리 알 수 없는 문제를, 자식을 여러 번 측정하고 배치를 늦출 수 있는 SubcomposeLayout으로 미리 재 높이를 계산해 grid·shelf 높이를 고정
- 없던 auto-size text를 최대 font부터 overflow를 확인하며 줄이는 방식으로 만들되 TextMeasurer 사전 측정으로 draw 후 측정 비용을 개선, 전환 후 Layout Inspector recomposition count와 Animation Preview로 성능·동작 점검
왜 읽나XML에서 Compose로 실서비스 UI를 옮기는 Android 개발자에게 baseline·inline content·SubcomposeLayout·auto-size 같은 실전 전환 함정과 해법을 담은 참고서.