전체 글(728)
-
Composable #6 - Clean Architecture
Clearn Architecture핵심 비즈니스 로직을 외부 환경으로부터 안전하게 보호할 수 있을까?-> 결국 모듈러리티 향상 이것에 대한 방법(패턴) 중 하나가 clearn architecture로 domain logic을 의존성 역전 원칙을 통해 보호하자! 는 것 layered architectureUI -> domain -> persistence -> Infra각 layer는 하위 layer에 의존entity는 보통 persistence layer 에 위치 이러한 의존성은, 유연성 저하 - DB의 변경등이 도메인 계층의 서비스 변경을 야기할 수 있음테스트의 어려움 - 한 레이어의 테스트를 위해 하위 레이어들 모두 필요 각 레이어의 크기 등에대한 구체적인 guideline이 없음 -> 복잡한 모듈이 ..
2026.10.05 -
Compose #5 - Modern Architecture
About Modern Architecture복잡할 수록 유연하고 테스트 가능한 구조를 만드는 것은 앱의 필수 조건이를 돕는 설계 구조 관심사 분리역할과 책임을 엄격히 나누는 방향으로 진화과거 액티비티가 UI 업데이트와 데이터 가져오기, 비즈니스 로직 등 다양한 책음을 맡는 경우가 많았음단위 테스트가 어렵고, 코드의 길이가 길어지고 복잡해져서 유지 보수가 어려웠음또한 생명주기 관리도 어려웠음 UI 로직과 도메인 모델을 다루는 비즈니스 로직은 서로 다른 추상 수준을 지님 모던 아키텍처2017년 Google I/O 행사에서 모던 아키텍처 내용이 소개됨구글이 제공하는 젯팩 라이브러리와 MVVM 패턴, 그리고 클린 아키텍처를 적용하여 코드의 책임을 명확히 분리하고 앱의 복잡성을 줄임 여기서 권장되는 앱 아키텍처..
2026.10.04 -
Compose #5 - Modifier, Layout, Canvas, Theme
Modifier는 UI 구성 요소와 공통적으로 적용되는 스타일, 배치, 동작을 한 곳에서 정의하는 것을 지원하는 스타일 파이프라인메서드 체이닝으로 메서드를 연속으로 호출하여 스타일을 적용하기 때문에 파이프라인 private object MyModifier : DrawModifier { override fun ContentDrawScope.draw() { drawRect(color = Color.Red) drawContent() }}fun Modifier.drawRedBackground(): Modifier = this.then(MyModifier) this.then에서 두 객체를 하나의 객체로 체인 구성 UI 컴포넌트 별로 지원하는 Modifier들이 상이함clickable()..
2026.10.03 -
Compose #4 - layout
Column수직으로 배치@Composableinline fun Column( modifier: Modifier = Modifier, verticalArrangement: Arrangement.Vertical = Arrangement.Top, horizontalAlignment: Alignment.Horizontal = Alignment.Start, content: @Composable ColumnScope.() -> Unit) Row수평으로 배치 Row( modifier = Modifier .padding(16.dp) .fillMaxWidt..
2026.09.27 -
Compose #3 - components
상호작용 컴포넌트Button, TextField, Checkbox, Switch, Slider 등 Button( onClick = { count += 1 }, modifier = Modifier.padding(8.dp)) { Text("click", fontSize = 18.sp)} 버튼 컴포저블의 주요 속성 - Modifier - onClick - enabled - shape: 버튼의 모서리 모양(둥글기, 각짐 등) - elevation: 버튼의 그림자 깊이 설정 - colors: 배경색, 텍스트 색상 등 - border: 외고가선 두께와 색상 - interactionSource: 클릭, 포커스, 호버 등 사용자 상호작용 추적 - contentPadding: 버튼 내부 내용에 대한 여백 설정 - ..
2026.09.27 -
Compose #2 - 컴포즈
val items by remember { mutableStateOf(1)}젯팩 컴포즈선언적 UI 툴킷 전통적인 XML 방식에서 벗어나 코드로 UI를 직관적이로 빠르게 작성 가능 UI toolkitUI를 설계하고 구현하는 도구와 라이브러리 집합 뷰 시스템초기 안드로이드부터 사용된 전통적인 UI 프레임워크XML 레이아웃과 뷰 클래스를 기반으로 UI 를 구성뷰와 뷰 그룹에는 LinearLayout, ConstraintLayout 등XML 파일로 화면을 정의이후 코드에서 findViewById를 통해 뷰를 조작 젯팩 컴포즈2019 Google I/O에서 소개2021년 7월 1.0 출시 주요 구성 요소State, MutableState, Material Design components Why 선언적?동적 ..
2026.09.27