Android168 [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. [Android] Compose의 ConstraintLayout ConstraintLayout in ComposeConstraintLayout은 컴포저블(Composable)들을 서로 상대적인 위치에 배치할 수 있게 해주는 레이아웃입니다. 여러 개의 중첩된 Row, Column, Box 또는 커스텀 레이아웃을 사용하는 대신으로 활용할 수 있습니다. 복잡한 정렬이 필요한 큰 레이아웃을 구현할 때 유용합니다. 다음과 같은 상황에서 ConstraintLayout 사용을 고려해보세요:화면에 요소를 배치하기 위해 여러 개의 Column과 Row를 중첩 사용하는 것을 피하고, 코드의 가독성을 높이고자 할 때컴포저블을 다른 컴포저블 기준으로 배치하거나, 가이드라인(guideline), 배리어(barrier), 체인(chain) 등을 기준으로 배치하고자 할 때뷰 시스템(View s.. 2025. 6. 5. [Android] Compose 레이아웃에서 Intrinsic 측정 Compose 레이아웃에서 Intrinsic 측정Compose에서는 자식 컴포저블을 한 번만 측정해야 한다는 규칙이 있습니다. 자식을 두 번 측정하려고 하면 런타임 예외가 발생합니다.하지만 경우에 따라 자식을 실제로 측정하기 전에 그 크기 정보를 알고 싶을 때가 있습니다.이럴 때 사용하는 것이 Intrinsics입니다.Intrinsics를 사용하면 자식을 아직 측정하지 않은 상태에서 필요한 크기 정보를 미리 쿼리할 수 있습니다. 예를 들어, 특정 컴포저블에 대해 다음과 같은 정보를 요청할 수 있습니다:Modifier.width(IntrinsicSize.Min)→ 콘텐츠를 제대로 표시하기 위해 필요한 최소 너비는 얼마인가?Modifier.width(IntrinsicSize.Max)→ 콘텐츠를 제대로 표시할.. 2025. 6. 2. 이전 1 2 3 4 ··· 28 다음