본문 바로가기

나의 플랫폼/안드로이드

[Android] ButterKnife Library

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

우선, 이 글을 보시기전에 Proguard를 적용하실 App은 약간 고려해보세요.

저 같은 경우, 여러 Library와 혼동되서 쓰다보니 ButterKnife 쪽에서 Proguard를 하면 찾지 못하는 부분이 있었습니다.

그런 분들은 사용 안하시는편이 좋을듯 합니다.


ButterKnife를 접하게 된지는 얼마 되지 않았습니다.

처음에 annotation으로 멀 하는거지? 하며 크게 관심을 가지지 않았지만,

Android 개발할때, 정말 편한 기능 입니다.


몇가지만 공유하고자 이렇게 블로그를 씁니다.


1. findViewById 여 이제 안녕~


안드로이드 개발을 처음 시작 하게 되면, 화면 Layout을 잡은 후 해당 View를 전부 findViewById 로 찾아 전역변수를 빼놓는 경우가 많을 겁니다.

(아니신 분들도 있으신가요?? 그냥 제 경우에..^^a)

그럴때마다 전역변수 만들고, 해당 전역 변수를 findViewById를 통해서 가지고 오고 또 Cast 합니다.

그럼 소스 줄이 주루룩 늘어나지요.


하지만 ButterKnife 라이브러리를 쓰면 이 모든게 한줄로 끝납니다. (ButterKnife bind 하는 함수는 빼구요^^a)


즉, 아래 소스가

private EditText mEditHtml;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mEditHtml = (EditText) findViewById(R.id.edit_html);
}

이렇게 바뀌는 겁니다.

@Bind(R.id.edit_html) EditText mEditHtml;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);

mEditHtml.setText("<b></b>");
}


이게 머야~ 하시겠지만, 소스가 커지거나 유지보수 할 때 한눈에 알아보기도 편합니다. 제가 소스를 적게 만들어서 더욱 못 느껴 지신가 봅니다.


2. OnClickListener 여 이제 안녕~


OnClickListener를 사용할려면, 아래와 같은 로직으로 하는 경우가 많습니다.


 - OnClickListener를 implements 시킨다.

 - 해당 View에 setOnClickListener 함수를 호출한다.

 - OnClick 함수를 오버라이딩 한다.

 - view.getId()를 Switching하여 구분 한다.


그래서 이리 갔다가 저리 갔다가 정신 없이 코딩하고 빼먹은게 있어서 오류가 발생하기도 하죠.

 

// OnClick
@OnClick(R.id.btn_image_select_) void imageSelect() {

// 이벤트 처리
}

위와 같이 함수 하나만 정의하면 OnClick 끝입니다.


3. getResources 여 이제 안녕~


strings.xml에서 string을 가지고 올때는 getResources().getString(R.string.xxxx) 이런식으로 가지고 옵니다.


class ExampleActivity extends Activity {
  @BindString(R.string.title) String title;
  @BindDrawable(R.drawable.graphic) Drawable graphic;
  @BindColor(R.color.red) int red; // int or ColorStateList field
  @BindDimen(R.dimen.spacer) Float spacer; // int (for pixel size) or float (for exact value) field
  // ...
}

ButterKnife 에서는 위와 같이 Resource 들을 바로 가지고 올수가 있습니다.



이외에도 좋은 기능 들이 많습니다. View 들의 List를 만들수도 있구요. 머 등등 

한번 보시고 사용하시면 좋을 것 같아 공유해드립니다.

감사합니다.


ButterKnife 설명 : http://jakewharton.github.io/butterknife/

ButterKinfe gitHub : https://github.com/JakeWharton/butterknife


## 이블로그는 어디까지는 찾았던 부분을 잊지 않기 위해 올려놓은 것 입니다.

    내용이 부실해도 이해해 주시길 바랍니다.