1. 프로그래머스 앱 데브 매칭 2021 : K-MOOC 강좌정보 서비스 앱 과제 프로그래머스에서 금년도 6월 19일에 진행한 앱 데브 매칭에 대한 의도한 해답을 공개했다. 해당 과제를 내가 치룰 당시에는 안드로이드 뷰 모델에 대한 학습이 안되어있어서 당황하며 어찌저찌 거의 구현은 했는데 나 자신이 만족할만한 수준의 앱이 아니어서 상당히 아쉬웠다. 데브 매칭의 경우에는 다른 블로그 글들을 찾아보면 메일로 코드 리뷰 및 피드백을 주는 것을 본 적이 있는데, 이번에는 공개해답을 아예 공식 블로그에 공개를 해주었다. 안드로이드 신입 개발자를 준비하고 있는 나에게는 참 반가운 소식이었다. 물론 코드에는 정답이 없지만 어느 정도 통용되는 또는 안드로이드에서 적극 권장하는 아키텍처가 분명 존재하기 때문에 이러한 예..
1. 안드로이드 google map api를 활용한 어플 만들어보기 이번 프로젝트는 구글 맵, sk (t map) pai 를 활용해서 위치 검색 및 현위치를 지도상에서 마커로 나타내주는 안드로이드 앱 입니다. 상호명이나 건물명 등으로 검색을 한 결과를 리스트로 보여주고 유저가 이를 클릭하면 지도 화면으로 이동해서 해당 위치를 마커로 표시합니다. 해당 포스팅은 구현 코드 전부를 설명하지는 않고 🙅♂️ 핵심 코드를 정리합니다. 구현 코드 전부가 궁금하신 분들은 글 말미에 첨부드리는 저의 깃허브 저장소를 참고하시기 바랍니다. 주요 기능 위치 (건물, 상호 명 등) 검색 기능 검색한 위치 클릭 시 지도 상에 핀(마커)으로 표시해줌 현재 위치 버튼을 클릭하면 현재 자신의 위치를 보여줌 + 무한 스크롤 기능 추가..
[Android] LayoutInflater attachToParent parameter mean? 안드로이드 프로젝트를 여러개 진행해보면서 레이아웃을 inflate 할 때 항상 inflate 메서드의 마지막 파라미터인 attachToParent/Root 를 거의 무조건 false 로 한다 로만 알고 있었지 정확한 의미가 항상 궁금했다. attachToRoot: whether the inflated hierarchy should be attached to the root parameter? If false, root is only used to create the correct subclass of LayoutParams for the root view in the XML. 공식 문서를 보면 위와 같이 ..
안드로이드 아키텍처 개요 : 전체적인 구조를 알아보자 (Android Architecture) 안드로이드 시스템은 소프트웨어 stack 구조로 구성 앱, 운영체제, 런타임, 미들웨어, 서비스, 라이브러리 등을 레고처럼 쌓듯이 구성 모바일 장치를 위한 최적의 앱 개발, 실행 환경을 제공하기 위해 긴밀하게 구성 되어있음 리눅스 커널 안드로이드 소프트웨어 스택 맨 아래 위치 하드웨어 기반 운영체제의 역할 수행 멀티 테스킹, 메모리 관리, 프로세스 및 전원관리 등 하드웨어(장치) 드라이버 제공 안드로이드 런타임 ART 안드로이드 스튜디오에서 앱을 빌드하면 바이트 코드 형태로(Dalvik Executable, DEX) 컴파일 되며 이를 장치에 설치할 때 안드로이드 런타임이 Ahead-Of-Time 컴파일을 하여 ..
14. 안드로이드와 Dagger2 안드로이드를 위한 기본적인 접근 방식 안드로이드의 특성 하나의 애플리케이션 내에서 액티비티 또는 서비스 와 같은 생명 주기를 갖는 컴포넌트로 구성 프래그먼트는 단독 존재 불가하며 반드시 액티비티 내에 존재해야함 애플리케이션을 포함한 액티비티, 서비스 등 컴포넌트는 시스템에 의해서만 인스턴스화 된다. 위 특징을 통해 아래와 같은 컴포넌트 그래프를 그릴 수 있다. 앱은 생명주기 동안 다양한 화면(액티비티) 및 서비스가 생성과 소멸을 반복 하나의 액티비티 내에서는 여러 프래그먼트가 생성 소멸 반복 가능 앱 생명주기와 Dagger 컴포넌트의 생명 주기를 같이 하는 앱 컴포넌트 구현 액티비티나 서비스를 위한 컴포넌트는 앱 컴포넌트의 서브 컴포넌트로 구성한다 프래그먼트는 액티비티 ..
13. 컴포넌트 간의 의존 관계 다수의 컴포넌트를 생성 및 상호 의존 관계를 맺을 수도 있음 방법 서브 컴포넌트 컴포넌트 상속 서브 컴포넌트 서브 컴포넌트 내에 다른 서브컴포넌트 구현 두 컴포넌트를 연관 짓는 쉬운 방법 서브 컴포넌트는 상위 컴포넌트에 바인딩된 모든 의존성을 제공 받음 (그 반대는 불가) SubComponentB 는 SubComponentA, Component가 가진 모듈로 부터 의존성을 제공 받을 수 있음 SubComponentA 는 Component 모듈로 부터 의존성을 제공 받을 수 있음 Component 는 하위 컴포넌트 들이 가진 의존성을 제공 받을 수 없음 ❌ 서브 컴포넌트의 정의 추상 클래스 또는 인터페이스에 @Component 대신 @Subcomponent 어노테이션을 붙임..
1. 안드로이드 뮤직 플레이어 앱 만들기 with ExoPlayer, Kotlin 이번에는 멜론 같은 안드로이드 뮤직 재생 앱을 만들어 보는 프로젝트를 진행해보았습니다. 서버 에서 음악 정보들을 받아와 재생 목록을 구성하고 재생 및 일시정지, 다음 곡, 이전 곡, 곡 위치 탐색 등의 기본적인 기능을 수행할 수 있도록 구현했습니다. 주요 기능 음악 서버에서 음악 받아와 재생 목록 구성하기 현재 재생 중인 음악 재생 목록에서 표시 (회색 배경) 재생/일시정지, 이전 곡/다음 곡 재생 기능 seekBar 를 통한 음악 탐색 기능 재생 목록 음악 뷰 전환 가능 사용 기술 Exoplayer 커스텀 컨트롤러 playlist androidx.constraintlayout.widget.Group 기타 SeekBar C..