ButterKnife

ButterKnife

一、简介

ButterKnife 是注解中相对简单易懂的很不错的开源框架,是一个专注于Android系统的View注入框架, 以前总是要写很多findViewById来找到View对象,有了ButterKnife可以很轻松的省去这些步骤。使用ButterKnife对性能基本没有损失,因为ButterKnife用到的注解并不是在运行时反射的,而是在 编译的时候生成新的class 。
Butterknife优点如下:
强大的View绑定和Click事件处理功能,简化代码,提升开发效率
方便的处理Adapter里的ViewHolder绑定问题
运行时不会影响APP效率,使用配置方便
代码清晰,可读性强

Butterknife的github下载地址: https://github.com/JakeWharton/butterknife

二、使用步骤

实验环境:Android Studio 3.3.2版本、SDK API 26、Butterknife 1.6.0
打开Android Studio 的settings,依此进行如下操作:

ButterKnife_第1张图片

在build.gradle 中添加如下两行代码:

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

注意在低于Android Studio 3.0版本的build文件中 implementation应改为compile
选中MainActivity中布局文件名称,右键点击生成按钮,如图所示

ButterKnife_第2张图片
ButterKnife_第3张图片
点击生成,自动注入三个View,并生成CheckBox和Button的点击事件函数,省去了我们查找元素的麻烦。生成后代码如下:

package com.example.butterknife;
public class MainActivity extends AppCompatActivity {
    @BindView(R.id.tv_butterknife)
    TextView tvButterknife;
    @BindView(R.id.cb_butterknife)
    CheckBox cbButterknife;
    @BindView(R.id.bt_butterknife)
    Button btButterknife;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
    }


    @OnClick({R.id.cb_butterknife, R.id.bt_butterknife})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.cb_butterknife:
                break;
            case R.id.bt_butterknife:
                break;
        }
    }
}

之后对代码进行进一步的完善,添加点击的实现以及更改TextView的文本显示。

    // 利用butterknife 生成点击事件
    @OnClick({R.id.cb_butterknife, R.id.bt_butterknife})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.cb_butterknife:
                Toast.makeText(this, "1111", Toast.LENGTH_SHORT).show();
                break;
            case R.id.bt_butterknife:
                Toast.makeText(this, "2222", Toast.LENGTH_SHORT).show();
                break;
        }
    }
   

三、效果演示

TextView的文本没用。点击bun1,弹出Toast提示1111
ButterKnife_第4张图片
点击bun2按钮,弹出Toast提示2222。
ButterKnife_第5张图片

四、其他常用标签

@BindArray 绑定string里面array数组;@BindArray(R.array.city ) String[] citys ;
@BindBitmap 绑定图片资源为Bitmap;@BindBitmap( R.mipmap.wifi ) Bitmap bitmap;
@BindString 绑定一个String id为一个String变量;@BindString( R.string.app_name ) String meg;
@BindColor 绑定color;@BindColor(R.color.colorAccent) int black;
@BindDimen 绑定Dimen;@BindDimen(R.dimen.borth_width) int mBorderWidth;
@BindDrawable 绑定Drawable;@BindDrawable(R.drawable.test_pic) Drawable mTestPic;
@BindFloat 绑定float
@BindInt 绑定int
@BindBool 绑定boolean值

五、小结

通过实际操作可以发现,butterknife 对app的运行性能基本不会产生影响,但是在编译的时候可能会有编译速度变慢的情况。上面演示的是在activity中使用butterknife,更多的用法可参考官方文档,用法类似。

浅谈Android ButterKnife框架的使用: https://blog.csdn.net/woaixuexihhh/article/details/90639970

Android Butterknife(黄油刀) 使用方法总结: https://blog.csdn.net/donkor_/article/details/77879630

你可能感兴趣的:(Android)