안녕하세요!! 오늘은 편리한 안드로이드 코딩에 있어서 사용하면 편리한 라이브러리중 하나인 Butter Knife 라이브러리를 알아보겠습니다!!
java의 annotation을 사용하여 view 를 편리하게 java코드 에 할당할수 있습니다.
설명보다는 코드와 스크린샷을 보면서 알아보겠습니다.
기본적으로
public class BasicActivity extends AppCompatActivity implements OnDateSelectedListener, OnMonthChangedListener {
private static final DateFormat FORMATTER = SimpleDateFormat.getDateInstance();
MaterialCalendarView widget;
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_basic);
ButterKnife.bind(this);
MaterialCalendarView widget = (MaterialCalendarView)findViewById(R.id.calendarView);
TextView textView = (TextView)findViewById(R.id.textView);
widget.setOnDateChangedListener(this);
widget.setOnMonthChangedListener(this);
//Setup initial text
textView.setText(getSelectedDatesString());
}
...
이와같은 코드를
public class BasicActivity extends AppCompatActivity implements OnDateSelectedListener, OnMonthChangedListener {
private static final DateFormat FORMATTER = SimpleDateFormat.getDateInstance();
@Bind(R.id.calendarView)
MaterialCalendarView widget;
@Bind(R.id.textView)
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_basic);
ButterKnife.bind(this);
widget.setOnDateChangedListener(this);
widget.setOnMonthChangedListener(this);
//Setup initial text
textView.setText(getSelectedDatesString());
}
...
이런식으로 변경할수 있습니다
라이브러리는 안드로이드 스튜디오의 Gradle Scripts 의 build.gradle(Module) 에서
dependencies 안에 compile 'com.jakewharton:butterknife:7.0.1' 을 추가하면 사용가능합니다.
액티비티로 이동후 onCreate 안에 빨간박스 처럼 ButterKnife.bind(this); 로 바인드를 하면
이전처럼 onCreate 안에서 findViewId 가 아닌
@Bind 로 변수를 얻어와서 사용가능합니다.
라이브러리의 사용으로인해 findVIewId를 10번 이면 10번 얻어와서 사용해야 하는 번거로움을 줄일수있습니다!
뿐만아니라 ClickListener 또한 setOnClickListener 을 선언할 필요 없이
@OnClick(R.id.action_btn)
void onCallClick() {
....
}
이와같이 사용 가능합니다.
오늘은 안드로이드 코딩에있어서 유용한 라이브러리인 Butter Knife 에 대해 알아보았습니다!! 다음번엔 더욱 유용한 정보를 가지고 돌아오겠습니다.
'Android' 카테고리의 다른 글
[안드로이드]인텐트 로 값 전달(Intent putExtra) (0) | 2017.08.30 |
---|---|
[안드로이드]커스텀 zxing(custom바코드스캐너) (59) | 2017.08.29 |
[안드로이드]구글 클라우드비전API 사용하기(Google Cloud Vision API) (5) | 2017.08.08 |
[안드로이드]텍스트뷰(TextView) 옆으로 넘어가기(전광판기능) (0) | 2017.08.08 |
[안드로이드]달력 만들기(calendar) (155) | 2017.08.07 |