팀 프로젝트를 수행하면서 팀장님께서 안드로이드에서 백엔드와 HTTP 통신을 하는 코드를 작성하는 미션을 부여해주셨다!! 백엔드와 통신하지 않는 안드로이드 앱만 만들어온터라 구현에 있어서 어느 정도 한계를 느끼고도 있었기 때문에 기쁜 마음으로 미션을 받아들였다. 프로그램을 개발하다 보면 자연스럽게 백엔드 서버와 통신해야 될 일이 생긴다. 웹 프론트에서는 axios 라이브러리를 활용해서 백엔드 api에서 원하는 서비스를 제공받을 수 있었다. 그렇다면 안드로이드는? 하고 찾아보다가 자연스럽게 만나게 되는 라이브러리가 Retrofit이었다. 1. Retrofit이란? Retrofit의 github.io에 들어가보면 Type Safe한 HttpClient 라이브러리라고 한다. Type Safe하다는 뜻은 다음과 ..
ConstraintLayout의 경우, RelativeLayout 등에 비해 레이아웃의 구조를 상대적으로 간단하게 표현하였지만 좀 더 다양한 레이아웃을 만들기 위해 Virtual Helper object(가상 오브젝트)를 이해할 필요가 있다. 이번 포스팅에서 알아볼 가상오브젝트의 종류에는 다음 4가지가 있다. Guideline Barrier Group Placeholder Guideline (가이드라인) ConstraintLayout 내에서 다른 뷰의 위치를 잡는데 도움을 주는 유틸리티 클래스이다.(기본적으로 visibility는 View.GONE 상태) 수평 또는 수직으로 배치가 가능하며 두께는 기본적으로 0이다. Guideline은 3가지 방법으로 배치가 가능하다. layout_constraintGu..
ConstraintLayout이란? ConstraintLayout은 android.view.ViewGroup에 속한 레이아웃이며 위젯의 위치(postion)와 크기(size)를 지정할 수 있게 해준다. Constraint의 종류 Relative positioning Margins Centering piositioning Circular positioning Visibility behavior Dimension constraints Chains Virtual Helpers objects Optimizer Relative positioning Constraint 레이아웃에서 가장 기초적인 개념이다. 대상 위젯의 위치를 지정할 때, 다른 위젯으로부터 상대적인 위치에 지정한다. Margins 대상 위젯의 테두리..
이번에 좋은 기회를 얻어서 다른 사람들과 안드로이드 프로젝트를 진행하게 되었다. 그런데 만들어져 있는 소스파일을 보니 레이아웃이나 파일들 이름이 일정한 규칙으로 짜여져 있는 것은 확인했는데 뭐라고 적혀있는지 알아보기가 힘들었다;; 그 중에서도 특히 xml과 관련 된 파일의 이름이 생소하였다. 그러던 와중에 괜찮은 글을 발견하게 되어 한 번 정리해보려고 한다. jeroenmols.com/blog/2016/03/07/resourcenaming/ A successful XML naming convention Do you remember the last time you had to dig into strings.xml to find the right String to use? Or that you manuall..
안드로이드의 4대 컴포넌트 초간단 요약!! TL;DR; - Too Long; Don`t Read; 액티비티(Activity) : UI를 구성하기 위한 컴포넌트 서비스(Service) : UI 없이 백그라운드에서 장시간 수행되는 컴포넌트 콘텐츠 프로바이더(ContentProvider) : 애플리케이션 간 데이터를 공유하기 위한 컴포넌트 브로드캐스트 리시버(BroadcastReceiver) : 이벤트 모델로 수행되는 컴포넌트 액티비티(Activity) 사용자 화면을 제공하는 컴포넌트!! 안드로이드 앱은 클라이언트 측 애플리케이션이므로 화면 구성이 중요하다. 따라서 가장 많이 작성하는 컴포넌트 서비스(Service) 화면과 전혀 상관없이 백그라운드에서 장시간 무언가를 수행할 수 있는 컴포넌트!! 대표적으로 채..
깡쌤의 말에 따르면 앱 개발자 관점에서 안드로이드 플랫폼의 아키텍처를 자세히 이해하거나 응용할 필요는 없다고 한다. 다만 안드로이드 플랫폼이 어떻게 설계되었는지, 앱이 어떤 환경에서 수행되는지 등 상식 수준에서만 알아두면 좋다고 하여 이렇게 간략하게 나마 정리하려고 한다. 안드로이드 플랫폼은 리눅스 커널 기반이다. HAL(Hardware Abstraction Layer)은 자바 API 프레임워크에 하드웨어 기능을 이용하는 표준 인터페이스를 제공한다. 자바 API 프레임워크에서 하드웨어 기기(카메라, 블루투스 등)를 이용하기 위한 코드가 실행되면 내부적으로 HAL의 라이브러리 모듈이 로딩되어 처리된다. 안드로이드 런타임(Android Runtime)은 ART 가상 머신을 이용하여 그 위에 일반 애플리케이션..
이 글은 단순히 책의 내용을 제 입맛에 맞게 요약 정리한 글에 불과합니다. 고로 이 글로 안드로이드를 공부하겠다는 생각은 접어두시는 걸 추천하는 바입니다. 책 좋아요!! 추천합니다!! 1. 안드로이드의 특징 안드로이드는 공개 운영체제인 리눅스 기반이다. 안드로이드 앱 개발은 자바(Java) 및 코틀린(Kotlin)을 이용해 개발한다. 운영체제의 핵심 코드, 라이브러리 코드, 스마트폰에 기본으로 탑재된 구글에서 만든 앱 코드 등 대부분 코드가 오픈되어 있다. 개발자가 만든 앱은 구글 Play 스토어뿐만 아니라 다양한 방법으로 사용자에게 배포될 수 있다. 안드로이드 플랫폼 기반의 스마트폰을 여러 제조업체에서 만들 수 있다. 안드로이드 기반의 모든 애플리케이션은 평등하다는 사상으로 스마트폰에 기본 탑재된 앱과..
Todo 리스트 앱을 만들면서 ListView를 쓰다가 막상 좀 찾아보니 RecyclerView가 더 많이 쓰인다는 것을 알게 되었다. 그리고 막상 써보니 맘처럼 쉽게 사용하기가 어려웠다. 그래서 아 이거 제대로 알고 쓰는 거 아니면 나중에 일이 더 커지겠는데 싶어서 제대로 공부해보고 쓰기로 마음먹고 이렇게 블로그를 들어와 포스팅을 하기 시작했다. 어떤 글에서나 쓰는 거지만 이 글은 제가 공부한 걸 제가 마음대로 써재기는 글인거지. 공부용으로는 전혀 도움이 안 됨을 미리 밝힙니다. 1. RecyclerView는 왜 쓰나요? 우선 RecyclerView 이전에 ListView가 있었음을 기억하자. 보통 앱을 구현하면서 ListView를 사용하는 경우에는 같은 item_layout.xml을 활용하는 경우가 ..