Butterknife
官网:http://jakewharton.github.io/butterknife/
github:https://github.com/JakeWharton/butterknife
注意:当前最新的版本是10.1.0,使用了Androidx中的库,这个库和Android的库不兼容,如果想解决这个问题,网上给的解决办法都比较麻烦,最好的办法是等官方修改吧,当时运行的9.0.0版本是正常的(在Android 28环境下编译的)。
// plug-gradle版本
classpath 'com.android.tools.build:gradle:3.4.2'
// gradle版本
distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip
使用
使用比较简单,也是比较常见的,如下:
@BindView(R2.id.button) //绑定button 控件
public Button button ;
@BindString(R2.string.app_name) //绑定资源文件中string字符串
String str;
@BindView( R2.id.imageView ) //绑定ImageView 控件
public ImageView imageView ;
@BindBitmap( R2.mipmap.bm)//绑定Bitmap 资源
public Bitmap bitmap ;
@BindColor( R2.color.colorAccent ) //具体色值在color文件中
int black ; //绑定一个颜色值
@OnClick(R2.id.button1 ) //给 button1 设置一个点击事件
public void showToast(){
Toast.makeText(this, "is a click", Toast.LENGTH_SHORT).show();
}
与Dagger的区别:
Dagger 框架是一个完全静态的,编译时的依赖注入框架,可以运行在java或者Android中,这个框架是由Square公司开发的,后来2.0版本由google维护。
Butterknife 是由 JakeWharton 开发的。这个框架严格来说不算是依赖注入的框架,仅仅是将view绑定了。这个框架也是相对Dagger 也是有优点的,因为ButterKnife用到的注解并不是在运行时反射的,而是在编译的时候生成新的class,因此对性能基本没有损失。
-------
参考:Android Butterknife使用方法总结,写的比较好,从简介(优缺点),配置,基本使用,使用心得等讲解。