본문 바로가기

개발일지

(43)
[Android] Jetpack Compose ViewModel 추가 ViewModel을 사용하면 액티비티가 소멸되고 다시 생성될 때 폐기되지 않는 앱 관련 데이터를 저장한다. 즉, ViewModel 객체는 소멸되지 않는다. 앱은 자동으로 ViewModel 객체를 유지하므로 객체가 보유하고 있는 데이터를 재구성하여 즉시 사용할 수 있다 아키텍처 구성요소 라이브러리에서 가져온 ViewModel 클래스를 확장하고 이 클래스 내에 앱 데이터를 저장하여 ViewModel 을 구현한다! 1. 종속성 추가 implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.1") Compose 앱에 수명 주기 인식 ViewModel을 추가하는 데 사용된다. 2. 클래스 생성 ui 패키지에 ViewModel 클래스를 만든다. impo..
[Android] Compose - 이미지, 구분선, 텍스트, Preview, Button, 툴바 이미지 Image( painter = painterResource(id = R.drawable.ic_message), contentDescription = "공지사항 아이콘", Modifier .width(25.dp) .height(25.dp) ) Image의 painter로 리소스 불러오기 4px로 png 저장해도 깨짐 현상 없음! 구분선 // 구분선 Divider( color = Color.Black, modifier = Modifier.fillMaxWidth() .height(1.dp) .padding(start = 8.dp, end = 8.dp) ) 공식문서를 참조했다 Compose 레이아웃의 내장 기능 측정 | Jetpack Compose | Android Developers Compose 레이..
[Git] Git 협업 - Branch, Issue, Project, Code Review, WebHook 동아리에서 여름방학 앱 프로젝트를 시작하면서, 깃 협업에 대한 공부를 해보았다. 1. 브랜치 관리 git flow 협업 방식 feature : 새로운 기능 개발 네이밍) feature/7-kakaoLogin develop : feature에서 기능 개발이 끝난 후 develop 에 merge release : 배포 준비가 되면 develop 브랜치에서 release 브랜치로 merge 네이밍) release/v1.1 hotfix : master 브랜치로 배포 후 버그가 생기면 긴급 수정 네이밍) hotfix/v1.0.1 2. 코드리뷰 https://mine-it-record.tistory.com/692 위 글을 참고하여, Pull Request시 최소 2명이 코드 리뷰를 남겨야 PR 할 수 있도록 설정할..
[Android] 클린 아키텍처 (Clean Architecture) 안드로이드 공식 홈페이지의 아키텍처 권장 가이드에서 "관심사의 분리"를 강조한다 UI Layer, Domain Layer, Data Layer 3가지 레이어의 역할에 대해 공부해보자 위 Layer 모듈들은 단방향의 참조를 한다 단방향 데이터 흐름이란? 데이터가 오로지 한 방향으로만 흐르는 것 ex) 사용자의 클릭 이벤트 발생 - Up Stream : Ui -> Domain -> Data 상위 레이어로 전달 - Down Stream : Data -> Domain -> Ui 하위 레이어로 전달 UI Layer UI Layer에 해당하는 모듈 - UI Elements Module : Activity/Fragment + xml view / Compose UI - UI State Holder Module : Vi..
[Android] Retrofit2 활용하여 API 연동 실전 예제 1. 종속성 추가 Retrofit /* Retrofit */ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' /* OkHttp */ implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.2' 2. Manifest 인터넷 권한 설정 안드로이드에서는 http 지원 X → API 주소가 http일 경우 추가 **** 3. RetrofitClient 생성 baseURL은 꼭 ‘/’ 로 마쳐야 오류가 나지 않는다 Object 파일 RetrofitClient.kt package com.example.tavecon..
[Kotlin] Compose 입문 #5 - State 심화 **class StateViewModel: ViewModel() { private val _value = mutableStateOf("Hello World") val value: State = _value }** mutableState → [var] 읽기, 쓰기 모두 가능 operator fun component가 있는데 getter, setter의 역할 State → [val] 읽기만 가능 fun HomeScreen(viewModel: StateViewModel = androidx.lifecycle.viewmodel.compose.viewModel()) { var text1: MutableState = remember { mutableStateOf("Hello World") } // 구조분해 var (..
[Kotlin] Compose 입문 #4 - ViewModel ViewModel을 사용하지 않고, 버튼 클릭시 텍스트 변경하기 setContent { // 변경 가능한 State 변수를 만든다 // remember가 없으면 상태값 변경 시 setContent를 다시 돌면서 다시 Hello로 초기화 한다 // remember로 상태 변수를 기억하게 ! val data = remember { mutableStateOf("Hello") } Column ( modifier = Modifier.fillMaxSize(), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally, ) { Text( data.value, fontSize = 30.sp, ) Button(o..
[Kotlin] Compose 입문 #3 - Navigation, 화면 전환, 값 넘겨주기 Gradle 추가 // Navigation implementation "androidx.navigation:navigation-compose:2.4.0-alpha10" 초기 세팅 setContent { val navController = rememberNavController() NavHost( navController = navController, startDestination = "first", // 첫 번째로 표시할 내용 ) { // 화면을 표시할 내용들을 composable로 지정 composable("first") { FirstScreen() } composable("second") { SecondScreen() } composable("third") { ThirdScreen() } } } } ..