책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약
안드로이드 UI 디자인의 기초부터 구글의 디자인 가이드라인인 구글 머티리얼 디자인을 활용한 디자인 방법과 아이디어를 구체화하기 위한 도구와 기법, 모범 사례까지 UI 디자인을 위한 모든 것을 다룬다. UI 디자인에 반드시 필요한 내용부터 경험을 통해서만 알 수 있는 내용까지 다뤄 다양한 스팩트럼의 디자이너와 개발자에게 도움을 줄 수 있는 내용으로 구성돼 있다.
이 책에서 다루는 내용
■ 핵심 머티리얼 디자인 규칙을 준수하는 사용자 인터페이스 개발
■ 초기 앱 아이디어를 구체적이고 상세한 계획으로 변환
■ 안드로이드 프로젝트에 뷰, 뷰그룹, 레이아웃, 그리고 일반적인 UI 컴포넌트 추가
■ 프레그먼트와 다양한 전략을 사용해 사용자의 입력 수집
■ 새로운 안드로이드 스튜디오 프로젝트를 생성하고 프로토타입으로 개발
■ 더 나은 사용자 경험을 위해 앱 UI의 문제를 확인하고 해결
■ 멀티윈도우 모드와 직접 응답할 수 있는 알림 등 안드로이드 N에서 제공되는 새로운 UI 기능 대처
이 책의 대상 독자
사용자를 확보하고 그들에게 훌륭한 사용자 경험을 제공하고자 하며, 애플리케이션의 안드로이드 UI에 관심이 많은 자바 개발자를 위한 책이다. XML과 일부 안드로이드 개발 관련 기초 지식이 있다고 가정한다.
이 책의 구성
1장. ‘안드로이드 UI 소개’에서는 앱의 성공을 위해 효과적인 UI 디자인과 개발이 중요한 이유를 설명한다.
2장. ‘효과적인 UI가 되려면 무엇이 필요할까?’에서는 모든 안드로이드의 구성 요소인 레이아웃과 뷰 제작 방법을 알아본다. 텍스트와 이미지, 버튼 등 일반적인 UI 컴포넌트를 만들고 꾸미는 방법을 학습한다.
3장. ‘UI 더 알아보기 - 프레그먼트, 리소스, 사용자 입력’에서는 배열과 크기, 상태 목록, 나인패치 이미지 등을 사용해 UI를 한 단계 끌어올린다. 프레그먼트를 사용해 사용자의 특정 화면 크기에 반응하는 유연한 UI를 만드는 방법을 배울 것이다.
4장. ‘머티리얼 디자인 시작하기’에서는 구글의 새 디자인 표준을 익히고 안드로이드 운영체제의 확장처럼 느껴지는 UI를 통해 사용자를 만족시키는 방법을 배운다.
5장. ‘번뜩이는 아이디어를 상세 스케치로 바꾸기’에서는 디자인을 고려하는 개발자가 될 수 있도록 안드로이드 앱 “To Do” 목록에 맞는 로드맵과 플로차트, 화면 목록, 화면 지도를 소개한다.
6장. ‘스케치를 와이어프레임으로 바꾸기’에서는 앞 장의 프로토타입과 와이어프레임을 사용해 높은 수준의 기획을 상세한 화면으로 설계하는 방법을 살펴본다.
7장. ‘프로토타입 만들기’에서는 기획안을 확인해보자! 마지막에는 완벽한 디지털 프로토타입을 만들 것이다.
8장. ‘다양한 기기 지원으로 더 많은 사용자에게 다가가기’에서는 다양한 종류의 하드웨어와 소프트웨어, 화면 크기, 화면 밀도, 방향, 안드로이드 플랫폼 버전, 다양한 언어를 지원해 폭넓은 앱 사용자를 끌어들이는 방법을 배운다.
9장. ‘UI 최적화하기’에서는 사람들이 사용하기 좋게 부드럽고 반응성이 좋은 UI를 만드는 방법을 살펴본다. 앱이 눈에 거슬리거나 쉽게 다운되거나 또는 데이터와 메모리 낭비가 심하거나 배터리가 빨리 닳는다면 아무도 사용하지 않을 것이다.
10장. ‘모범 사례와 애플리케이션 보안’에서는 곧 나올 Android N에서의 알림의 사용과 UI의 마무리 작업에 대해 안내한다.
목차
목차
- 1장. 안드로이드 UI 소개
- 사용자 인터페이스란?
- 안드로이드용 UI 개발은 다른 플랫폼 개발과 정말 다를까?
- 효과적인 UI의 특징은 무엇일까?
- 앱의 성공을 위해 왜 UI가 필수적일까?
- 직관적인 익숙함
- 쉽고 즐거운 사용
- 일관성
- 사용자의 불만 예방
- 사용자가 실수를 바로잡을 수 있도록 지원
- 전반적으로 더 좋은 안드로이드 사용자 경험 제공
- UI 사례 학습 - Google+
- 액션 바
- 떠다니는 액션 버튼
- 메뉴
- 설정
- 다이얼로그
- 토스트
- 검색
- 입력 컨트롤
- 스타일과 테마
- 요약
- 2장. 효과적인 UI에는 무엇이 필요할까?
- 뷰란?
- 레이아웃이란?
- XML이나 Java로 UI 생성
- XML로 UI 선언
- 프로그램 코드로 UI 선언
- 프로그램 코드와 XML 레이아웃 혼용
- 레이아웃
- 레이아웃 크기 정의
- 다양한 레이아웃
- LinearLayout의 모든 것
- RelativeLayout의 모든 것
- 뷰 생성
- 아이디 속성 할당
- 뷰 크기 설정
- 안드로이드 그라비티와 레이아웃 그라비티
- 색상과 배경 설정
- 가중치 설정
- 뷰 객체 추가 및 커스터마이징
- 텍스트뷰
- 에디트텍스트
- 키보드 동작 제어-inputType 설정
- android:imeOptions
- 사용자 힌트
- 이미지뷰
- 멀티스크린 지원
- 이미지뷰 추가
- 버튼과 이미지버튼
- 텍스트 라벨 버튼 생성
- 이미지 라벨 버튼 생성
- 텍스트와 이미지 라벨 버튼 생성
- 상태 목록 리소스
- 요약
- 3장. UI 더 알아보기 - 프레그먼트, 리소스, 사용자 입력
- 그 외의 리소스 종류
- 문자열 리소스 생성 및 스타일 적용
- 문자열 배열 생성
- dimens
- 색상 상태 목록
- 나인패치 이미지 작업
- 나인패치 이미지를 어떻게 만들까?
- 사용자 입력 등록
- 클릭 이벤트 처리
- 에디트텍스트 입력 등록
- 프레그먼트 작업
- 왜 프레그먼트가 필요할까?
- 프레그먼트 생명주기
- 프레그먼트 생성
- 실시간으로 액티비티에 프레그먼트 추가
- 안드로이드 N의 멀티윈도우 지원
- 멀티윈도우 모드는 어떻게 동작하나?
- 멀티윈도우 모드를 위한 앱 준비
- 픽처 바이 픽처 모드
- 요약
- 그 외의 리소스 종류
- 4장. 머티리얼 디자인 시작하기
- 머티리얼 디자인 정신
- 사례 학습 - 행아웃
- 사례 학습 - 구글 캘린더
- 사례 학습- 구글 지도
- 머티리얼 디자인 시작하기
- 머티리얼 테마 적용
- 입체감 만들기
- 떠다니는 액션 버튼
- 바텀 시트
- 카드뷰
- 목록과 리사이클러뷰
- 애니메이션과 전환
- 사용자에게 시각적인 피드백 제공하기
- 마무리 작업
- 요약
- 머티리얼 디자인 정신
- 5장. 번뜩이는 아이디어를 상세 스케치로 바꾸기
- 브레인스토밍 - 모바일 하드웨어의 이점 활용
- 터치와 제스처
- GPS
- 진동
- 오디오 입출력
- 다른 기기와의 인터랙션
- UX와 UI의 차이
- 앱 브레인스토밍
- 개념을 글로 작성
- 최종 기능 목록 생성
- 앱의 주요 동작 명확히 하기
- 모바일에 적합한 애플리케이션인가?
- 예산이 적절한가?
- 앱 계획
- 대상 사용자 식별
- 사용자와 제품 목표 식별
- 로드맵 생성
- 마지막 고려 사항
- 애플리케이션 디자인
- 수준 높은 흐름
- 화면 목록 생성
- 화면 지도 생성
- 내비게이션
- 일반적인 내비게이션 패턴
- 소셜 레이어
- 요약
- 브레인스토밍 - 모바일 하드웨어의 이점 활용
- 6장. 스케치를 와이어프레임으로 바꾸기
- 와이어프레임이란?
- 와이어프레임의 이점은?
- 와이어프레임 만들기
- 와이어프레임 더 살펴보기
- 디지털 와이어프레임
- 종이 프로토타입이란?
- 사용성 테스트
- 요약
- 와이어프레임이란?
- 7장. 프로토타입 만들기
- 안드로이드 스튜디오에서 프로토타입 만들기
- 첫 번째 프로토타입 만들기
- 두 번째 프로토타입 만들기
- 디자인 확정
- 테마와 스타일 만들기
- 스타일 정의하기
- 테마로 작업하기
- 오류에 대한 준비
- 사용자 입력 오류
- 요약
- 안드로이드 스튜디오에서 프로토타입 만들기
- 8장. 다양한 기기 지원으로 더 많은 사용자에게 다가가기
- 다양한 안드로이드 버전 지원하기
- 최솟값과 대상 API 레벨 지정하기
- 런타임에 버전 확인
- 다양한 화면 지원하기
- 구성 한정자
- 안드로이드에서 정확한 리소스를 선택하는 방법
- 별명 리소스 만들기
- 화면 밀도
- 다양한 화면 크기에 맞는 다양한 레이아웃 제공하기
- 다양한 화면 방향 디자인하기
- 다양한 화면에서 테스트하기
- 여러 나라의 사용자에게 주목받기
- 대상 언어와 지역 확인하기
- 그 밖의 리소스 현지화하기
- 기본 리소스는 왜 중요한가?
- 앱 번역하기
- 앱 현지화의 모범 사례
- 다양한 로캘에서 앱 테스트하기
- 구글 플레이 스토어 목록 현지화하기
- 프로젝트 출시 이후
- 요약
- 다양한 안드로이드 버전 지원하기
- 9장. UI 최적화하기
- 코드의 시간 측정하기
- 오버드로우 확인하기
- Hierarchy View 단순화하기
- 트리 뷰(Tree View)
- 트리 오버뷰(Tree overview)
- 레이아웃 뷰(Layout View)
- 메모리 부족 찾아내기
- 메모리 모니터
- 힙(heap) 탭
- 객체 할당 - 메모리 변동(memory churn) 이해하기
- 프로젝트 디버깅하기
- 브레이크 포인트 사용하기
- Lint로 코드 검사하기
- ProGuard로 코드 최적화하기
- 모든 픽셀을 상세하게 살펴보기
- Pixel Perfect 창
- Pixel Perfect 트리
- Pixel Perfect Loupe 창
- 프로세스와 스레드
- 프로세스 종료하기
- >와 <merge/>로 레이아웃 재사용하기
- 필요한 경우에만 뷰 불러오기
- 요약
- 10장. 모범 사례와 애플리케이션 보안
- 데이터 보안 유지
- 네트워크 연결
- 권한 요청
- 새 권한 모델 - 백워드 호환성
- 권한 그룹
- 권한 선언
- 권한과 <uses-feature>
- 앱 권한 처리 모범 사례
- 알림
- 알림 모범 사례
- 직접 응답할 수 있는 알림
- 알림 묶음
- 애플리케이션 위젯
- 프로젝트의 매니페스트에 AppWidgetProvider 선언
- AppWidgetProviderInfo 파일 생성
- 위젯의 레이아웃 생성
- 접근성 모범 사례
- UI 컨트롤에 대한 설명 문구 추가
- 포커스 탐색을 위한 디자인
- 사용자 정의 뷰 컨트롤
- 다양한 서체 크기 테스트
- 터치 대상의 권고 크기
- 타임아웃에 대한 대안 제공
- 애플리케이션의 접근성 기능 테스트
- 요약
- 데이터 보안 유지