Group Study (2023-2024)/Android 심화 5

[Android 심화] 5주차 스터디 - 의존성 주입(DI), Hilt, Room

의존성 주입(DI, Dependency Injection)이란? 외부에서 두 객체 간의 관계를 결정해 주는 디자인 패턴 의존성이란 한 객체가 다른 객체를 사용할 때 의존성이 있다고 한다. 예를 들어 다음과 같이 Car 객체가 Engine 객체를 사용하고 있는 경우에 Car 객체가 Engine 객체에 의존성이 있다고 표현한다. public class Car { private val engine = Engine() } 의존성 주입이 필요한 이유 의존성 주입을 하지 않은 경우 아래와 같이 Car 클래스 내부에서 Engine을 직접 생성하는 경우 의존성 주입이 이루어지지 않았다고 볼 수 있다. class Car { private val engine = Engine() fun start() { engine.sta..

[Android 심화] 4주차 스터디 - AAC ViewModel

ViewModel이란? business logic or screen level state holder It exposes state to the UI and encapsulates related business logic. Android Jepack의 구성요소 중 하나로 Activity와 fragment와 같은 UI 컨트롤러의 로직에서 데이터를 다루는 로직을 분리하기 위해 만들어졌다. 본래 ViewModel이란 이름은 소프트웨어 개발 디자인 패턴 중 하나인 MVVM(Model - View - ViewModel) 디자인 패턴으로부터 파생되었다. 이 글에서 설명할 ViewModel은 AAC(Android Architecture Components) ViewModel이다. ViewModel의 생명주기 View..

[Android 심화] 3주차 스터디 - Movie App 만들기(Scaffold, LazyColumn, Navigation)

위와 같은 화면을 만들기 위해 MovieRow라는 틀을 우선 만든 다음 LazyColumn을 이용해 영화 제목이 리스트 형식으로 보이도록 만든다. 그리고 화면 상단에 TopBar를 만들어주려면 Scaffold를 이용하여 구현한다. 화면에 대한 코드는 아래와 같다. class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { MyApp{ MainContent() } } } } @SuppressLint("UnusedMaterialScaffoldPaddingParameter") @Composable fun MyApp..

[Android 심화] 2주차 스터디 - Jetpack Compose 입문(2)

6. Scaffold, TextField, Button, 구조 분해, SnackBar, 코루틴 스코프 위와 같이 TextField에 문자를 입력한 다음 버튼을 누를 시 snackbar가 뜨는 화면을 만들어 보겠다. 먼저 textField를 만든다. setContent { val textValue=remember{ mutableStateOf("") } Column( modifier=Modifier.fillMaxSize(), verticalArrangement= Arrangement.Center, horizontalAlignment= Alignment.CenterHorizontally, ){ TextField( value=textValue.value, onValueChange={ tex..

[Android 심화] 1주차 스터디 - Jetpack Compose 입문(1)

Jetpack Compose란? Android 앱의 사용자 인터페이스(UI)를 구축하는 데 사용되는 UI 라이브러리 1. Column, Row, Text Column: 수직 방향으로 UI 요소를 배치하는 레이아웃 컴포저 Row: 수평 방향으로 UI 요소를 배치하는 레이아웃 컴포저 Text: 텍스트를 화면에 표시하기 위한 Composable Modifier: Composable 요소의 스타일, 크기, 여백, 패딩 등을 제어하기 위한 도구 Arrangement(정렬) 및 Alignment(배치) : Arrangement와 Alignment는 Composable 요소의 정렬 및 간격을 조절하는 열거형이다. Arrangement는 컨테이너의 수평 방향 배치, Alignment은 컨테이너의 수직 방향 정렬과 관계..