新UI框架-Butter Knife

来源:互联网 发布:网站流量统计软件 编辑:程序博客网 时间:2024/05/20 16:34



一、声明控件

以注释字段@InjectView和一个view的ID开始,Butter Knife就可以在对应的布局中自动地进行cast

Butter Knife可用于Activity、Fragment或者是adapter中。

·在Activity中用法:

import butterknife.ButterKnife;import butterknife.InjectView;import butterknife.OnClick;

class ExampleActivity extends Activity {  @InjectView(R.id.title) TextView title;  @InjectView(R.id.subtitle) TextView subtitle;    @Override 
  public void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.simple_activity);    ButterKnife.inject(this);    // TODO Use "injected" views...  }}
·在Fragment中用法:

public class ExampleFragment extends Fragment {  @InjectView(R.id.button1) Button button1;  @InjectView(R.id.button2) Button button2;  @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {    View view = inflater.inflate(R.layout.fancy_fragment, container, false);    ButterKnife.inject(this, view);    // TODO Use "injected" views...    return view;  }}
·在Adapter中用法:

public class MyAdapter extends BaseAdapter {  @Override public View getView(int position, View view, ViewGroup parent) {    ViewHolder holder;    if (view != null) {      holder = (ViewHolder) view.getTag();    } else {      view = inflater.inflate(R.layout.whatever, parent, false);      holder = new ViewHolder(view);      view.setTag(holder);    }    holder.name.setText("hello everyone");    // etc...    return view;  }  static class ViewHolder {    @InjectView(R.id.title) TextView name;    @InjectView(R.id.job_title) TextView jobTitle;    public ViewHolder(View view) {      ButterKnife.inject(this, view);    }  }}
总之,ButterKnife.inject可以用在一切findViewById能用到的地方。

Injection APIs还提供了:

·Inject的任意object用Activity作为view root。在MVC设计模式中,要在其Activity中调用ButterKnife.inject(this, activity)。

·Inject的子类视图用ButterKnife.inject(this)

二、声明监听

import butterknife.ButterKnife;import butterknife.InjectView;import butterknife.OnClick;

 @OnClick(R.id.header)    public void header(){        Intent intent = new Intent() ;        intent.setClass(getActivity() , LoginActivity.class) ;        startActivity(intent);    }



参考:http://jakewharton.github.io/butterknife/

0 0
原创粉丝点击