Butterknife的使用

介绍如何使用Jake大神的butterknife。。。

About Butterknife

ButterKnife是一个Android View注入的库,使用这个库我们可以不用写很多无聊的findViewById()和setOnClickListener()等代码。

项目的主页在这里:http://jakewharton.github.io/butterknife/

如何使用

非常简单,看一张图就明白了:

首先在项目的build.gradle中disable InvalidPackage以避免lint warning:

lintOptions {
  disable 'InvalidPackage'
}

然后在module的build.gradle中引用butterknife:

compile 'com.jakewharton:butterknife:7.0.1'

最后点击‘sync project with Gradle files’。

这样就已经做好了在代码中使用butterknife的准备了。

通常来说我们使用layout xml中定义的view是这样子的:

Button button = (Button)findViewById(R.id.button);
TextView textView = (TextView)findViewById(R.id.textView);
RadioButton radioButton  = (RadioButton)findViewById(R.id.radioButton);
CheckBox checkBox= (CheckBox)findViewById(R.id.checkbox);
EditText editText = (EditText)findViewById(R.id.editText);
VideoView videoView = (VideoView)findViewById(R.id.videoView);
WebView webView = (WebView)findViewById(R.id.webView);

而使用butterknife呢?像这样:

@Bind(R.id.button)
Button button;
@Bind(R.id.textView)
TextView textView;
@Bind(R.id.radioButton)
RadioButton radioButton;
@Bind(R.id.checkBox)
CheckBox checkBox;
@Bind(R.id.editText)
EditText editText;
@Bind(R.id.videoView)
VideoView videoView;
@Bind(R.id.webView)
WebView webView;

@OnClick(R.id.button)
protected void Toast(){
    Toast.makeText(getApplicationContext(),"Hello Android Butter Knife",Toast.LENGTH_LONG).show();
}

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

}

非常清晰,记得在onCreate()方法中插入ButterKnife.bind(this)就可以了。

另外,这里只是最基本的使用案例,还有很多其他的方法,比如bind一个view list,bind fragment等等,就不再一一介绍。

Android Studio插件

如果手动的将butterknife binding view的代码敲进去,貌似还是有些繁琐,还好有android studio的一个plugin可以让我们的生活更轻松,效果如下:

使用方法也很简单:在你需要导入注解的Activity或者Fragment或者ViewHolder的layout资源代码上,右击,选择 Generate 然后 Generate ButterKnife Injections,这时候出现上面的那个选择框。

具体的安装配置使用方法参考它们的github项目就可以了:https://github.com/avast/android-butterknife-zelezny