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使用方法总结,写的比较好,从简介(优缺点),配置,基本使用,使用心得等讲解。