버터 나이프 고급 용법
4222 단어 butterknife
Butter Knife 는 Jake Wharton 이 만 든 유행 하 는 오픈 소스 주입 라 이브 러 리 입 니 다.쉽게 말 하면 Butter knife 는 findviewby id 와 setOn ClickListener 를 주석 으로 대체 하면 진정 으로 유용 한 코드 로 돌아 갈 수 있 습 니 다.
1
compile
'com.jakewharton:butterknife:7.0.1'
Butter Knife 는 컴 파일 할 때 주 해 를 사용 하기 때문에 실행 할 때 부담 이 되 지 않 습 니 다.실제로 반사 나 실행 시 코드 를 만 드 는 것 이 아니 라 필요 한 코드 를 미리 만 들 었 다.그래서 그것 은 어떠한 성능 문제 도 일 으 키 지 않 고 응용 도 늦 추 지 않 을 것 이다.
다음은 개발 자 들 이 사용 하 는 Butter Knife 특성 을 거의 보지 못 했 습 니 다.이것들 은 모두 좋 은 특성 입 니 다.그래서 당신 도 그것들 을 사용 할 수 있 기 를 바 랍 니 다!
1.listener 의 여러 view 설정 방법 을 자주 사용 합 니 다.
@OnClick({ R.id.button1, R.id.button2, R.id.button2 })
public void buttonClicks(View view) {
switch(view.getId()) {
case R.id.button1:
Toast.makeText(this, "Button1 clicked!", LENGTH_SHORT).show();
break;
case R.id.button1:
Toast.makeText(this, "Button2 Clicked!", LENGTH_SHORT).show();
break;
case R.id.button1:
Toast.makeText(this, "Button3 clicked!", LENGTH_SHORT).show();
break;
}
}
2.더 많은 listener
@OnLongClick(R.id.hello) boolean sayGetOffMe() {
Toast.makeText(this, "Let go of me!", LENGTH_SHORT).show();
return true;
}
@OnItemClick(R.id.list_of_things) void onItemClick(int position) {
Toast.makeText(this, "You clicked: " + adapter.getItem(position), LENGTH_SHORT).show();
}
@OnItemSelected({R.id.spinnerCountry})
void onItemSelected(Spinner spinner, int position) {
}
@OnItemSelected(value=R.id.spinnerCountry, callback = OnItemSelected.Callback.NOTHING_SELECTED)
void onNothingSelected() {
}
마찬가지 로 view 에 다음 listener 를 추가 할 수 있 습 니 다.
@OnLongClick @OnPageChange OnPageChange.Callback @OnTextChanged OnTextChanged.Callback @OnTouch @OnItemLongClick @OnCheckedChanged
3.귀속 자원
이것 도 Butter knife 가 제공 하 는 우수한 기능 중의 하나 이다.사용 @findViewById 대신 Bind 주 해 는 colors,dimens,string,drawable 등 자원 을 연결 할 수 있 습 니 다.
class ExampleActivity extends Activity {
@BindColor(R.color.red) int red;
@BindString(R.string.activity_title) String activityTitle;
@BindDimen(R.dimen.btn_horizontal_margin_common) Float btnHorizontalMarginCommon;
@BindDrawable(R.drawable.ic_instructions) Drawable iconInstructions;
}
4.여러 view 를 하나의 List 나 Array 로 구성 합 니 다.
Bind({ R.id.first_name, R.id.middle_name, R.id.last_name })
List<EditText> nameViews;
apply 방법 은 list 의 모든 view 에서 act 를 한꺼번에 사용 할 수 있 습 니 다.
ButterKnife.apply(nameViews, DISABLE);
ButterKnife.apply(nameViews, ENABLED, false);
Action 과 Setter 인 터 페 이 스 는 간단 한 것 을 지정 할 수 있 습 니 다.
behavior
。
static final ButterKnife.Action<View> DISABLE = new ButterKnife.Action<View>() {
@Override public void apply(View view, int index) {
view.setEnabled(false);
}
};
static final ButterKnife.Setter<View, Boolean> ENABLED = new ButterKnife.Setter<View, Boolean>() {
@Override public void set(View view, Boolean value, int index) {
view.setEnabled(value);
}
};
5.View 의 속성 설정
Android 속성 도 apply 방법 과 함께 사용 할 수 있 습 니 다.
ButterKnife.apply(nameViews, View.ALPHA, 0.0f);
6. ButterKnife.findById to find views particularly
Butter knife 는 findById 방법 을 포함 하고 있 습 니 다.view 에서 사용 해 야 합 니 다. ,Activity,또는 Dialog 에서 find view 때그리고 유형 을 자동 으로 바 꿀 수 있 습 니 다.
View view = LayoutInflater.from(context).inflate(R.layout.thing, null);
TextView firstName = ButterKnife.findById(view, R.id.first_name);
TextView lastName = ButterKnife.findById(view, R.id.last_name);
ImageView photo = ButterKnife.findById(view, R.id.photo);
7. @Nullable annotation
대상 view 를 찾 을 수 없다 면,필드 가 레이아웃 에 존재 하지 않 을 수도 있 음 을 암시 합 니 다.
@Nullable @Bind(R.id.edUserName)
EditText edUserName;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
butterknife 오류 메 서 드"value"를 찾 을 수 없습니다 심 볼 을 해결 할 수 없습니다프로젝트 에서 butterknife 주 해 를 사용 할 때 이러한 오류 가 발생 하 는 것 은 일반적으로 가이드 백 이 없 기 때 문 입 니 다. 이때 우 리 는 alt 키 와 enter 키 를 누 르 고 있 었 다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.