Jetpack Compose 레이아웃 시작하기 Jetpack Compose는 UI를 위한 라이브러리이므로, UI컴포넌트를 화면상에 배치하기 위한 Layout이 존재한다. 만약 Layout을 지정하지 않고 이모지와 텍스트를 써보면 다음과 같이 나타난다. @Preview @Composable fun TestView(){ EmojiView() TitleView() } 우리는 여기에 Column 레이아웃을 추가하여 다음과 같이 바꿀 수 있다. @Preview @Composable fun TestView(){ Column() { EmojiView() TitleView() } } 레이아웃은 위젯을 원하는 위치에 배치시켜 자신이 원하는 뷰를 만들기 위한 필수 사항이다. 자 이제 Compose에는 어떤 레이아웃이 지원..
분류 전체보기
기존 명령형 패러다임을 이용하여 UI를 그릴 때의 한계점 기존 안드로이드는 xml을 이용한 명령형 프로그래밍 패러다임을 따르는 UI Kit을 이용하여 UI를 그리고 있었다. 우리는 안드로이드 위젯을 업데이트 하기 위해서 아래와 같은 findViewById()와 같은 함수를 이용하여 트리를 탐색한 후 setter을 호출하여 위젯을 변경하였다. findViewById(R.id.blog_title_text).text = "Kotlin World" 위 코드가 실행되면 TextView는 text 프로퍼티에 Kotlin World라는 State를 직접 가지고 있게 된다. 이렇게 View가 직접 State를 가지고 있는 것을 Stateful하다고 한다. 하지만 이러한 방식의 뷰 조작은 오류를 발생할 가능성을 높인다...
Coroutine의 Flow는 데이터 스트림이며, 코루틴 상에서 리액티브 프로그래밍 지원 하기 위한 구성요소이다. 이를 이해하기 위해서는 먼저 리액티브(반응형) 프로그래밍이 무엇인지, 그리고 Flow가 리액티브 프로그래밍에 대응하여 어떠한 역할을 하는지를 알아야 한다. 리액티브 프로그래밍이란? 리액티브 프로그래밍이란 데이터가 변경 될 때 이벤트를 발생시켜서 데이터를 계속해서 전달하도록 하는 프로그래밍 방식을 뜻한다. 이는 기존의 명령형 프로그래밍과 대응되는 개념인데 이에 대한 내용은 [RxJava] 반응형 프로그래밍 이해하기 글에 잘 설명되어 있다. 만약 리액티브 프로그래밍에 대해 잘 모른다면 위 글을 읽고 오자. 기존 명령형 프로그래밍에서는 데이터의 소비자는 데이터를 요청한 후 받은 결과값을 일회성으로..
Kotlin에서는 var을 읽기와 쓰기가 모두 가능한 가변 변수로 val을 읽기만 가능하면 불변 변수로 정의한다. 하지만, 실제로는 var은 물론 val 또한 엄밀한 의미의 불변이 아니다. 지금부터 이유를 알아보도록 하자. 변수에 값을 할당하는 것은 정확히 말하면 메모리 공간을 할당하는 것이다. 다음의 코드를 예시로 들어보자. val blogName = "Kotlin World" var date = "2021-10-02" 위의 코드를 실행하면 blogName이라는 변수값이 정해지고 해당 변수값을 참조했을 때 "Kotlin World"가 저장된 메모리 공간을 반환한다. date라는 변수값은 "2021-10-02"가 저장된 메모리 공간을 반환한다. var date = "2021-10-02" date = "2..
라이브러리와 프레임워크의 차이점 라이브러리와 프레임워크의 중요한 차이점은 내가 작성한 코드에 대한 제어 권한이 어느 쪽이 있는지이다. 라이브러리가 복잡해지면 프레임워크가 된다는 말이 있다. 이것은 사실이지만, 사실이 아니기도 하다. 우리는 흔히 재사용 가능한 코드를 라이브러리로 만든다. 한 번 작성된 라이브러리는 재사용이 가능해서 코드의 중복 작성을 줄여준다. 대표적인 라이브러리로는 대부분의 언어에 있는 Math 라이브러리가 있다. Math 라이브러리를 이용하면 반올림, 내림, 올림 등 다양한 연산을 손쉽게 할 수 있도록 만들어준다. 코드에 대한 제어 권한이 없는 라이브러리 Math 라이브러리에서는 우리는 우리가 원하는대로 올림, 내림, 반올림 등을 할 수 있다. 라이브러리의 내부 규약에 의해 코드를 작..