Butterknife 快速集成与使用步骤
注解中相对简单易懂的很不错的开源框架
1. 强大的View绑定和Click事件处理功能,简化代码,提升开发效率
2. 方便的处理Adaper里的ViewHolder绑定问题
3. 运行时不会影响app效率,使用配置方便
4. 代码清晰,可读性强
ButterKnife大大简化了程序员编写代码的速度,.并且在7.0版本以后引入了注解处理器,取代了之前利用反射原理进行findViewById影响APP性能的方式,不再影响APP运行效率,下面直接上图.
1、集成库;
在build.gradle里面添加这句:
classpath 'com.jakewharton:butterknife-gradle-plugin:8.5.1'
2.在项目的build.gradle 添加 :
compile 'com.jakewharton:butterknife:8.5.1' annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
apply plugin: 'com.jakewharton.butterknife'示意图:
3、run一下:
可能会出现天杀的错误,不怕,赶紧百度一番,
Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/support4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl.class
前辈们给出解答:说是V4包重复了,于是你按照前辈的指引七搞八搞 ,
但是还没解决这个错误的话,
可能是这个原因:没有V4包
添加这一句试试看吧 :)
compile 'com.android.support:support-v4:25.1.1'
3
使用须知:
1.Activity中使用ButterKnife.bind(this);必须在setContentView();之后,父类中bind后,子类不需要再bind
2.Fragment中使用ButterKnife.bind(this, rootView); 根布局View对象,需要在onDestroyView中解绑
3.注解的属性不能用private或static修饰,否则会报错
4.Activity官方例子中没有解绑操作,而Fragment需要解绑
在Fragment中需要解绑
在fragment中使用(需要解绑) private Unbinder unbinder; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_regist_create,container,false); unbinder = ButterKnife.bind(this, view);//需要加多一个加载了布局的View对象 return view; } @Override public void onDestroyView() { super.onDestroyView(); unbinder.unbind();//fragment需要解绑
}
可以再偷懒一点
Android Studio插件:Android Butterknife Zelezny
方便给整个布局文件一键生成注解。
使用方法:
在setContentView(R.layout.activity_main)中对着activity_main右键,
generate ----> Generate ButterKnife Injections,勾选需要生成注解的控件即可