美文网首页
ButterKnife--View注入框架

ButterKnife--View注入框架

作者: radish520like | 来源:发表于2016-08-14 23:32 被阅读0次

    主页: https://github.com/JakeWharton/butterknife
    主要是用来简化各种初始化控件的操作

    ButterKnife是支持View注入的框架,有了ButterKnife可以省去很多findViewById的步骤,是JakeWharton的力作,而且ButterKnife对性能基本没有损失,因为ButterKnife用到的注解并不是在运行时反射的,而是在编译的时候生成新的class(xUtils的注入是运行时反射,对性能影响很大)

    ButterKnife的简单使用:
    1.在gradle中添加依赖,在app/build.gradle文件中的dependencies节点添加依赖
    compile 'com.jakewharton:butterknife:7.0.1' ,
    在AS中安装Android ButterKnife Zelezny插件

    注意:在布局文件中添加控件的时候,所有需要在Activity/Fragment代码中进行控制的控件都要添加id属性

    2.在Activity中注入(从7.0.0开始应该成为绑定更合适)
    在setContentView();的后面增加一句话
    ButterKnife.inject(this);
    //高版本是
    ButterKnife.bind(this);

    //给指定的View绑定id
    //如果找不到id,会在编译的时候报错
    @InjectView(R.id.btn)
    Button btn;
    //高版本绑定
    @Bind(R.id.tv)
    TextView tv;

    //这里需要注意的是,需要绑定的控件不能是private和static的

    2.1在Fragment中获取View
    代码与上面类似
    View view = inflater.inflate(R.layout.fragment,container,false);
    ButterKnife.inject(this,view);//多加一个root view参数

    //记住在在Fragment中使用时,同时继承onDestroyView,并在其中调用
    ButterKnife.reset(this);方法

    2.2在ViewHolder中使用ButterKnife
    static class ViewHolder{
    @InjectView(R.id.tv_name)
    TextView tvName;
    @InjectView(R.id.tv_age)
    TextView tvAge;

    public ViewHolder(View view){
    ButterKnife.inject(this,view);
    }
    }

    //给ViewHolder类添加一个带参数View的构造方法,用注解标记每个字段,这样就不需要在getView()方法里调用findViewById()方法了,在new ViewHolder(contentView);直接传入contentView即可

    2.3再也不用写setOnClickListener()
    @OnClick(R.id.btn_login)
    void btnLogin(View view){
    Toast.makeText(this,"依赖注入点击事件",Toast.LENGTH_SHORT).show();
    }

    //需要注意的是:方法依然不能是private和static,并且可以有一个参数view,也可以不写,所有listener的参数都是optional的,可以写也可以不写,需要注意
    的是,依然必须要调用ButterKnife.inject(this);否则事件绑定不成功

    还有ListView的点击事件@OnItemClick
    ClickBox的@OnCheckedChanged
    可以一次指定多个id为多个View绑定一个事件处理方法
    @OnClick({R.id.btn1,R.id.btn2,R.id.btn3})
    view btn(){
    Toast.makeText(this, "点我点我点我", Toast.LENGTH_SHORT).show();
    }

    注意,以上操作大部分都可以通过Android ButterKnife Zelezny插件一键生成,只要是在布局文件中添加了id属性的控件,都可以一键生成,在Activity/Fragment代码中,选中布局文件的引用,鼠标右键--Generate--Generate ButterKnife Injections,在弹出的对话框中进行选择需要生成的控件

    相关文章

      网友评论

          本文标题:ButterKnife--View注入框架

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