젯팩 컴포즈로 개발하는 안드로이드 UI
- 원서명Android UI Development with Jetpack Compose: Bring declarative and native UIs to life quickly and easily on Android using Jetpack Compose (ISBN 9781801812160)
- 지은이토마스 쿠네스(Thomas Künneth)
- 옮긴이강경구
- ISBN : 9791161757100
- 30,000원
- 2022년 12월 30일 펴냄
- 페이퍼백 | 312쪽 | 188*235mm
- 시리즈 : 모바일 프로그래밍
책 소개
본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
https://github.com/AcornPublishing/jetpack-compose
요약
젯팩 컴포즈는 안드로이드 UI 개발의 새로운 패러다임이다. 이 책은 젯팩 컴포즈를 통해 안드로이드 애플리케이션을 개발할 수 있도록 도와줄 것이다. 젯팩 컴포즈로 안드로이드를 처음 개발해보는 개발자는 물론이고, 기존에 개발한 안드로이드 애플리케이션에 젯팩 컴포즈를 적용하고자 하는 개발자에게도 유익하다.
이 책에서 다루는 내용
◆ 젯팩 컴포즈의 핵심 개념 이해
◆ 사용자 친화적이고 안정적인 UI 요소 개발
◆ 젯팩 컴포즈로 완전한 앱 만들기
◆ 기존 안드로이드 애플리케이션에 젯팩 컴포즈 추가
◆ 젯팩 컴포즈를 사용하는 앱 테스트 및 디버깅
◆ 다른 플랫폼에서의 젯팩 컴포즈 활용
이 책의 대상 독자
새로운 젯팩 컴포즈 프레임워크의 핵심 개념과 네이티브 개발의 장점을 이해하고자 하는 모든 모바일 개발자를 대상으로 한다. 코틀린 프로그래밍 언어에 대한 지식을 포함해 안드로이드 앱 개발에 대한 확실한 이해가 있다면 더욱 유익할 것이다. 책에서 다루는 개념을 효과적으로 이해하려면 기본적인 프로그래밍 지식이 필요하다.
이 책의 구성
1장, ‘컴포즈 앱 첫 빌드’에서는 여러분의 첫 번째 컴포즈 앱을 빌드하는 방법을 보여준다. 또한 컴포저블 함수와 미리 보기 같은 중요한 핵심 개념도 소개한다.
2장, ‘선언적 패러다임 이해’에서는 선언적 방식을 사용하기 전의 방식을 설명하고 오래된 접근 방식에서 오는 문제는 무엇인지 설명한다.
3장, ‘컴포즈 핵심 원칙 자세히 알아보기’에서는 젯팩 컴포즈가 의존하는 핵심 원칙을 소개한다. 이 내용은 잘 동작하는 컴포즈 앱을 작성하는 데 꼭 필요하다.
4장, ‘UI 요소 배치’에서는 제공되는 레이아웃 일부를 소개한다. 또한 커스텀 레이아웃을 구현하는 방법도 살펴본다.
5장, ‘컴포저블 함수 상태 관리’에서는 젯팩 컴포즈가 상태를 어떻게 관리하는지 살펴본다. 상태는 시간이 흐름에 따라 변할 수 있는 앱 데이터이며 컴포저블 함수는 상태를 출력하거나 변경한다.
6장, ‘조립’에서는 앞에서 배운 개념을 복습하고 앱에 포함해본다. 실제 코드로 개념을 확인하면 개념을 이해하는 데 도움이 되며 프로그램에서 이를 재사용하기가 더 쉬워진다.
7장, ‘팁, 트릭, 모범 사례’에서는 컴포즈를 사용할 때의 모범 사례를 알아본다. 여기에는 상태 유지 및 검색과 부수 효과로 불리는 동작의 사용법과 같은 주제가 포함된다.
8장, ‘애니메이션 적용’에서는 관련된 모든 API를 소개한다. 애니메이션과 트랜지션은 앱을 멋지게 만들어준다.
9장, ‘상호 운용 API 자세히 알아보기’에서는 앱 안에서 선언적 접근 방식과 명령적 접근 방식을 결합하는 전략을 살펴본다. 또한 기존 UI를 젯팩 컴포즈로 손쉽게 업데이트할 수 있는 마이그레이션 전략을 제공한다.
10장, ‘컴포즈 앱 테스트와 디버깅’에서는 컴포즈 앱을 위한 기본적인 테스트 시나리오를 소개한다. 컴포즈 앱의 사용자 기반 인터페이스 테스트는 뷰 기반의 UI 테스트와는 다르게 동작한다.
11장, ‘결론과 다음 단계’에서는 이후에 시도할 수 있는 것들을 안내하며 책을 마무리한다. 또한 젯팩 컴포즈의 미래를 예측해보고 인접해 있는 플랫폼들을 살펴보면서 어떠한 이점을 얻을 수 있을지 알아본다.
목차
목차
- 01장. 컴포즈 앱 첫 빌드
- 기술 요구 사항
- 컴포저블 함수와 인사
- 환영 인사 나타내기
- 열, 텍스트 필드, 버튼 사용
- 인사말 출력
- 미리 보기 사용
- 미리 보기 매개변수
- 미리 보기 설정
- 미리 보기 그룹화
- 컴포즈 앱 실행
- 컴포저블 함수 배포
- 액티비티에서 컴포저블 함수 사용
- 내부 살펴보기
- 플레이 버튼 누르기
- 요약
- 참고 도서
- 02장. 선언적 패러다임 이해
- 기술 요구 사항
- 안드로이드 뷰 시스템 살펴보기
- 레이아웃 파일 인플레이팅
- UI 수정
- 컴포넌트에서 컴포저블 함수로 이동
- 컴포넌트 계층 구조
- 컴포넌트 계층 구조의 한계
- 함수를 사용해 UI 조합
- 아키텍처 관점에서 설명
- 클릭 동작에 반응
- UI 요소 크기 조절과 배치
- 요약
- 03장. 컴포즈 핵심 원칙 자세히 알아보기
- 기술 요구 사항
- 컴포저블 함수 자세히 살펴보기
- 컴포저블 함수의 구성 요소
- UI 요소 내보내기
- 값 반환
- UI 구성 또는 재구성
- 컴포저블 함수 간 상태 공유
- 크기 제어
- 액티비티 내에서 컴포저블 계층 구조 나타내기
- 컴포저블 함수의 행위 수정
- 변경자 동작 이해
- 커스텀 변경자 구현
- 요약
- 04장. UI 요소 배치
- 기술 요구 사항
- 미리 정의된 레이아웃 사용
- 기본 구성 요소 조합
- 제약 조건을 기반으로 하는 레이아웃 생성
- 단일 측정 단계의 이해
- 측정 정책 정의
- 커스텀 레이아웃 작성
- 커스텀 측정 정책 구현
- 요약
- 05장. 컴포저블 함수 상태 관리
- 기술 요구 사항
- 상태를 갖거나 갖지 않는 컴포저블 함수 이해
- 컴포저블 함수에서 상태 사용
- 상태를 갖지 않는 컴포저블 함수 작성
- 상태 호이스팅과 이벤트 전달
- 라디오 버튼 그룹 생성
- 환경설정 변경에도 데이터 유지
- ViewModel 사용
- 요약
- 06장. 조립
- 기술 요구 사항
- 컴포즈 앱 스타일링
- 색상, 모양, 텍스트 스타일 정의
- 리소스 기반의 테마 사용
- 툴바와 메뉴 통합
- 화면 구조화를 위해 Scaffold() 사용
- 상단 앱 바 생성
- 내비게이션 추가
- 화면 정의
- NavHostController와 NavHost() 사용
- 요약
- 07장. 팁, 트릭, 모범 사례
- 기술 요구 사항
- 상태 유지와 검색
- ViewModel에 객체 주입
- 팩토리 사용
- 컴포저블을 반응성 있게 유지
- ViewModel 인스턴스와 소통
- 장기간 동작하는 작업 처리
- 부수 효과의 이해
- 중단 함수 호출
- DisposableEffect()으로 정리
- 요약
- 08장. 애니메이션 적용
- 기술 요구 사항
- 애니메이션을 사용한 상태 변화 시각화
- 한 가지 값을 변경하는 애니메이션
- 여러 값을 변경하는 애니메이션
- 애니메이션을 사용해 UI 요소를 노출하거나 숨기기
- AnimatedVisibility()의 이해
- 크기 변경 애니메이션
- 시각 효과를 통한 트랜지션 향상
- 크로스페이드 컴포저블 함수
- 애니메이션 사양의 이해
- 요약
- 09장. 상호 운용 API 자세히 알아보기
- 기술 요구 사항
- 컴포즈 앱에서 뷰 나타내기
- 컴포즈 앱에 커스텀 컴포넌트 추가
- AndroidViewBinding()으로 뷰 계층 구조 인플레이팅
- 뷰와 컴포저블 함수 간 데이터 공유
- ViewModel 다시 보기
- 뷰 바인딩과 ViewModel 조합
- 뷰 계층 구조에 컴포저블 임베디드
- 요약
- 10장. 컴포즈 앱 테스트와 디버깅
- 기술 요구 사항
- 환경설정과 테스트 작성
- 유닛 테스트 구현
- 컴포저블 함수 테스트
- 시맨틱 이해
- 시맨틱 노드로 작업
- 커스텀 시맨틱 프로퍼티 추가
- 컴포즈 앱 디버깅
- 로깅과 디버깅을 위해 커스텀 변경자 사용
- 요약
- 더 읽을거리
- 11장. 결론과 다음 단계
- 기술 요구 사항
- 미래 탐험
- 노출된 드롭다운 메뉴 나타내기
- NavigationRail() 사용
- 머티리얼 유로 이관
- 컴포즈에서 머티리얼 2와 머티리얼 3 간의 차이점
- 안드로이드를 넘어서
- 샘플 프로젝트 설정
- 결론