Skip to main content

[Android] Butter Knife Library(1)

Android UI 개발 시, 반드시 선언해 주어야 하는 구문 중 하나가 바로 findViewById 이다.
이는 View 를 선언할 때 반드시 필요한 구문이지만, 반복적으로 사용해야 하고, 메소드가 길어지는점, 특히, Adapter 에서 Holder pattern 과 같이 사용하게 되면 같은말을 두번해야 하는 번거로움 마저 느껴진다.

최근에는 이같은 반복적인 작업과 UI 선언 부의 노력을 줄이고, 코드에 좀 더 집중하기 편한 Library 들이 선보이고 있다.

그중에서도 눈의 띄는 Library 는 단연 AndroidAnnotations 과 지금부터 이야기 할 Butter Knife 이다.
AndroidAnnotations
AndroidAnnotations logo
AndroidAnnotations 은 지난 GDG mini conference 에서도 소개된 적이 있다.
(사실 그때 처음 일았지만..)

당시에 Clean Code 라는 주제로 코드 분량을 줄이고, 실제 동작하는 로직에 좀 더 집중할 수 있도록 도와 주었다. 사실 , AndroidAnnotations 이 더 많은 기능을 제공하고 있지만, EActivity 사용시 _ 를 추가해야 한다는 점, 과거 intellij 에 적용시 몇몇 버그들이 발생 으로 인해 (현재는 해결됬을지도.) 프로젝트에 적용하기 쉽지 않았다.

그러던 중, 최근 가장 hot 한 Opensource 를 제공하고 있는 Square 팀의 JakeWharton 이 Butter Knife 를 Release 하였다.
Butter Knife logo
현재 가장 최신 버전은 2.0.1 이고 계속해서 기능개선이 이루어 지고 있다.

Butter Knife 는 아래와 같은 장점을 지니고 있다.

1. LightWeight Size


모바일 device 에서는 jar 하나 추가하는데도 많은 고민을 해야 한다. 안그래도 많은 기능들을 추가해야 되고, library 를 사용해야 하는데 이렇게 코드를 줄이기 위해서 많은 용량을 할애하기도 애매하다.

androidannotations 의 경우에는 build path 에 적용되야 할 jar 의 용량이 61kb 이다.
반면, butter knife 는 19kb 로 상대적으로 lightweight 하다고 말할 수 있다.

- androidannotations-2.7.1.jar : 543kb
- androidannotations-2.7.1.jar : 61kb
- butterknife-2.0.1.jar : 19kb

 2.Easy to Use


기존 라이브러리 의 단점 중 하나를 꼽자면 사용하기 어렵다는 점 이다. 예를 들어 AndroidAnnotations 의 경우, @EActivity 를 사용하면서 Manifest.xml 을 수정해야 하고, 개발 전 세팅 단계에서 많은 시간을 필요로 한다.

Butter Knife 의 경우, jar 를 build path 에 등록하고 annotation processing 설정만 해 주면 간편하게 사용 할 수 있다. 또한, eclipse, android studio(intellij) 모두 에러없이 잘 작동한다.

사용법도 비교적 쉽기 때문에 annotation 에 깊은 지식이 없다고 하더라도 쉽게 접근이 가능하다.

이제 Butter Knife 를 Android Studio 에서 사용해 보자.
Android Studio 에 Library 를 추가하면 다음 과 같은 세팅이 필요하다.

우선 libs 폴더에 butterknife-2.0.1.jar 를 추가하자.


Android Studio 에서는 Gradle build 를 사용하기 때문에, build.gradle 에 해당 library 를 dependencies 에 추가 해야 한다.

- build.gradle -
dependencies {
    compile 'com.android.support:support-v4:13.0.+'
    compile files ('libs/butterknife-2.0.1.jar')
}

Butter Knife 역시 annotation processing 을 사용하기 때문에 해당 옵션을 enable  해 주어야 한다.
Preferences -> Compiler -> Annotations Processors -> Enable annotation processing  을 체크 한다.
마지막으로 Project Structure 에 해당 library 를 사용하도록 추가 함으로써 개발 설정이 끝이 난다.



Comments

Popular posts from this blog

[리뷰] 러스트 핵심 노트

C 와 C++ 의 성능을 보이면서 동시성 문제를 좀 더 쉽게 처리할 수 있는 언어에 대한 소개가 종종 이루어 지곤 하는데 최근까지 이러한 분야에서 가장 두드러진 활약을 보이는 언어를 꼽으라면 단연 Go 와 러스트 를 꼽을 수 있을 것입니다.  [러스트 핵심 노트] 는 예제를 통해 제목 그대로 러스트의 핵심 부분을 설명하면서 러스트란 언어란 이런 언어다 라고 소개하고 있습니다. [러스트 핵심 노트] 는 언어 입문서에 가깝기 때문에 러스트 언어를 세세하게 설명하지는 않습니다. 그러나 러스트가 가지고 있는 특징들을 잘 설명하고 있어 새로운 언어가 나와서 흥미를 느끼시는 분들이 가볍게 읽을 수 있는 책이라 생각 됩니다. 다만 중간 중간 오타가 눈에 띄기 때문에 (원서도 같은 오류가 있었습니다.)  추가적으로 검색을 해 보거나 한빛 미디어 사이트에서 오탈자를 반드시 확인할것을 추천 드립니다. (http://www.hanbit.co.kr/realtime/books/book_view.html?p_code=E2088508957) 책 분량은 많은 편은 아니지만 내용은 절대 가볍지는 않습니다. 앞에서 이야기 했듯이 러스트를 빠르게 살펴본 다음 토이프로젝트를 하고자 하시는 분께는 좋은 시작점이 될 것입니다.

[Android] DialPad 자동완성 기능

Android 4.3 에 추가된 기능 중 "다이얼 패드 자동완성" 기능이 란 것이 있다. 말 그대로 Dialpad 에서 전화번호 입력시, 해당 번호를 먼저 검색해서 화면에 노출 시키는 기능이다. 그런데 4.3 으로 업데이트 했음에도 불구하도 번호 입력시 자동검색이 이루어지지 않는다. 확인결과 기본적으로 해당 기능이 ON 으로 세팅되어 있지 않기 때문.. 해당 기능을 설정하기 위해서는 dialer -> option menu(설정) -> 통화설정 화면에서 "다이얼패드 자동완성" 체크. 그런데 앞자리 수 부터 차례대로 입력해야 검색 해 주는것은 좀... end.

[리뷰] 스위프트 프로그래밍

스위프트 3 가 발표된 이후로 국내에도 스위프트 3 내용을 다루는 책들이 하나둘씩 출간되고 있습니다. 그리고 지금부터 이야기할 <스위프트 프로그래밍> 역시 그중 한 권입니다. 이 책은 기존에 있던 책들과는 달리 iPhone이나 Mac App 개발에 필요한 내용을 다루지는 않습니다. 개인적으로는 이러한 점 때문에 스위프트란 언어 자체에 좀 더 집중할 수 있었습니다. 책은 크게 다섯 개의 파트로 구성되어 있으며 각 파트별 목차는 다음과 같습니다. Part Ⅰ 스위프트 기초 1. 스위프트 2. 스위프트 처음 시작하기 3. 데이터 타입 기본 4. 데이터 타입 고급 5. 연산자 6. 흐름 제어 7. 함수 8. 옵셔널 Part Ⅱ 객체지향 프로그래밍과 스위프트 9. 구조체와 클래스 10. 프로퍼티와 메서드 11. 인스턴스 생성 및 소멸 12. 접근제어 Part Ⅲ 함수형 프로그래밍과 스위프트 13. 클로저 14. 옵셔널 체이닝과 빠른종료 15. 맵, 필터, 리듀스 16. 모나드 Part Ⅳ 확장 17. 서브스크립트 18. 상속 19. 타입캐스팅 20. 프로토콜 21. 익스텐션 22. 제네릭 23. 프로토콜 지향 프로그래밍 Part Ⅴ 스위프트 고급 24. 타입 중첩 25. 패턴 26. where 절 27. ARC 28. 오류처리 Part1, 2  까지는 스위프트 언어에 대한 기본적이고 전반적인 내용을 설명합니다. 스위프트를 처음 배우는 독자뿐만 아니라 스위프트를 조금 공부해 본 독자에게도 유용한 내용이 많았습니다. 특히, 스위프트 언어를 사용하는 데 있어 지켰으면 하는 규칙을 반복적으로 설명함으로써 자연스럽게 그러한 규칙이 손에 익히도록 한 점이 좋았습니다. 다만 중간중간 난이도가 갑자기 높아지는 부분이 있어 초심자에게는 책 앞부분에서 조금 힘들 수도 있겠다는 생각이 들었습니다. Part3  는 아마도 이 책에서 가장 ...