目前最新的版本是8.4.0的
官网:http://jakewharton.github.io/butterknife/
GitHub:https://github.com/JakeWharton/butterknife
配置:
1.在app下的build.gradle中添加apply和compile
apply plugin: 'com.android.application' <strong>apply plugin: 'com.neenbedankt.android-apt' apply plugin: 'com.jakewharton.butterknife'</strong> android { compileSdkVersion 24 buildToolsVersion "24.0.3" aaptOptions { cruncherEnabled = false useNewCruncher = false } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:24.2.1' testCompile 'junit:junit:4.12' <strong>compile 'com.jakewharton:butterknife:8.4.0' apt 'com.jakewharton:butterknife-compiler:8.4.0'</strong> }
2.在project下的build.gradle中添加classpath
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.2.0' classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.0' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } } task clean(type: Delete) { delete rootProject.buildDir }
3.在Activity中配置并使用
class ExampleActivity extends Activity { @BindView(R.id.title) TextView title @BindView(R.id.subtitle) TextView subtitle; @BindView(R.id.footer) TextView footer; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.simple_activity); ButterKnife.bind(this); // TODO Use fields... } }
4.绑定Button,参数可选
<span style="font-size:12px;">@OnClick(R.id.submit) public void submit(View view) { // TODO submit data to server... }</span> @OnClick(R.id.submit) public void submit() { // TODO submit data to server...
5.绑定ViewHolder
static class ViewHolder { @BindView(R.id.title) TextView name; @BindView(R.id.job_title) TextView jobTitle; public ViewHolder(View view) { ButterKnife.bind(this, view); } }
6.绑定资源
class ExampleActivity extends Activity { @BindString(R.string.title) String title; @BindDrawable(R.drawable.graphic) Drawable graphic; @BindColor(R.color.red) int red; // int or ColorStateList field @BindDimen(R.dimen.spacer) Float spacer; // int (for pixel size) or float (for exact value) field // ... } }
7.代码混淆
-keep class butterknife.** { *; } -dontwarn butterknife.internal.** -keep class **$$ViewBinder { *; } -keepclasseswithmembernames class * { @butterknife.* <fields>; } -keepclasseswithmembernames class * { @butterknife.* <methods>; }
8.插件Zelezny
可视化快速生产view
安装Preferences → Plugins → Browse repositories and search for ButterKnife Zelezny
或Preferences → Plugins → Install plugin from disk
GitHub地址:https://github.com/avast/android-butterknife-zelezny
使用(图是官网的):
鼠标放在布局上右键——>Generate——Generate ButterKnife Injections