butterknife詳細使用及混淆打包和新版本(8.6.0)的使用方法
阿新 • • 發佈:2019-01-05
我們這寫程式碼時會寫很多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混淆
#butterknifeButterKnife新版本和老版本由於官方方法改變所以混淆方法不同(第三行不同)-keep class butterknife.** { *; } -dontwarn butterknife.internal.** -keep class **$$ViewBinder { *; }-keepclasseswithmembernames class * { @butterknife.* <fields>; } -keepclasseswithmembernames class * { @butterknife.* <methods>; }
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; } } }