Android170 [Android] Compose에서 자연스러운 텍스트 표시하기(Font Padding, Baseline, LineHeight) Jetpack Compose로 UI를 만들다 보면 Text 컴포넌트의 위치가 미묘하게 어긋나거나, 상하 여백이 어색하게 느껴지는 경우가 있습니다.이런 문제는 대부분 Font Padding, Baseline 정렬, LineHeight 같은 텍스트 관련 속성을 상황에 맞게 설정하지 않아서 발생합니다. 이번 포스팅에서는 각 속성이 어떤 역할을 하는지, 그리고 어떤 상황에서 어떤 속성을 조절해야 자연스러운 텍스트 UI를 만들 수 있는지 알아보겠습니다. 1. Font PaddingJetpack Compose에서 Text 컴포넌트를 사용할 때, 의도하지 않은 위아래 여백이 생긴다고 느껴본 적 있으신가요? 그 이유는 Font Padding 때문입니다. Text는 기본적으로 폰트 자체에 정의된 패딩을 포함하는데, 이 .. 2025. 7. 30. [Android] Compose의 IntrinsicSize.Min와 wrapContentHeight() 차이 회사 프로젝트에서 갤럭시 폴드 대응 중, IntrinsicSize.Min을 사용해 자식 컴포넌트의 높이에 따라 부모 높이를 조정하는 레이아웃 코드에서 내용이 아래쪽에서 잘리는 현상이 발생했습니다.문제 원인 분석 결과, 동적 콘텐츠를 사용하는 경우 IntrinsicSize.Min은 초기 컴포지션 시점에만 크기를 계산하기 때문에, 이후 네트워크 등을 통해 받아오는 실제 콘텐츠 높이를 반영하지 못해 잘림이 발생한 것이였습니다.즉, viewModel에서 Flow로 네트워크 데이터를 수신하고, 컴포저블에서 collectAsState() 등으로 이를 받아 UI를 구성할 때, 초기 컴포지션에서 높이가 먼저 계산되어 이후 콘텐츠 반영이 누락되는 상황이 생긴 것입니다. 이번 글에서는 IntrinsicSize.Min 사용.. 2025. 7. 12. [Android] 다양한 픽셀 밀도 지원하기 다양한 픽셀 밀도 지원하기Android 기기들은 화면 크기뿐만 아니라 휴대폰, 태블릿, TV 등 서로 다른 픽셀 크기를 가진 화면을 가지고 있습니다.어떤 기기는 1인치에 160픽셀이 들어가 있고, 또 다른 기기는 같은 공간에 480픽셀이 들어갈 수 있습니다.만약 이러한 픽셀 밀도 차이를 고려하지 않으면, 시스템이 이미지를 자동으로 크기 조절하면서 이미지가 흐릿해지거나, 이미지가 잘못된 크기로 표시될 수 있습니다. 이번 포스팅에서는 해상도에 독립적인 단위를 사용하고, 각 픽셀 밀도별로 대체 비트맵 리소스를 제공하여 앱이 다양한 픽셀 밀도를 지원하도록 설계하는 방법을 알아보겠습니다. px, dpi, dp란?1. px (픽셀, pixel)픽셀은 화면을 이루는 가장 작은 점(dot)이에요.실제 디스플레이에서 빛.. 2025. 7. 11. [Android] Benchmark로 성능 측정하기 (2) - Macrobenchmark Macrobenchmark Macrobenchmark 라이브러리는 앱 시작과 RecyclerView 스크롤, 애니메이션 실행 같은 복잡한 UI 조작 등 앱의 전반적인 성능을 테스트하는 데 사용합니다. 만약 코드의 작은 부분을 테스트하고 싶다면 Microbenchmark 라이브러리를 사용해야합니다. 벤치마크할 앱은 릴리즈 버전 또는 실제 서비스 환경과 최대한 비슷하게 설정하는 것이 좋습니다. 보통 디버그 가능하지 않도록(non-debuggable) 설정하고, 성능 향상을 위해 코드 난독화(minification)를 켜는 것이 권장됩니다. 보통은 릴리즈 버전을 복사하여 디버그 키로 서명된 별도의 빌드 버전을 만들어 사용합니다.buildTypes { getByName("release") { .. 2025. 7. 8. [Android] Benchmark로 성능 측정하기 (1) - 개요 앱 벤치마크 수행하기벤치마킹은 앱의 성능을 점검하고 모니터링하는 방법입니다. 정기적으로 벤치마크를 실행하면 성능 문제를 분석하고 디버깅할 수 있으며, 최근 변경 사항에서 성능이 저하되지 않도록 예방할 수 있습니다.Android에서는 다양한 상황에서 앱의 성능을 분석하고 테스트할 수 있도록 두 가지 벤치마크 라이브러리와 접근 방식을 제공합니다: Macrobenchmark와 Microbenchmark입니다. MacrobenchmarkMacrobenchmark 라이브러리는 앱 시작, UI 조작, 애니메이션과 같은 사용자의 큰 행동 흐름을 측정하는 데 사용됩니다.이 라이브러리를 사용하면 테스트할 때의 성능 환경을 직접 제어할 수 있고, 앱을 시작하거나 종료하면서 실제 앱 실행 시간이나 스크롤 성능을 정확하게 측.. 2025. 7. 7. [Android] BaselineProfile에 대해 알아보자 안드로이드 앱 컴파일 방법Baseline Profile을 사용해 성능 개선을 위해선 안드로이드 앱의 컴파일 단계를 먼저 알 필요가 있습니다. 그래야 성능 측정 방법과 결과가 이해되기 때문입니다. 안드로이드 앱은 총 3단계로 컴파일됩니다.Step1. Kotlinc 컴파일Java에선 소스 코드를 Javac컴파일러로 컴파일하여 .class 확장자의 바이트 코드를 생성합니다.하지만 Kotlin은 kotlinc 컴파일러로 소스코드를 컴파일해 바이트 코드를 생성합니다. 또한 이는 javac와 다른 한 가지 차이점이 있는데, 그것은 바로 kotlin언어는 기존 java 클래스, 함수에 부가 기능을 확장함수로 추가 제공한다는 점입니다.따라서 javac는 .class로만 바이너리 파일을 생성하지만 kotlinc는 .cl.. 2025. 7. 6. 이전 1 2 3 4 ··· 29 다음