본문 바로가기

안드로이드/JetPack

(13)
[Android] Jetpack Compose로 개발하기 개요 이번 포스팅은 을 참고하여 아래 이미지와 같은 메시징 UI를 가진 앱을 Compose를 활용하여 개발하는 예시이다. Composable Functions Jetpack Compose는 Composable Functions으로 이루어진다. 이러한 함수를 사용하면 UI 구성 과정(기존의 xml 방식)에 초점을 맞추는 대신 앱의 UI를 설명하고 데이터의 종속성을 제공하는 프로그래밍 방식으로 앱의 UI를 정의할 수 있다. Add a Text Element 첫번째로 "Hello World"라는 텍스트를 text 요소를 onCreate 내부에 사용하여 표시할 것이다. 그리고 그 과정에서 setContent 블럭을 활용하게 되는데 Composable Functions을 호출하는 액티비티의 레이아웃을 정의한다. ..
[Android] Jetpack Compose 개요 Jetpack Compose Google에서 발표한 Jetpack 중 Compose는 안드로이드 UI를 XML이 아닌 선언형으로 개발할 수 있는 라이브러리이다. 더 적은 코드와 직관적인 사용법으로 UI 개발이 쉬워진다. Compose를 통해 해결할 수 있는 것 관심사의 분리는 유명한 소프트웨어 디자인 원칙이다. 이를 이해하기 위해선 "결합도(Coupling)"와 "응집도(Cohesion)"을 이해해야 한다. 결합도는 서로 다른 모듈의 유닛 간의 종속성을 의미한다. 응집도는 모듈 내의 유닛 간의 그룹화의 정도를 나타낸다. 유지보수가 쉬운 소프트웨어를 개발하기 위해선 결합도를 낮추고, 응집도를 높혀야 한다. 현대 안드로이드 개발 패턴은 ViewModel을 사용하고 Layout(XML)에서 ViewModel의..
[안드로이드] 데이터바인딩 깨알 팁 데이터 바인딩 시 기본 내장 라이브러리를 활용하고 싶은 경우 아래와 같이 import 태그를 통해 사용 가능하다.
[안드로이드] 프래그먼트 스택 (feat. 네비게이션) 개요 안드로이드에서 뷰나 액티비티와 같은 컴포넌트들은 스택으로 관리된다. A에서 B, C화면 순으로 이동하면 A, B, C 순으로 스택에 남아있고 top은 C를 가리키고 있으며, C가 파괴되면 B로 top이 이동하여 화면에 보이는 방식이다. Jetpack의 네비게이션 컴포넌트에서 스택의 관리는 아래와 같다. 스택에 추가 findNavController().navigate(VIEW) 위는 네비게이션 컨트롤러를 통해 다른 뷰로 이동하는 코드이다. 위 코드가 수행될 경우 백 스택에 현재 뷰가 저장된다. popUpTo, popUpToInclusive 위에서 다른 뷰로 이동할 때 백 스택에서 현재 대상을 팝하도록 선택할 수 있다. 예를 들어, 앱에서 로그인 과정이 있다면 사용자가 로그인했을 때 사용자가 뒤로 버튼..
[안드로이드] Paging Library 개요 개요 페이징(Paging)은 데이터를 작게 나누어 로드하는 데 적합한 라이브러리이다. 예를 들어, 게시판에 게시글 3000개가 있는데 이를 네트워킹을 통해 한번에 로드한다면 딜레이가 매우 클 것이다. 따라서, 3000개의 라이브러리를 100개 씩 페이지 단위로 나누고 RecyclerView에 해당 아이템들이 거의 소모되기 전에 다시 다음 100개를 로드하는 방식이다. UI의 PagedList에서 ViewModel, Repository를 관찰하고, 만약 보여줄 아이템이 부족해진다면 DataSource에서 다시 DB나 네트워크에 접근하여 데이터를 가져온다. 그 후 이를 관찰하던 결과가 UI에 반영된다. 구성요소 다음은 페이징 라이브러리의 주요 구성요소이다. DataSource 데이터를 작게 나누어 불러온 다..
[안드로이드] 8. Navigation 심화 이전 문서 리뷰 전 문서에서 Jetpack의 navigation을 통해 MainActivity에서 코드 한줄로 bottomNavigationMenu를 통한 프래그먼트 전환이 가능했다. 이번에는 navigation의 argument, actions를 알아볼 것이다. Argument 말 그대로 화면에서 받을 인자를 설정할 수 있다. 기본적인 int, float 뿐만 아니라 enum 등도 가능하고 배열도 전달이 가능하다. 이를 통해 우리는 Bundle을 통한 값을 전달하는 과정을 더 이상 하지 않아도 된다. Actions 액션은 네비게이션의 이동에 대한 속성이다. navigation xml 파일에서 한 프래그먼트를 우클릭하면 다양한 액션이 가능한 걸 확인할 수 있다. 위 기능들을 실제 활용하는 예제를 아래에서..
[안드로이드] 7. Navigation Navigation 안드로이드 Jetpack의 네비게이션은 기존의 액티비티와 프래그먼트 사이의 복잡한 코드 구성을 간결하게 바꿀 수 있는 라이브러리이다. 또한 네비게이션 그래프를 통해 화면간의 구조를 시각화해서 볼 수 있다는 것도 큰 장점이다. project 단위의 gradle // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext.kotlin_version = '1.3.71' ext.navigation_version = '2.2.0-rc04' //새로 추가 repositories { google() jcenter() } dependencies { c..
[안드로이드] 6. DataBinding DataBinding DataBinding을 액티비티에서 데이터를 XML로 전달할 수 있다. 그리고 그 반대 또한 가능하다. 추가로 Java에서는 findViewByID를 더 이상 쓸 필요가 없어진다. (XML을 바인딩 하였기에 리턴값으로 바인딩 객체가 반환되는데 이를 이용.) 하지만, 가장 중요한 점은 MainActvity의 UI 갱신문이 사라지게 된다. 기본 구성 데이터 바인딩 사용을 위해 build:gradle(:app)에 다음을 추가 android{ ... dataBinding{ enabled = true } ... } 그 다음은 xml의 최상위 레이아웃을 layout 태그로 감싼다. result_textView.text = todos.toString() }) //getAll을 할 경우 todos..