ButterKnife(黄油刀)

概念:

ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象,有了ButterKnife可以很轻松的省去这些步骤。是大神JakeWharton的力作,目前使用很广。最重要的一点,使用ButterKnife对性能基本没有损失,因为ButterKnife用到的注解并不是在运行时反射的,而是在编译的时候生成新的class。项目集成起来也是特别方便,使用起来也是特别简单。

为什么要使用:

  1. 强大的View绑定和Click事件处理功能,简化代码,提升开发效率
  2. 方便的处理Adapter里的ViewHolder绑定问题
  3. 运行时不会影响APP效率,使用配置方便
  4. 代码清晰,可读性强

配置ButterKnife:

  • 在工程gradle下添加
dependencies {
        classpath 'com.android.tools.build:gradle:3.4.2'
        classpath 'com.jakewharton:butterknife-gradle-plugin:10.0.0'  //添加这一行
    }
  • 在app的gradle下添加
apply plugin: 'com.jakewharton.butterknife'

implementation 'com.jakewharton:butterknife:10.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'

(如果报错就注释掉这一行)

apply plugin: 'com.jakewharton.butterknife'

出现错误

The given artifact contains a string literal with a package reference 'android.support.v4.content' t
因为版本冲突的原因

使用:绑定了一个点击事件和长按事件

public class MainActivity extends AppCompatActivity {
    @OnClick(R.id.button1 )   //给 button1 设置一个点击事件
    public void showToast(){
        Toast.makeText(this, "is a click", Toast.LENGTH_SHORT).show();
    }
    @OnLongClick( R.id.button2 )    //给 button2 设置一个长按事件
    public boolean showToast2(){
        Toast.makeText(this, "is a long click", Toast.LENGTH_SHORT).show();
        return true ;
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //未参与绑定
        Button button3=findViewById(R.id.button3);

        //绑定activity
        ButterKnife.bind( this ) ;
        //未参与绑定时代码量大
        button3.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View view) {
                Toast.makeText(MainActivity.this, "is a long click", Toast.LENGTH_SHORT).show();
                return true;
            }
        });
    }
}

布局文件:



    

你可能感兴趣的:(ButterKnife(黄油刀))