Language \ Framework/Kotlin(Android) 5

[Android] ViewModel 간단 정리

1. ViewModel의 역할ViewModel은 화면의 상태(State)를 관리하는 역할을 합니다.UI에 필요한 비즈니스 로직을 ViewModel에서 처리함으로써,UI 코드와 비즈니스 로직을 명확하게 분리할 수 있습니다.또한 ViewModel은 화면 구성 변경(예: 가로/세로 회전) 이 발생하더라도데이터를 유지할 수 있기 때문에 안정적인 화면 상태 관리를 가능하게 합니다. 2. remember / rememberSaveableremember와 rememberSaveable을 사용해도 상태 관리는 가능합니다.두 API 모두 상태를 기억한다는 공통점이 있지만, 동작 방식에는 차이가 있습니다.항목구성 변경(회전 등) 시 값 유지직렬화 필요비고항목구성 변경 시 값 유지 상태직렬화 필요비고remember❌ 초기화..

[Android] Jetpack Compose - Navigation

먼저 Navigation을 설명하기 전에,Jetpack Compose의 화면 전환에 대한 이해가 조금 필요하다.Compose는 Activity가 하나만 있고, Single Activity안에서 Navigation을 통해 화면을 전환한다.화면은 @Composable 함수로 구현되고 갱신은 Recomposition을 통해 이루어진다. 상태는 ViewModel, State로 관리한다.blue book Recomposition은 상태가 변경될 때, UI 갱신하는 것을 의미한다.다른 웹프레임워크 처럼, 상태변수 값이 변경 되면, 관련 된 UI가 갱신 된다.사용법먼저 build.gradle.kt(app) > dependencies에 다음을 추가해준다 implementation("androidx.navigation:..

[Android] Jetpack Compose 기본 컴포넌트

1. ScaffoldScaffold는 화면의 기본 레이아웃을 담당한다.아래와 같이 사용 가능하다.내용에 보면 innerPadding 이라는 Scaffold에서 자체적으로 넘겨주는 파라미터가 있다.PaddingValues 타입의 값을 넘겨주는데, 기기 상단(푸시아이콘, 시간 등)과 하단의 공간 Padding 값이다.이 값을 사용하지 않으면, 상단과 하단의 공간까지 전체를 차지하여 표시한다.@Composablefun ScaffoldTemplate() { Scaffold( contentWindowInsets = WindowInsets.safeDrawing, topBar = { TopAppBar( title = { Text("타이틀") }, ) },..

[Kotlin] 기본 문법 예제

1. 함수fun helloWorld(): Unit { // Unit -> void 와 같음. println("Hello World") } fun add(a: Int, b: Int): Int { return a + b } // 아래처럼 축약 가능 fun add(a: Int, b: Int): Int = a + b 2. 변수기본적으로 val, var 변수가 있다.타입 뒤에 ?를 붙여서 nullable 여부도 지정이 가능하다.Nullable, NonNull에 대해서는 다른 글에서 설명fun hi() { val a: Int = 10 // val은 변할 수 없음 - 상수 var b: Int = 10 // var은 재대입 가능 val c = 100 // type은 써주지 않아도 상관없음 - ..

[Kotlin] 기본 문법 비교 (vs Java)

1. 기본 문법 비교(vs Java) 항목JavaKotlin비고클래스 정의public class Person {}class Person접근제한자 기본값: Java=default, Kotlin=public변수 선언int a = 10;val a = 10 (불변), var a = 10 (가변)Null 안전성String s = null; (가능)var s: String? = null? 붙여야 null 허용. 컴파일러가 NPE 방지문자열 템플릿"Hello " + name"Hello $name" 또는 "Hello ${user.name}"조건문if(...) { ... } else { ... }동일, 하지만 표현식 가능: val max = if (a > b) a else bKotlin은 값 반환 가능삼항 연산자int ..