android compose 14

[Compose] LazyColumn 성능을 위해

✅ LazyColumn이란?- Compose에서 RecyclerView를 대체하는 스크롤 가능한 Composable- 내부적으로 보이는 항목만 그림 (지연 로딩)- 데이터가 많아질수록 Recomposition에 주의 사용하면서 느낀 성능 관련 주의점 key 설정 필요- Recomposition의 기준 설정LazyColumn { items(list) { item -> Text(item.name) }}key를 설정하지 않으면 → Compose는 index를 기준으로 recomposition 설정 만약, 리스트에서 요소가 삽입, 삭제되면 → 순서 바뀌면서 다시 그려짐 (☠️ 성능 낭비)✅ 해결 방법:LazyColumn { items(list, key = { it.id }) { it..

🤖 Compose 2025.05.13

[Android / Compose] Compose Context

까먹기 전에 줍줍..🎯 XML vs Compose의 "생명주기 + context" 구조 차이 XML 기반Activity나 Fragment가 View를 직접 소유View는 Activity가 죽을 때 context도 같이 정리됨 → context를 View 내부에서 써도 큰 문제가 없다 즉, UI는 생명주기를 따라감 Compose 기반UI 자체가 "함수로 구성된 상태 기반 UI"상태에 따라 UI가 수시로 재구성(recomposition) 되기에 Activity와 느슨하게 연결됨그래서 UI 함수 내에서 context를 막 쓰면, 그 시점에 context가 유효하지 않을 수 있음 XML : context가 항상 Activity와 뷰 안에 있고, 생명주기를 같이 가져가니까 자유롭게 써도 괜찮았지만,Comp..

🤖 Compose 2025.05.11

[Compose] 의존성 주입 (Dependency Injection) (ft.hilt)

우선, 라이브러리 적용이 필요합니다 (dagger, hilt)[versions]//...daggerVersion = "2.48"hiltVersion = "1.2.0"retrofitVersion = "2.9.0"gsonVersion = "2.10.1"[libraries]//...dagger-android = { group = "com.google.dagger", name = "hilt-android", version.ref = "daggerVersion" }hilt-compose = { group = "androidx.hilt", name = "hilt-navigation-compose", version.ref = "hiltVersion" }androidx-gson = { group = "com.googl..

🤖 Compose 2025.02.11

[Compose] 안정성 stability

안정성에 관해서도 가장 중요한 키워드는 Smart Recomposition 같아요  Smart Recomposition- composition 함수에서 사용되는 데이터가 변경된 데이터의 함수만 재호출 즉 일부분의 ui만 업데이트 - 성능 최적화  이 때 compose는 필요한 recomposition임을 어떻게 구분할까 ?  -> paramater로 구분 크게 3가지로 나눠본다면  Stable parameters - 변경 시 컴포지션에서 추적이 가능하기 때문에 smart recomposition이 가능 - 즉, 변경 사항이 없다면 compose는 skip Unstable parameters - 변경 시 컴포지션에서 추적이 불가 -> 데이터의 변경 사항의 유무와 관계 없이 무조건 Recomposition-..

🤖 Compose 2025.02.09

[Compose] Compose의 LifeCycle

⭐️ Smart Recomposition- composition 함수에서 사용되는 데이터가 변경된 데이터의 함수만 재호출 즉 일부분의 ui만 업데이트 - 성능 최적화   Compose의 Lifecycle - composition : 컴포저블 함수가 호출되어 UI 트리를 구성하는 과정으로 여러 개의 컴포저블이 결합되어 최종 UI 생성, 즉 초기 UI를 설정하는 단계- recomposition : 상태가 변경되어 UI가 다시 그려지는 과정, 상태 변화를 감지하고 영향을 받는 부분만 업데이트 (최적화 하는 것이 제일 중요)- disposal : composable이 소멸, 리소스 해제  recomposition의 최적화를 위해서 생명주기를 아는 것이 중요합니다 만약 아래와 같이 코드를 사용한다고 하면, @Co..

🤖 Compose 2025.01.27

[Compose] Animation

AnimatedVisibility- visibility에 Animated 적용- Transition이 enter, exit 따로 나눠져있다- FadeTransition:  나타날 때, 사라질 때 투명도를 조절해 부드럽게 변하는 효과- SlideTransition:  화면의 한 쪽에서 다른 쪽으로 이동하며 나타나고 사라지는 효과- ExpandTransition:  펼쳐지거나 축소되며 나타나고 사라지는 효과, 주로 패널이나 리스트 항목에 사용- ScaleTransition:  크기를 확대하거나 축소하면서 나타나거나 사라지는 효과 이런 식으로 사용 ..! textVisible은 아래와 같이 선언되어있다 var textVisible by remember { mutableStateOf(false) } Animat..

🤖 Compose 2025.01.08

[Compose] scaffold

scaffold- slot api의 확장 - paramater로 여러 슬롯을 제공하여 다양한 UI(ex : topBar, bottomBar, floatingActionButton, drawerContent, content)을 쉽게 정의하고 구성 가능 - 기본틀로 사용하면 체계적으로 개발하기 좋다  - Scaffold는 기본적으로 content 슬롯에 패딩을 적용해야하고 아니면 아래와 같은 에러가 뜬다 Content padding parameter it is not used More  @OptIn(ExperimentalMaterial3Api::class)@Composablefun ScaffoldTest() { var checked by remember { mutableStateOf(false) } ..

🤖 Compose 2025.01.06