버터 나이프 고급 용법

4222 단어 butterknife
Butter Knife
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;

좋은 웹페이지 즐겨찾기