앞 글: [Android Dialog] 1. Compose Dialog를 이용해 커스텀 다이얼로그 만들기 앞의 글에서 Dialog 객체는 커스텀한 content를 직접 모두 그려서 만들었다. 하지만 매번 이렇게 모든 Dialog를 커스텀 하는 것은 비효율적이다. 어차피 다이얼로그에서 우리가 필요로 하는 기능은 대부분 획일화 되어있고, 사용자가 사용하기 편한 UI/UX는 정해져 있기 때문이다. 예를 들어 메모장 앱에서 저장된 메모를 삭제하려고 하는 경우 다음과 같이 만들 수 있다. 이러한 다이얼로그를 만들기 위해 모두 다 Custom하게 만드는 것은 개발 리소스의 낭비이고, 가독성을 위해서도 규격화된 다이얼로그인 AlertDialog를 쓰는 것이 좋다. 아래에서 AlertDialog를 이용해 위 다이얼로그..
분류 전체보기
Compose에서 사용할 수 있는 다이얼로그의 종류 Compose에서는 두가지 종류의 Dialog를 사용할 수 있다. Dialog : 커스텀한 다이얼로그를 생성 AlertDialog : 미리 정의된 스타일에 따라 Dialog를 생성 Dialog를 이용하면 커스텀한 다이얼로그를 생성할 수 있으며, AlertDialog 함수는 정해진 스타일에 따라 Dialog를 생성한다. 둘 모두 장단점이 있다. Dialog를 사용하면 다이얼로그를 만드는데 시간이 오래 걸리지만 필요한 디자인을 충분히 적용할 수 있다. AlertDialog를 사용하면 미리 정의되어 있는 스타일을 사용할 수 있어 다이얼로그를 만드는데 시간이 적게 걸리고 코드를 직관적으로 만들 수 있지만 정해진 스타일대로만 정의가 가능하다. AlertDialo..
color.xml과 Color객체 color.xml은 Jetpack Compose가 출시되기 이전 color을 정의하는 방법이었다. 하지만, Compose에서 Color객체와 Color객체를 이용한 Theming을 지원하게 되면서 코드 상에 Color 객체를 정의하는 방식이 표준이 되어, 기존 color.xml을 이용한 색상 리소스 로딩 방법을 더이상 사용하지 않게 되었다. 하지만 기존의 프로젝트들에서 모든 리소스를 한 번에 이동하기는 번거롭다. 따라서 Compose에서는 colorResource메서드와 color.xml을 이용한 Color객체 로딩 방법 또한 제공한다. 새로운 앱에서는 color.xml을 사용하지 말고 Color 객체를 사용하도록 하자. 기존 color.xml의 color를 로딩하기 위..
Flow와 StateFlow 우리는 리액티브 프로그래밍을 할 때 여러 데이터 흐름(flow)를 하나로 합쳐 하나의 데이터 흐름(Flow)으로 만들어낸다. 예를 들어 아래의 그림3에서는 Flow가 3개 있고 이것이 합쳐져 하나의 Flow를 만들어낸다. 이러한 상황은 흔하다. 예를 들어 우리가 영화 평점 앱을 만든다고 할 경우 영화에 대한 정보, 사용자에 대한 정보, 사용자의 영화의 평점에 대한 정보를 각 테이블에서 가져와 하나의 객체로 만들어야 한다. 하나로 만들어진 Flow는 UI에서 사용되기 위해 StateFlow로 변환되어야 한다. 이 UI에서는 이 StateFlow를 구독하여 항상 최신 데이터를 발행받는다. 이것이 가능하기 위해서는 Flow를 StateFlow로 변환하는 로직이 필요하다. 또한 St..
Flow의 한계 Flow는 데이터의 흐름이다. Flow는 데이터의 흐름(flow)을 발생시키기만 할 뿐 데이터가 저장되지 않는다. 따라서 flow만을 이용해 안드로이드의 UIState를 업데이트 하기 위해서는 두가지 방법이 가능했다. 화면이 재구성 될때마다 다시 서버 혹은 DB로부터 데이터 가져오기 Flow로부터 collect한 데이터를 ViewModel에 저장해놓고 사용하기 1번 방법은 비효율적이다. 예를 들어 안드로이드에서는 화면이 회전되었을 때마다 onDestroy가 호출된 후 다시 onCreate이 호출되는데, 이때마다 새로운 데이터를 서버 혹은 DB로부터 가져와야 하기 때문이다. 2번 방법은 효율적이다. 아래 그림의 ViewModel이 살아있는 범위에서 볼 수 있듯이 ViewModel은 onDe..