![[Compose] Preview에 Viewmodel 연결하기](http://i1.daumcdn.net/thumb/C120x120/?fname=https://blog.kakaocdn.net/dn/tjJpt/btso9gKtNwd/vllqrETJLPyJ9r0817VH90/img.jpg)
[Compose] Preview에 Viewmodel 연결하기
Jetpack Compose로 개발 중에 Preview에 Viewmdodel을 적용하는 코드를 작성한다. @Preview(showBackground = true) @Composable fun DefaultPreview2() { MyFoodDiaryBookAOSTheme { MainUi(todayViewModel = TodayViewModel()) } } Main화면을 담당하는 MainUi 적용 시, 위와 같이 뷰 모델을 적용해야 했다. 하지만 ComponentActivity 내부에서 viewmodel을 선언해서 사용해야하는데, MainUi 함수의 경우 따로 뷰 모델을 선언할 수 있는 코드를 작성할 수 없다. 따라서 적용하려 하는 뷰 모델의 껍데기 역할을 담당하는 FakeViewModel을 만들어서 Pre..
- Deep Dive/Android Jetpack Compose
- · 2023. 7. 26.
[DI,Android] Dagger2, Hilt 없이 의존성 주입 사용해보기
스터디 목적 DI의 원리를 이해하기 위해서 Dagger2와 Hilt 같은 의존성 라이브러리 없이 로그인 플로우를 구현하는 방식을 배운다. 의존성 라이브러리를 사용하지 않고 구현했을 경우, 차이점과 필요성을 알 수 있다. 우선 프로젝트 구조는 아래와 같다. [ Login Activity ] - > [ Login ViewModel ] - > [ UserRepository ] - > [ UserLocalDataSource ] - > [ UserRemoteDataSource ] - > [ Retrofit ] Login Activity에서 사용자가 데이터에 접근하면, Login ViewModel에 접근할 수 있다. Login Viewmodel은 userRepository를 생성해서 기능을 사용하게 되는데, use..
- [Android] Architecture/[Android] DI
- · 2023. 7. 25.
![[Android] Jetpack Compose (3)](http://i1.daumcdn.net/thumb/C120x120/?fname=https://blog.kakaocdn.net/dn/cgjYMZ/btsoTnwTEWx/zVW7k5ryRf1MNKPpDVa7s1/img.jpg)
[Android] Jetpack Compose (3)
https://developer.android.com/codelabs/jetpack-compose-migration?hl=ko#0 마지막으로 Compose를 활용해서 리스트 목록과 애니메이션을 추가하는 기능을 알아봤다. Jetpack Compose에서는 리싸이클러뷰처럼 어댑터와 레이아웃을 작성할 필요가 없다. LazyColumn, LazyRow, LazyVerticalGrid 처럼 Composable 함수를 사용해서 작성한다. Compose 함수로 UI를 구성할 때, Ui 상태를 저장하기 위해서 메시지 확장을 추적해야 한다. 이 추적 기능을 구현하기 위해서 remember와 mutableStateOf 함수를 사용해야 한다. Message Card 생성 리스트 뷰의 각 아이템에 애니메이션을 적용하고, 아이..
- Deep Dive/Android Jetpack Compose
- · 2023. 7. 25.
![[Android] Jetpack Compose (2)](http://i1.daumcdn.net/thumb/C120x120/?fname=https://blog.kakaocdn.net/dn/cO1HNX/btslmULcPw9/4QTTqGwmvgRe9fMQIKPHQk/tfile.png)
[Android] Jetpack Compose (2)
UI 디자인하기 이전 포스팅에서 text뷰와 textField를 jetpack Compose 방식으로 적용하는 방법을 배웠다. 이제 화면을 담당하는 레이아웃과 그 내부의 코드를 작성하는 방법을 공부해야 한다. 이 방식을 익혀서 Activity에서 xml을 통해 작성한 레이아웃을 Jetpack Compose로 구현하는 연습을 한다. 연속 텍스트와 이미지 적용하기 구성 함수를 통해서 UI 계층 구조를 빌드하는 과정으로 연속 텍스트와 이미지를 적용한다. 간단한 메시지 함수를 빌드하고, 메시지를 표현하는 코드를 작성했다. 우선 메시지 데이터를 나타낼 data class를 선언했다. // 여러 텍스트 추가 data class Message( val author : String, val body : String, ..
- Deep Dive/Android Jetpack Compose
- · 2023. 6. 25.
![[Android] Jetpack Compose (1)](http://i1.daumcdn.net/thumb/C120x120/?fname=https://blog.kakaocdn.net/dn/cd892z/btslghmBCw1/GKNQknhLu5jZcJV4tsuP1k/img.png)
[Android] Jetpack Compose (1)
아래 블로그 포스팅을 참고했습니다. https://blog.mathpresso.com/jetpack-compose-%EB%A1%9C-%EA%B8%B0%EB%8A%A5%EC%A0%84%EC%B2%B4%EB%A5%BC-refactoring-%ED%95%B4%EB%B3%B4%EC%9E%90-2b921c624e80 요즘 핫🔥-한 Jetpack Compose 로 기능 하나를 통째로 Refactoring 해보기 곧 몰아칠 새로운 UI 개발 패러다임에 대비해보자 blog.mathpresso.com Jetpack Compose SwiftUI, Flutter 와 같은 선언형 UI 기존의 안드로이드의 XML이나 IOS의 StoryBoard로 작성하는 방식은 특정 상태에 따라 UI를 어떻게 보여줄 지를 구상하여 구현하게 된..
- Deep Dive/Android Jetpack Compose
- · 2023. 6. 25.

안드로이드 의존성 주입과 Hilt (2)
Hilt의 주요 Annotaion 1>HiltAndroidApp 기존의 컴포넌트 생성은 아래의 코드와 같이 onCreate()에서 컴포넌트를 인스턴스화 하였다. hiltAndroidApp 어노테이션만 추가함으로써 컴포넌트를 인스턴스화 할 수 있다. 이 때 의존성 주입은 super.onCreate()에서 이루어진다. 바이트코드 변환 때문에 onCreate에서 컴포넌트 인스턴스 생성이 가능해진다. HiltAndroidApp은 Hilt 코드 생성을 시작하고 반드시 Application 클래스에 추가해야 한다. [ByteCode Transformation] 바이트 코드 변환을 통해서 MemoApplication 클래스는 Hilt_MemoApplication을 상속받을 필요 없이, Application() 상속만..
- [Android] Architecture/[Android] DI
- · 2023. 6. 25.