我们这写代码时会写很多findViewById(),使用ButterKnife强大的View绑定和Click事件处理功能,简化代码,提升开发效率;
Androidstudio使用要引入以下依赖 Eclipse使用要到官方下载jar包 官方GitHub地址http://jakewharton.github.io/butterknife/
compile 'com.jakewharton:butterknife:8.6.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.6.0'
在项目文件夹下build.gradle文件下添加
classpath 'com.jakewharton:butterknife-gradle-plugin:8.6.0'
添加后为
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.1.0' classpath 'com.jakewharton:butterknife-gradle-plugin:8.6.0' } }
混淆打包:
6.0版本要在proguard-rules.pro文件添加
#butterknife -keep class butterknife.** { *; } -dontwarn butterknife.internal.** -keep class **$$ViewInjector{ *; } -keepclasseswithmembernames class * { @butterknife.* <fields>; } -keepclasseswithmembernames class * { @butterknife.* <methods>; }7.0 和8.0版本ButterKnife混淆
#butterknife -keep class butterknife.** { *; } -dontwarn butterknife.internal.** -keep class **$$ViewBinder { *; } -keepclasseswithmembernames class * { @butterknife.* <fields>; } -keepclasseswithmembernames class * { @butterknife.* <methods>; }ButterKnife新版本和老版本由于官方方法改变所以混淆方法不同(第三行不同)
6.0版本和7.0之后的版本方法使用不同(现在最新版本是8.6.0)
使用:绑定事件ButterKnife.bind(this)必须在setContentView();之后(6.0的老版本绑定事件是ButterKnife.injectView(this))
新版本使用示例
import butterknife.BindView; import butterknife.ButterKnife; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private static final String TAG = "MainActivity"; @BindView(R.id.btn) Button btn; @BindView(R.id.tabs) TabLayout tabs; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); ButterKnife.bind(this); btn.setOnClickListener(this); initView(); initData(); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn: break; } } }