목록Android (136)
Nuke Olaf - Log Store
Google I/O 2017 에서 Android Architecture Library 가 처음 발표되었다. AAC 의 가장 큰 핵심은 안드로이드의 컴포넌트들(주로 4대 컴포넌트라 일컬어지는 Activity, BroadcastReceiver, Service, ContentProvider)의 생명주기를 개발자가 좀더 다루기 쉽게 만들어주는 것에 있다. AAC 라이브러리 구성요소 중에 데이터 바인딩 라이브러리(Data Binding Library)가 있다. 데이터 바인딩 라이브러리는 선언적 형식으로 UI 컴포넌트들과 데이터소스를 연결할 수 있는 라이브러리이다. (* 예전에 정리했던 데이터 바인딩 포스팅 : https://salix97.tistory.com/243) 이 데이터 바인딩 라이브러리의 바인딩 어댑터(..
현재 진행하고 있는 아재트 프로젝트는 멀티모듈 형태로 구성되어있다. 아재트 프로젝트의 기능(페이지) 별 feature 마다 모듈을 하나씩 추가하면서 만들고 있다. 안드로이드 스튜디오에서 아재트의 패키지구조를 보면 다음과 같이 구성되어있다. 여기에 "알림 페이지"모듈을 추가하려고 한다. 1. 새로운 모듈 추가하기 (1) File > New > New Module 로 들어간다. 그러면 모듈 타입을 설정하는 창이 뜬다. 상황에 맞게 모듈 타입을 설정하면 된다. 보통은 Android Library 타입을 가장 많이 사용하게 될 것 같다. Android Library 타입의 모듈은 재사용할 수 있는 코드를 (예를 들면 내 프로젝트의 다른 앱 모듈이나, 다른 프로젝트에서 import 하여 종속적으로 사용할 수 있는..
1. 리사이클러뷰로 스크롤 없이 유동적인 크기의 아이템을 보여주기 Metaler 앱을 만들면서, 사용자가 입력한 태그를 리사이클러뷰를 통해 보여줘야 하는 상황이 있었다. 그런데 문제가 있었다. 안드로이드에서 기본적으로 지원하는 linear layout manager를 리사이클러뷰에 사용하면, 한 행, 또는 한 열에 무조건 한 개의 아이템만을 보여줄 수 있다는 것이었다. 물론 같은 크기의 아이템으로 구성된 리스트를 보여줄 때는 (예: 메모장에서 메모 목록 보여주기, 뉴스기사 보여주기 등) 아이템을 한 행/열 당 한개만 보여주는 것이 일반적이다. 하지만 나는 마치 웹에서 사용되는 flexbox 레이아웃처럼 태그 목록을 보여주고 싶었다. flexbox 는 컨테이너 내의 아이템 요소를 컨테이너 크기에 따라 자동..
현재 Metaler 앱은 Fragment 가 아닌 Activity 만을 사용하여 만들어졌다. 그러나, Activity 만을 사용해서 탭바를 구현해야하는 점이 번거로웠다. 액티비티 스택을 어떻게 관리해야하며, 화면전환은 어떻게 해야 진짜 탭바 레이아웃처럼 보이게 할 수 있을까? 라는 고민에 대한 해결책이다. 1. 우선은 탭바 버튼을 누를때 액티비티의 화면전환 애니메이션을 제거하자. 실제 프래그먼트로 이루어진 탭바 레이아웃의 경우, 탭바 버튼을 누를때 화면이 움직이지 않는다. 즉, 애니메이션이 없다는 얘기이다. 그래서 나는 Animation Style 을 없앤 AppTheme 을 만든 다음, Manifest 파일에서 애니메이션이 제거되어야 하는 탭바 액티비티에 NoAnimTheme 을 설정해주었다. scre..
1. Koin 이란? Koin 이란, 순수 kotlin 으로 작성된 Dependency Injection 프레임워크 (이하 DI 프레임워크)이다. DI 란 Inverse Of Control (제어 역전) 을 통해 객체끼리의 의존 관계를 분리시키는 디자인 패턴을 말한다. 즉, 쉽게 말해서 객체 A 내부에서 객체 B 를 어떤 방식으로든 사용하는 경우 객체 B 에 대해 객체 A 가 의존하고 있다고 볼수 있으며, 객체 A 에서 객체 B 를 초기화 하지 않고 사용할 수 있도록 외부에서 객체 B 를 초기화하여 객체 A 에 주입해주는 것을 DI 라고 생각할 수 있다. DI 관련 내용 정리 포스팅 : https://salix97.tistory.com/264 안드로이드에서 대표적으로 많이 사용하는 DI 프레임워크로 Da..
구글 공식문서에서는 Dependency Injection (줄여서 DI)에 관한 내용이 Best Practice 에 분류되어 있다. 또한, 현재 구글에서는 DI 프레임워크인 Dagger 를 공식적으로 지원하고 있다. 그 정도로 DI 가 구글에서 매우 중요하게 생각하고, 권장하는 기술이라는 것을 알 수 있다. 그렇다면, Dependency Injection 이란 무엇이고 왜 사용하는 것일까? 1. Dependency 란? Dependency Injection 가 무엇인지 알기 위해서는 먼저 Dependency 가 무엇인지 짚고 넘어가야겠다. Dependency 는 "의존성" 이라는 뜻이다. 일반적으로 둘 중 하나가 다른 하나를 어떤 용도를 위해 사용하는 경우를 Dependency 라고 하는데, 여기서는 객..
안드로이드에서 String.xml 을 동적으로 사용하고 싶은 상황이 있을 수 있다. 예를 들어, 로그인한 유저의 이름을 불러주면서 새로 온 메시지의 개수를 알려줘야하는 String Resource 가 있다고 생각해보자. 그 문장은 아래와 같이 string formatter 를 사용한 format string 으로 표현될 수 있다. 여기서 사용되는 string format 은 Java5+ 의 String.format() (문자열 형식 지정)과 같다. 서식 문자열을 사용한 형식 문자열을 만들 수 있다. (참고) 서식 문자열의 앞에 "%"를 붙여 문자열에 기술해 두면 그 그위치에 변수의 값을 형식화하여 넣을 수 있다. Hello, %1$s! You have %2$d new messages. %1$s 는 첫 번..
AAC ViewModel 1. AAC ViewModel 이란? 안드로이드 MVVM 아키텍쳐에 대해 공부하다보니 AAC View Model 이라는 것에 대해 나온다. MVVM 을 간단히 설명해보자면, Model - View - ViewModel 로 이루어진 구조를 말한다. 여기서, Model 은 데이터를 가져오는 로직 자체 View 는 데이터를 보여주는 부분 (xml 과 Activity/Fragment) ViewModel 은 View 에 보여지는 데이터를 관리하는 부분이다. Presenter 와 다르게 View 에 대한 참조를 하지 않는다. MVVM 패턴에서 View 는 View Model 에 바인드되어, View Model 을 관찰한다(옵저버 패턴). 또한, View Model 의 변화가 있으면 View..