美文网首页Android 组件化开发
Android ButterKnife(Library)在组件化

Android ButterKnife(Library)在组件化

作者: 编程的猫 | 来源:发表于2020-02-14 00:01 被阅读0次

ButterKnife的官方项目的地址:https://github.com/JakeWharton/butterknife
ButterKnife的使用说明:http://jakewharton.github.io/butterknife/
ButterKnife的API文档:http://jakewharton.github.io/butterknife/javadoc/

ButterKnife由国外的jakewharton大神写的,主要作用是注入View获取控件的Id,以此减小代码的编写量。

以下只介绍在模块化的Library中的使用:
首先在Android Studio的Plugins下搜索


image.png

点击安装,然后重启Android Studio

1.在project的build.gradle下添加如下代码:

buildscript {
    repositories {
        google()
        jcenter()
        jcenter {
            url "http://jcenter.bintray.com/"
        }
        mavenCentral() // add repository
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.1'
        classpath 'com.jakewharton:butterknife-gradle-plugin:9.0.0-rc1'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

ButterKnife最新的版本是10.2.0,添加这个版本需要兼容android.x,我的项目暂时没有兼容Android.x所以我添加的是9.0.0。ButterKnife的版本不能低于8.4.0(包含8.4.0),实际上我在我的项目中添加8.5.1和8.8.1都不行。

2.在最底层的library的build.gradle里边添加:

apply plugin: 'com.jakewharton.butterknife'

在dependencies下添加ButterKnife的依赖:

    api rootProject.ext.dependencies["butterKnife0"]
    annotationProcessor rootProject.ext.dependencies["butterKnife1"]

这里我使用了依赖的同一版本管理,其中这里ButterKnife的版本对应的是8.8.1

3.在module的build.gradle的dependencies下添加ButterKnife的依赖:

annotationProcessor rootProject.ext.dependencies["butterKnife1"]

以上的版本管理等同于以下的:

com.jakewharton:butterknife:8.8.1;
com.jakewharton:butterknife-compiler:8.8.1;

同步sync now即可:注意:其中在Library中除了onViewClicked()方法体中的控件id的R不是R2,其他的地方全部是R2来获取控件id,原因是Libraray下的R需要时常量,而之前版本的ButterKnife时没有兼容这点,后来的版本加如了R2来兼容。而在Library以外的地方还是正常给使用!

在Activity中的使用:

public class UserActivity extends AppCompatActivity{

    @BindView(R.id.toolbar_title)
    TextView toolbarTitle;
    @BindView(R.id.backBtn)
    AppCompatImageView backBtn;
    @BindView(R.id.searchUserBtn)
    AppCompatTextView searchUserBtn;
    @BindView(R.id.userList)
    RecyclerView userList;
    @BindView(R.id.fab)
    FloatingActionButton fab;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_user);
         ButterKnife.bind(this);

    }
}

ButterKnife.bind(this);必须在设置布局View之后。鼠标放到R.layout.xxx上,按Alt+Insert键,点击下图红色选项即可。


image.png

弹出下面的弹窗,选择你要进行的操作即可:


image.png
其中ButterKnife.bind(this);可以写在BaseActivity中,子类中就不用再写

在Fragment中的使用

在onCreateView()方法中调用 unbinder = ButterKnife.bind(this, mView);返回一个Unbinder unbinder对象,在onDestroyView()方法中调用unBinder.unbind();方法解绑;其他通Activity中的用法。相关更多Api请查看官方文档!

相关文章

网友评论

    本文标题:Android ButterKnife(Library)在组件化

    本文链接:https://www.haomeiwen.com/subject/lyyrfhtx.html