1、前言
在开发过程中,我们总是会写大量的findViewById和点击事件,像初始view、设置view监听这样简单而重复的操作让人觉得特别麻烦,当然不会偷懒的程序员不是好程序员,自然也出现了相应的解决方案--依赖注入
ButterKnife支持APT(Annotation Processing Tool):编译时注解.
从HttpUrlConntection,Volley 到Okhttp 再到retrofit 注解框架与APT的结合已经越来越成为主流。
编译时注解的框架
GreenDao3
EventBus3
ParcelableGenerator等等。
2、ButterKnife优势
1.强大的View绑定和Click事件处理功能,简化代码,提升开发效率
2.方便的处理Adapter里的ViewHolder绑定问题
3.运行时不会影响APP效率,使用配置方便
4.代码清晰,可读性强
3、AndroidStudio引用 ButterKnife
首先需要在对应的project build.gradle文件中添加apt插件的支持
dependencies {
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
其次需要添加 module build.gradle文件中添加apt 的引用及bufferknife库支持
dependencies { compile 'com.jakewharton:butterknife:8.4.0' apt 'com.jakewharton:butterknife-compiler:8.4.0' }最后点击 Sync Now会自动从jcenter仓库去下载对应的库文件
4、实战
新建 BufferKnifeDemo工程
在xml文件中添加控件id 为 imageView
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
public class GlideActivity extends AppCompatActivity {
@BindView(R.id.imageView) ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.glide_activity);
ButterKnife.bind(this);
loadPhoto();
}
private void loadPhoto(){
String gifStr="http://i.kinja-img.com/gawker-media/image/upload/s--B7tUiM5l--/gf2r69yorbdesguga10i.gif";
String jpgStr="https://inthecheesefactory.com/uploads/source/glidepicasso/cover.jpg";
Glide.with(this)
.load(gifStr)
.asGif()
.placeholder(R.drawable.b)
.error(R.drawable.c)
// .fitCenter()
.into(imageView);
}
}
随着开源框架的普及,我们要跟上时代与时俱进哦!
附上gitHub地址 butterknife