본문 바로가기

android69

[Android-Compose] Compose 스와이프 가능한 탭 UI 만들기 - 2편HorizontalPager 이번 공부 노트는 저번 1편에 이어서 2편인 HorizontalPager에 대해 알아보도록 하겠다.1편에서는 탭을 만들었고 이번에는 그 탭에 들어갈 화면을 만들어야 한다. 그 화면은 HorizontalPager를 통해 만들면 훨씬 간편하게 구현이 가능하다. 본 예제는 Material Design3을 따른다.# HorizontalPager- 화면이 좌우로 전환되는 UI를 구성할 때 자주 사용하는 컴포저블이다.XML 뷰 시스템의 ViewPager와 유사한 기능을 한다.@Composable@ExperimentalFoundationApifun HorizontalPager( state: PagerState, modifier: Modifier = Modifier, contentPadding: Pad.. 2025. 12. 28.
[Kotlin] Result 알아보기! - 예제를 통한 사용법 이번 포스팅은 전편 runCatching에 이어서 알아보면 좋은 Result를 알아보겠다.# Result쉽게 한 문장으로 정리하자면 성공 값 또는 실패(예외)를 담는 value class이다. @SinceKotlin("1.3")@JvmInlinepublic value class Result @PublishedApi internal constructor( @PublishedApi internal val value: Any?) : Serializable { public val isSuccess: Boolean get() = value !is Failure public val isFailure: Boolean get() = value is Failure /* ... */ public co.. 2025. 9. 22.
[Kotlin] 예외처리 runCatching를 알아보자! - try-catch 차이점 이번 공부 노트는 코틀린 예외처리 사용 시 유용하게 쓰이는 runCatching의 대해 적어보겠다. JAVA에서는 보통 예외처리 시 try-catch문을 통해 예외처리를 한다. 하지만 코틀린에서는 함수형 프로그래밍을 살린(코틀린다운) runCatching을 제공한다. # runCatching란?실제 코틀린 공식 문서에서 runCatching 내부 구현은 아래와 같이 되어있다.@InlineOnly@SinceKotlin("1.3")public inline fun runCatching(block: () -> R): Result { return try { Result.success(block()) } catch (e: Throwable) { Result.failure(e) .. 2025. 8. 10.
[Android-Compose] 안드로이드 컴포즈의 안정성(Stability) 2편 - @Stable, @Unstable 이번 2편에서는 컴파일러가 항상 완벽하게 stable을 판단해 주지 않기 때문에 내가 만든 클래스 혹은 객체가 실제로는 stable 한데 컴파일러는 unstable로 판단할 수 있는 현상을 해결하기 위한 방법을 알아보겠다.이해를 위해서 1편을 보고 오는 걸 추천한다.# @Stable, @Immutable 어노테이션컴파일러가 항상 완벽하게 판단해 주지 않기 때문에 내가 만든 클래스 혹은 객체가 실제로는 stable 한데 컴파일러는 unstable로 판단할 수 있다.그래서 @Stable, @Immutable 어노테이션을 우리가 적절히 활용해 직접 알려줘야 정확히 stable로 인식시킬 수 있다.## @Stable🔸 @Immutable 보다는 조금 느슨한 약속🔸 잠재적인 변경 가능성에도 불구하고 예측 가능.. 2025. 7. 26.
[Android-Compose] 안드로이드 컴포즈의 안정성(Stability) 1편 - Recompoition, stable, unstable 이번 공부 할 내용은 컴포즈의 안정성에 관한 내용이다. 컴포즈로 개발을 하다 보면 만든 컴포저블 함수가 자주 다시 호출(Recomposition)되는 경험이 있을 것이다. 텍스트 하나 바뀐 것도 아닌데 Text 컴포저블이 리컴포지션이 된다면 불필요한 리컴포지션이 된다.만약 계속 불필요한 리컴포지션이 일어나면 성능 저하로 이어질 수 있다. 그럼 컴포즈에서는 어떤 기준으로 리컴포지션을 발생시키고 불필요한 리컴포지션을 줄이는 방법 즉 안정성을 높이는 방법을 알아보자!# 리컴포지션(Recompoition)이란?Compose는 상태 기반 UI 프레임워크로 어떤 상태 값이 바뀌면 그 값을 사용하는 컴포저블 함수만 다시 실행된다. 이 과정을 리컴포지션(Recomposition)이라고 한다. 전체 UI를 다시 그리.. 2025. 6. 15.
[Android-Compose] 안드로이드 컴포즈 Icon vs Image 차이점 / 각 각 컴포저블 함수 알아보기 (Compose Icon, Image) 이번 포스팅은 간단하면서 궁금한 Icon 컴포저블과 Image 컴포저블의 차이점을 알아보겠다! 사실 둘 다 사진을 보여주는 컴포저블이라서 처음에는 어떤 경우에 Icon을 사용하고 어떤 경우에는 Image를 사용하는지 구분이 안 갔다.그래서 이번에 공부하는 겸 작성해보기로 했다.# Icon@Composablefun Icon( painter: Painter, contentDescription: String?, modifier: Modifier = Modifier, tint: Color = LocalContentColor.current.copy(alpha = LocalContentAlpha.current)) {......} 위 코드는 Icon 컴포저블 내부이다. 각 인자 별로 알아보자!위.. 2025. 5. 18.