Hello Dagger Dagger는 Java, Kotlin 및 Android를 위한 완전히 정적 컴파일 타임 종속성 주입 프레임워크입니다. Square에서 만들고 현재 Google에서 유지 관리하는 이전 버전을 개조한 것입니다. The latest Dagger release is: Dagger 2.41 (2022-04-16 기점) Dagger는 리플렉션 기반 솔루션을 괴롭히는 많은 개발 및 성능 문제를 해결하는 것을 목표로 합니다. 자세한 내용은 Gregory Kick의 이 강연(슬라이드)에서 확인할 수 있습니다.
1. 안드로이드 리사이클러뷰와 그리드 레이아웃 매니저를 이용한 해상도별 item 그리기 프로젝트를 진행하며 마주친 문제인데, 리사이클러 뷰 에서 여러 종류의 아이템(헤더, 아이템카드, 푸터)을 뿌려주고 있는 상황이며, 가이드로 나온 디자인은 특정 해상도에서 아이템 뷰를 다르게 보여주기를 원하고 있었습니다. 아래는 디자인 가이드 예시 입니다. 리사이클러 내부에 들어가는 아이템이 한 가지 종류가 아니라 위 디자인 가이드를 보시면 알겠지만 최 상단에는 타이틀 헤더(Header)가 최 하단에는 푸터(Footer)가 붙어있는 상황입니다. 기본적으로 사용하고 있었던 LinearLayoutManager 를 걷어내고 GridLayoutManager 를 사용해야 함은 얼추 알고는 있었는데, 아이템 타입이 여러개 일 때는..
First-party tooling 🧐 Exploring Android KTX Android KTX는 Android 프레임워크 및 Jetpack을 위한 다양한 확장 세트입니다. 그는 Android KTX 확장 자체가 Jetpack의 일부이며 간단한 Gradle 종속성으로 프로젝트에 추가할 수 있습니다. Android KTX에서 제공하는 기능은 확장 기능 및 고차 기능과 같은 기능을 활용하여 Android API를 보다 Kotlin 관용적으로 만드는 것을 목표로 합니다. 종속성을 보다 가볍게 만들기 위해 Android KTX는 제공하는 기능에 따라 여러 개의 작은 종속성으로 나뉩니다. 그 중 일부는 다음과 같습니다. Core KTX Fragment KTX SQLite KTX ViewModel KTX Nav..
Better companion companion object 는 바깥 클래스(enclsosing class) 에서 메서드나 프로퍼티를 접근할 수 있게하는 효율적인 방법입니다. 약간 Java 의 Static 느낌이라고 할 수도 있습니다. 하지만, companion object 를 자바에서 참조할 떄는 살짝 복잡할 수 있습니다. 그럼 어떻게 효율적으로 사용할 수 있는지 알아봅시다. 어떻게 companion object 가 동작할까 코틀린 클래스에 컴패니언 객체가 선언되면 컴파일러는 컴파일 때 명명된 내부 클래스를 생성하게 됩니다. 아래 코드는 빈 컴패니언 객체를 사용했습니다. class Widget { companion object { } } 앞의 코드에 의해 Java 코드가 컴파일러에 의해 생성되면 아래와..
1. Google Developers Jetpack Compose Codelab 2021 이번에 GDG Korea Android 에서 진행했던 행사인 DevFest 2021 Android Compose 코드랩 행사를 참여한 후기를 기록한다 Jetpack Compose 는 네이티브 UI 를 빌드하기 위한 Android 의 최신 툴킷으로, UI 개발을 간소화하고 가속화할 수 있다. 위에서 처럼 compose 는 즉 UI 를 기존 보다 쉽게 디자인, 개발, 빌드 할 수 있는 최신 라이브러인데, 기존 성능문제를 해결하면서도 쉬운 개발이 가능한.. 그런 멋진 녀석이다. (여기서는 보다 자세한 설명은 생략한다) 최근 이직하게된 회사에서 안드로이드 앱 개발 직무를 맡고 있기도하고 평소에 관심이 많은지라 이번 행사의 ..
1. 안드로이드 스튜디오 로딩바 꾸미기 : 슈퍼마리오 무미 건조한 개발 환경에 재미를 한줌이라도 끼얹기 위해 안드로이드 스튜디오의 프로그레스 바(Progress Bar)를 커스터마이징 해봅시다. 먼저 Preferences 창을 열어주세요. 이후 Plugins 탭을 선택합니다. #안드로이드스튜디오 #로딩창 #로딩바 #프로그레스바 #꾸미기 Plugins 의 Marketplace 에서 mario 로 검색해줍니다. 이후 현재(2021-10-14) 기준 36.9K 의 다운로드 수를 기록한 Mario Progress Bar 를 Install 해줍니다. 플러그인 설명에서 슈퍼 마리오 프로그레스 바 예시를 애니메이션으로 미리 체험해볼 수 있습니다. Third-Party Plugins Privacy Note 알림이 뜨면..
1. Android Retrofit (X-Auth-Token 과 함께 Post 하기) (코틀린) REST API 를 사용해서 문제를 해결해야할 경우 X-Auth-Token(토큰) 이 주어졌고 이를 사용해서 관리 키를 POST 메소드로 받아오려고 할때 필요한 코드를 기록해보려고합니다. (삽질 방지용 글) Field, FieldMap, Query 등을 사용해서 요청할 경우 되지 않아서 좀 삽질을 했습니다만 결론적으로는 Body 를 사용해서 얻어와야 했습니다. (정확히 말하면 @Body 어노테이션) 1.1. POST Example curl -X POST {BASE_URL}/start \ -H 'X-Auth-Token: {X_AUTH_TOKEN}' \ -H 'Content-Type: application/jso..
1. 코틀린 인터페이스의 Default implementation 과 JAVA 코틀린의 인터페이스는 추상 메서드 뿐만이 아니라 구현이 있는 메서드 즉, Default 메서드를 정의할 수 있다. (하지만 필드(상태)는 불가능하다.) 클래스는 class 로 정의하듯 인터페이스는 interface 로 정의 한다. interface Clickable { fun click() } 위 인터페이스는 click() 이라는 추상 메서드를 정의하며 이를 구현하는 클래스는 click()을 반드시 재정의할 필요가 있다. class Button : Clickable { override fun click() = println("it was clicked") } 자바와 달리 콜론(:) 뒤에 확장할 클래스나 인터페이스를 붙여준다. ..
1. 프로그래머스 앱 데브 매칭 2021 : K-MOOC 강좌정보 서비스 앱 과제 프로그래머스에서 금년도 6월 19일에 진행한 앱 데브 매칭에 대한 의도한 해답을 공개했다. 해당 과제를 내가 치룰 당시에는 안드로이드 뷰 모델에 대한 학습이 안되어있어서 당황하며 어찌저찌 거의 구현은 했는데 나 자신이 만족할만한 수준의 앱이 아니어서 상당히 아쉬웠다. 데브 매칭의 경우에는 다른 블로그 글들을 찾아보면 메일로 코드 리뷰 및 피드백을 주는 것을 본 적이 있는데, 이번에는 공개해답을 아예 공식 블로그에 공개를 해주었다. 안드로이드 신입 개발자를 준비하고 있는 나에게는 참 반가운 소식이었다. 물론 코드에는 정답이 없지만 어느 정도 통용되는 또는 안드로이드에서 적극 권장하는 아키텍처가 분명 존재하기 때문에 이러한 예..
1. 안드로이드 google map api를 활용한 어플 만들어보기 이번 프로젝트는 구글 맵, sk (t map) pai 를 활용해서 위치 검색 및 현위치를 지도상에서 마커로 나타내주는 안드로이드 앱 입니다. 상호명이나 건물명 등으로 검색을 한 결과를 리스트로 보여주고 유저가 이를 클릭하면 지도 화면으로 이동해서 해당 위치를 마커로 표시합니다. 해당 포스팅은 구현 코드 전부를 설명하지는 않고 🙅♂️ 핵심 코드를 정리합니다. 구현 코드 전부가 궁금하신 분들은 글 말미에 첨부드리는 저의 깃허브 저장소를 참고하시기 바랍니다. 주요 기능 위치 (건물, 상호 명 등) 검색 기능 검색한 위치 클릭 시 지도 상에 핀(마커)으로 표시해줌 현재 위치 버튼을 클릭하면 현재 자신의 위치를 보여줌 + 무한 스크롤 기능 추가..