ButterKnife官网:jakewharton.github.io/butterknife/
简介:ButterKnife是视图注入中相对简单易懂的很不错的开源框架
1. 强大的View绑定和Click事件处理功能,简化代码,提升开发效率
2. 方便的处理Adapter里的ViewHolder绑定问题
3. 提高APP运行效率,使用配置方便.
4. 代码清晰,可读性强
https://github.com/JakeWharton/butterknife
在Setting->Plugins中输入butterknife添加插件:Android ButterKnife Aelezny
Module里的build.gradle里面添加:compile 'com.jakewharton:butterknife:7.0.1'
注意:最新的版本,必须是Gradle版本24以上
优势:
1)省略findViewById()
Activity中使用:
过去:mTextView1 = (TextView) findViewById(R.id.butter_text_view_1);
现在:@Bind(R.id.butter_text_view_2)
TextView mTextView2;
提示:在设置好布局之后调用:ButterKnife.inject(this);:
View变量声明的时候不能为private或者static.
Fragment中使用:
View view = inflater.inflate(R.layout.fragment_simple, container, false);
ButterKnife.inject(this, view);//多了这一步
@Bind(R.id.fragment_text_view)
TextView mTextView;
具体使用步骤如下:
1.gradle文件中进行关联,最好关联7.0版本
compile 'com.jakewharton:butterknife:7.0.1'
2.在OnCreate进行初始化,注意不同版本初始化的方法皆不一样,且注解控件的后缀名都不一样,7.0的初始化方法为:
类对象
ButterKnife.bind(this);如果想在Fragment中初始化并使用ButterKnife,则还需要传入一个View:类对象,容器对象
3.使用注解,相当于findViewByIdButterKnife.bind(this,view);
@Bind(R.id.tv_ButterKnife) TextView tvBufferKnife; = TextView tvBufferKnife = (TextView)findViewById(R.id.tv_BufferKnife);4.使用注解,为控件设置点击事件
//让TextView具备了点击事件,同时参数里就可以找到这个TextView(只能在这个方法里使用其对象)
//相当于及做了onClick点击事件,又做了findViewById.
@OnClick(R.id.tv_BufferKnife)
也可以通过@OnClick({R.id.cb_butterknife,R.id.tv_activity_main_goto_next_page})的方式同时设置多个控件的点击事件,用switch查找id并写入具体代码:
public void onClick(View view){ switch (view.getId()){ case R.id.tv_activity_main_goto_next_page: //class字节码 Intent intent = new Intent(MainActivity.this, Main2Activity.class); startActivity(intent); break; case R.id.cb_butterknife: Toast.makeText(MainActivity.this, "check_box", Toast.LENGTH_SHORT).show(); break; default: break; } }