본문 바로가기

전체 글

(47)
[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() } } } } ..
[Kotlin] Compose 입문 #2 - Image, Card, Scaffold, TextField, 구조분해, 코루틴 스코프 CardView와 동일한 기능을 하는 Card // CardView와 동일한 기능 Card( modifier = Modifier .fillMaxWidth(0.5f) .padding(16.dp), // fraction으로 비율 지정 : 절반 shape = RoundedCornerShape(8.dp), // 모서리 둥글게 elevation = 5.dp, ) { Box( modifier = Modifier.height(200.dp) ) { // Image 소스를 가져올 때는 painter 사용 Image( painter = painterResource(id = R.drawable.umc), contentDescription = "설명 : 인생네컷", contentScale = ContentScale.Crop,..
[Kotlin] Compose 입문 #1 - Column, Row, 컴포저블, 리스트 Compose가 뭔데! xml 없이 화면 UI 구성할 수 있는 툴 제트팩 컴포즈 모던 안드로이드 컴포즈 입문을 통해 공부해 보도록 하겠다 일단 나는 플라밍고 버전을 쓰고있었고, New Project를 하니 Empty Compose Activity가 나오지 않았다 해커톤 협업하느라 버전 업그레이드를 했는데 다시 다운그레이드 해보자 Electric Eel 2022.1.1 버전으로 다운그레이드 했다 이 과정에서 안드로이드 이전 버전이 2021년까지만 뜨는 현상이 있었는데 언어 설정을 영어로 바꾸니 목록이 정상적으로 모두 떴다 아무튼 ! 버전 다운그레이드 하니 Empty Compose Activity 뜬다 짝짝 Column, Row, Text Like,, Linear Layout Column{} -> 수직으로 ..
[Kotlin] 형변환과 배열, 타입추론과 함수 명시적 형변환 : 자료형을 개발자가 직접 지정한다 var a: Int = 54321 var b: Long = a.toLong() // int -> long 형변환 암시적 형변환 : 자료형을 지정하지 않아도 자동으로 형변환 된다 코틀린은 암시적 형변환을 지원하지 않는다 배열 기본적인 배열 선언 var intArr = arrayOf(1, 2, 3, 4, 5) 특정한 크기의 공간을 가지는 비어있는 배열 만들기 var nullArr = arrayOfNulls(5) 꺾쇄 안에 배열에 할당할 자료형을 지정한다 : Int형 자료형 괄호 ()안에 배열 크기 지정 (5) : 크기 5 intArr[2] = 8 인덱스 위치는 0부터 시작 ! intArr[2]는 3의 값을 가졌다가, 8을 할당받으면서 8의 값을 가지게 된다 ..
[Android] Android Architecture Pattern MVC, MVP, MVVM 패턴 등 ... 검색을 하면 디자인 패턴이라고 하기도, 아키텍처 패턴이라고 하기도 한다 디자인 패턴(Design Pattern) : 소프트웨어 디자인에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책 : 문제들을 해결하는 데 상황에 맞게 사용될 수 있는 해결책 템플릿을 의미한다 : 프로그래머가 애플리케이션, 시스템을 디자인할 때 공통적인 문제들을 해결하는데 쓰이는 형식화된 패턴 아키텍처 패턴(Architecture Pattern) : 디자인 패턴과 유사하지만 범위가 더 넓으며, 소프트웨어 공학의 다양한 문제를 해결한다 : 일부 아키텍처 패턴은 SW 프레임워크 안에 구현되어 있다 : 아키텍처 패턴은 시스템의 이미지를 전달하긴 하지만 아키텍처 자체를 의미하지는 않는다 : 다..