안드로이드 [Kotlin] - Clean Architecture / 모듈화(2)
2023. 7. 9. 20:11
Android
01. 모듈 01-1. 모듈이란 공식문서에 따르면 모듈의 정의는 다음과 같다. 모듈은 소스 파일 및 빌드 설정으로 구성된 모음이며, 이를 통해 프로젝트를 별개의 기능 단위로 분할할 수 있습니다. 프로젝트에는 하나 이상의 모듈이 포함될 수 있으며, 하나의 모듈이 다른 모듈을 종속성으로 사용할 수 있습니다. 각 모듈은 개별적으로 빌드, 테스트 및 디버그할 수 있습니다. 위의 설명처럼 모듈은 각각 소스 파일과 빌드 설정으로 구성된 모음이다. 위와 같이 안드로이드 스튜디오에서 프로젝트를 생성하고 항상 당연하게 보았던 app 역시 하나의 모듈이다. 최근에는 앱 모듈(app 모듈)에 모든 코드를 작성(모놀리틱 프로그래밍)하지 않고, data나 domain 등의 모듈로 세분화 시켜 개발한 뒤 최종적으로 프로덕트를 ..
안드로이드 [Kotlin] - Clean Architecture / 모듈화(1)
2023. 7. 1. 18:59
Android
01. 소프트웨어 아키텍처 소프트웨어가 제공하는 가치는 '기능'과 '구조', 두 가지가 있다. 이 중 아키텍처는 구조에 해당한다. 보통 우리는 소프트웨어를 개발할 때 기능에 집중한다. 하지만 로버트 C.마틴은 소프트웨어에서 기능보가 구조가 더 중요하다고 말한다. 처음 프로젝트를 시작할 때는 프로젝트를 생성하고 신규 기능을 구현하는 코드를 작성하는 일만 하기 때문에 구조가 크게 필요하지 않다. 하지만 프로젝트가 어느정도 안정화되고 유지보수가 필요한 시점이 오게되면 이야기가 달라진다. 우리는 프로그램에 더 정확히, 더 빠르게. 더 많은 일을 시키기 위해 코드를 읽고, 이해하고, 수정 및 추가하는 작업을 하게 된다. 이를 앱을 유지보수 한다고 말할 수 있다. 이러한 유지보수를 수월..
안드로이드 [Kotlin] - Jetpack Compose 코트랩 실습(3)
2023. 6. 18. 21:18
Android
Compose UI 설계 단방향 데이터 흐름 State를 더 잘 이해하려면 기존의 View System의 흐름에 대해 알아야한다. View System 사용자가 버튼을 클릭 Click Event가 발생 Event Handler가 상태를 업데이트 상태와 관련된 UI가 새로 업데이트 구조화 되지 않은 상태 사용자가 이름을 입력하면 바로 화면에 "Hello 이름" 이 출력되도록 하려 한다. 구현하는 한가지 방법은 TextView에 이벤트 콜백을 추가하는 것이다. class HelloCodelabActivity : AppCompatActivity() { private lateinit var binding: ActivityHelloCodelabBinding // ViewBinding 사용 var name = ""..
안드로이드 [Kotlin] - Jetpack Compose 코트랩 실습(2)
2023. 5. 21. 20:24
Android
Material Theming Material Theme Jetpack Compose에서 테마 설정을 구현하는 핵심 요소는 MaterialTheme 컴포저블이다. 이 컴포저블을 Compose 계층 구조에 배치하면 그 구성요소의 Color, Typography, Shape 등을 설정할 수 있다. @Composable fun MaterialTheme( colors: Colors, typography: Typography, shapes: Shapes, content: @Composable () -> Unit ) { ... 나중에 colors, typography, shapes 속성을 노출하는 MaterialTheme object를 사용하여 이 컴포저블에 전달된 매개변수를 검색할 수 있다. 테마 만들기 스타일을..
안드로이드 [Kotlin] - Jetpack Compose 코트랩 실습(1)
2023. 5. 7. 20:25
Android
코드랩 실습 (Layout In Jetpack Compose) 시작하기 표준 레이아웃 컴포넌트들을 사용하여 다음과 같은 UI를 만들 수 있다. Modifiers 검색창을 구현하려면 TextField라는 Material 구성 요소를 사용해야 한다. Compose Material 라이브러리에는 이 Material 구성요소의 구현인 TextField 라는 컴포저블이 존재한다. @Composable fun SearchBar( modifier: Modifier = Modifier ) { TextField( value = "", onValueChange = {}, modifier = modifier .fillMaxWidth() .heightIn(min = 56.dp) ) } 검색창은 높이가 최소 56dp이고 너비가..