butterknife详细使用及混淆打包和新版本(8.6.0)的使用方法

来源:互联网 发布:淘宝ulzzang什么意思 编辑:程序博客网 时间:2024/06/06 09:27

我们这写代码时会写很多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;        }    }}



阅读全文
0 0