Java / Android에는 개발에 도움을 주는 편리한 라이브러리들이 많이 있습니다. 본 앱은 개발의 편의를 위해 아래의 라이브러리를 사용합니다.
- lombok
- Timber
- Lightweight-Stream-API
- Rx Java2
- Rx Android
이글을 쓴 시점에서 build.gradle 설정은 아래와 같습니다.
dependencies { compileOnly 'org.projectlombok : lombok : 1.16.18' annotationProcessor 'org.projectlombok : lombok : 1.16.18' compile 'com.jakewharton.timber : timber : 4.5.1' compile 'com.annimon : stream : 1.1.9' compile 'io.reactivex.rxjava2 : rxjava : 2.1.3' compile 'io.reactivex.rxjava2 : rxandroid : 2.0.1' ... 생략 ... }
각 라이브러리는 다음과 같은 기능을 합니다.
쉽게 각 라이브러리의 편의를 제공합니다.
- Lombok
@AllArgsConstructor @NoArgsConstructor @Data @Setter @Getter 등의 특수 기능을 제공하여 생성자와 getter / setter을 직접 만드는 수고를 덜어 줍니다.
- Timber
여러 포맷과 호환되는 로깅 API를 제공합니다. 디버그 빌드에만 로그를 출력 하고, 릴리즈 빌드시에는 버그 트래킹에 필요한 로그만 출력하도록 쉽게 제어가 가능합니다.
- Lightweight-Stream-API
Optional, Stram API 호환 API, java.util.function 패키지 호환 인터페이스를 제공합니다. 이외에도 Java 8 표준에서 제공하는 FunctionalInterface에 해당하는 ThrowableConsumer 인터페이스등을 제공합니다. ThrowableXXX 시리즈를 제공합니다.
- RxJava2
Java에서 Reactive 프로그래밍을 위한 라이브러리입니다. RxJava의 2.x 버전에서는 Reactive Streams를 구현하고 있습니다. 자세한 내용은 RxJava2.x에 도입 된 Reactive Streams 을 참고 하면됩니다.
- RxAndroid
RxJava2를 안드로이드에서 사용하기 위해 anroid.os.Looper에서 io.reactivex.Scheduler를 생성하는 API와 Android의 MAIN 스레드로 동작하는 Scheduler의 취득 API를 제공합니다.
먼저 만들고자 하는 앱의 완성 화면은 아래와 같습니다.
이 Fragment의 레이아웃은 아래와 같습니다.
화면 상단의 Pull To Refresh 의 UI를 구현하기 위해 SwipeRefreshLayout을 배치하였고, 그 내부에는 사용자 목록을 표시하는 RecyclerView를 배치하였습니다. 마지막으로 배치한 AppCompatTextView 는 사용자 목록이 비어있을때 메시지를 표시하는 View 입니다.
목록에 데이터를 표시하는 부분은 ListView에서 동일한 UI를 얻을 수 있지만, RecyclerView에는 ViewHolder 패턴을 전제로 구현되어 있어 쉽게 Adapter 클래스 애니메이션을 사용할 수 있습니다. Material Design을 구현하는 Design Support 라이브러리 같이 사용하도록 구현되어 있어 더 이상 ListView를 사용할 이유가 없습니다.
AppCompatTextView 뿐만 아니라 지원 라이브러리가 제공하는 표준 View 대체 클래스는 OS 버전 별로 새로운 기능을 사용할 수 있는 장점이 있기 때문에 적극적으로 사용하는게 좋다고 생각합니다.
이러한 View를 사용하기 위해서는 아래와 같은 라이브러리를 추가해야합니다.
- support-v4
- appcompat-v7
- recyclerview-7
dependencies { // Android Studio에서 생성 된 프로젝트라면 처음부터 설정되어 있습니다 implementation 'com.android.support:support-v4:26.1.0' compile 'com.android.support:appcompat-v7:26.1.0' compile 'com.android.support:recyclerview-v7:26.1.0' ... 생략 ... }
'IT 이모저모' 카테고리의 다른 글
Android 8.0과 Reactive Extensions을 이용한 응용프로그램 개발 - 3 (0) | 2018.03.14 |
---|---|
batch 명령어 Taskkill (프로세스 종료) (3) | 2018.03.13 |
Android 8.0과 Reactive Extensions을 이용한 응용프로그램 개발 - 1 (0) | 2018.03.13 |
C# 반올림, 올림, 버림 사용하기 (0) | 2018.03.09 |
Barrier 란? - 5 (0) | 2018.03.09 |