欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

andorid jar/库源码解析之Butterknife

程序员文章站 2022-04-15 23:27:40
目录:andorid jar/库源码解析 Butterknife: 作用: 用于初始化界面控件,控件方法,通过注释进行绑定控件和控件方法 栗子: public class MainActivity extends AppCompatActivity { @BindView(R.id.btnTest1 ......

目录:andorid jar/库源码解析 

butterknife:

  作用:

    用于初始化界面控件,控件方法,通过注释进行绑定控件和控件方法

  栗子:

public class mainactivity extends appcompatactivity {
    @bindview(r.id.btntest1)
    button btntest1;

    @bindview(r.id.btntest2)
    button btntest2;

    @bindview(r.id.lblmsg)
    textview lblmsg;

    @bindview(r.id.txtmsg)
    edittext txtmsg;

    @override
    protected void oncreate(bundle savedinstancestate) {
        super.oncreate(savedinstancestate);
        setcontentview(r.layout.activity_main);

        butterknife.bind(this);
    }

    @onclick(r.id.btntest1) void test1(){
        toast.maketext(this, txtmsg.gettext().tostring(), toast.length_long).show();
    }

    @onclick(r.id.btntest2) void test2(){
        string msg = "test2222222222";
        lblmsg.settext(msg);
        toast.maketext(this, msg, toast.length_long).show();
    }
}

  源码解读:

butterknife.bind(this);

  绑定界面元素和方法的关联。

  1、传入当前对象,得到当前对象的类名a,查找a+‘_viewbinding’组成的类名的,类的构造函数,参数是a类对象和view

  2、得到类,调用他的构造函数,函数中通过findviewbyid,来进行绑定(由于a+_viewbinding是生成的类,该类已知了所有需要绑定的控件,所以顺序处理了。)

  3、对于事件方法,则创建了已定义的兼容性的子类,进行调用处理。

  4、到这里。所有操作就关联上了。

  自动生成了,_viewbinding类,用于关联

  andorid jar/库源码解析之Butterknife

  源码:https://github.com/jakewharton/butterknife

  引入:

    // androidx
    implementation 'com.jakewharton:butterknife:10.0.0'
    annotationprocessor 'com.jakewharton:butterknife-compiler:10.0.0'


    // android.support.v4.content
    // implementation 'com.jakewharton:butterknife:8.8.1'
    // annotationprocessor 'com.jakewharton:butterknife-compiler:8.8.1'